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)); } }