protected static CompilationTestInfo ParseCs(string code, bool translate, Info info = null) { var project = CreateOneFileProject(code, info?.Ref); var c = new Cs2PyCompiler { CSharpProject = project }; c.TranslationAssemblies.Add(typeof(AssemblySandbox).Assembly); c.ReferencedAssemblies.Add(typeof(Tensorflow.TensorShape).Assembly); c.ReferencedAssemblies.Add(typeof(System.Linq.Enumerable).Assembly); c.ReferencedAssemblies.Add(typeof(System.Data.Linq.Binary).Assembly); var filename = Path.GetTempFileName().Replace(".tmp", ".dll"); var er = c.CompileCSharpProject(c.Sandbox, filename); if (!er.Success && er.Diagnostics.Any()) { throw new Exception(er.Diagnostics[0].GetMessage()); } Assert.True(er.Success); var translationInfo = c.ParseCsSource(); if (!translate) { return(new CompilationTestInfo(c, translationInfo, null)); } var translationState = new TranslationState(translationInfo); var translator = new Translator(translationState); translator.Info.CurrentAssembly = c.CompiledAssembly; translator.Translate(c.Sandbox); var compare = info?.Compare; if (compare != null) { compare = compare.Trim(); if (!compare.StartsWith("'''")) { compare = "'''\r\nGenerated with cs2py\r\n'''\r\n" + compare; } var emiter = new PySourceCodeEmiter(); var writer = new PySourceCodeWriter(); translator.Modules[0].Emit(emiter, writer, new PyEmitStyle()); var pyCode = writer.GetCode(); Assert.Equal(compare.Trim(), pyCode.Trim()); } return(new CompilationTestInfo(c, translationInfo, translator)); }
public CompilationTestInfo(Cs2PyCompiler compiler, TranslationInfo info, Translator translator) { Compiler = compiler; Info = info; Translator = translator; }