示例#1
0
        public static void VerifyExpression(LanguageType lang, string nativeExpr, string managedExpr, string managedType, NativeSymbolBag bag)
        {
            bag = bag ?? new NativeSymbolBag();
            CodeTransform         trans    = new CodeTransform(lang, bag);
            NativeValueExpression nExpr    = new NativeValueExpression(nativeExpr);
            CodeExpression        cExpr    = null;
            CodeTypeReference     codeType = null;
            Exception             ex       = null;

            Assert.True(trans.TryGenerateValueExpression(nExpr, out cExpr, out codeType, out ex));

            var provider = default(System.CodeDom.Compiler.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;
            }

            Assert.NotNull(provider);
            using (var writer = new StringWriter())
            {
                provider.GenerateCodeFromExpression(cExpr, writer, new System.CodeDom.Compiler.CodeGeneratorOptions());
                Assert.Equal(managedExpr, writer.ToString());
            }

            if (managedType != null)
            {
                Assert.Equal(managedType, CodeDomPrinter.Convert(codeType));
            }
        }