Esempio n. 1
0
        public static void VerifyConstValue(LanguageType lang, NativeSymbolBag bag, string name, string val, string type)
        {
            Assert.True(bag.TryResolveSymbolsAndValues());

            BasicConverter con = new BasicConverter(lang, StorageFactory.CreateStandard());
            CodeTypeDeclarationCollection col = con.ConvertToCodeDom(bag, new ErrorProvider());

            VerifyConstValue(col, lang, name, val, type);
        }
Esempio n. 2
0
        public static void VerifyEnumValue(LanguageType lang, NativeSymbolBag bag, NativeEnum e, string name, string val)
        {
            Assert.True(bag.TryResolveSymbolsAndValues());

            BasicConverter con = new BasicConverter(lang, StorageFactory.CreateStandard());
            CodeTypeDeclarationCollection col = con.ConvertToCodeDom(bag, new ErrorProvider());

            // Look for the constants class
            CodeTypeDeclaration ctd = null;

            foreach (CodeTypeDeclaration cur in col)
            {
                if (0 == string.CompareOrdinal(e.Name, cur.Name))
                {
                    ctd = cur;
                    break;
                }
            }
            Assert.NotNull(ctd);

            // Find the value
            CodeTypeMember cMem = null;

            foreach (CodeTypeMember mem in ctd.Members)
            {
                if (0 == string.CompareOrdinal(name, mem.Name))
                {
                    cMem = mem;
                    break;
                }
            }
            Assert.NotNull(cMem);

            // Make sure it's a constant value
            CodeMemberField field = cMem as CodeMemberField;

            Assert.NotNull(field);

            // Get the provider
            var provider = default(CodeDomProvider);

            switch (lang)
            {
            case LanguageType.CSharp:
                provider = new Microsoft.CSharp.CSharpCodeProvider();
                break;

            case LanguageType.VisualBasic:
                provider = new Microsoft.VisualBasic.VBCodeProvider();
                break;

            default:
                provider = null;
                break;
            }

            using (var writer = new StringWriter())
            {
                provider.GenerateCodeFromExpression(field.InitExpression, writer, new CodeGeneratorOptions());
                Assert.Equal(val, writer.ToString());
            }
        }