Esempio n. 1
0
        public void AllExecutionBasedCodegenTests()
        {
            var testMethods = GetAllTestsFromCategory("Execution Based Codegen Tests");

            var tests        = new List <CodegenTestBase>();
            var compilerArgs = CompilerArguments.Parse(new[] { "ExecuteTest.il" });

            AssemblyRegistry.CreateAndOverrideIfNeeded(compilerArgs.References);
            var assembly = CodegenTestBase.CreateTempAssembly();

            foreach (var method in testMethods)
            {
                var ctor = method.DeclaringType.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null,
                                                               new Type[] { typeof(AssemblyEmitter), typeof(string), typeof(bool) }, null);
                var instance = (CodegenTestBase)ctor.Invoke(new object[] { assembly, method.Name, true });
                method.Invoke(instance, new object[] { });
                instance.methodEmitter.ParseTree(instance.BodyCodeBlock);
                tests.Add(instance);
            }

            EmitEntryPoint(assembly, testMethods);
            Assert.IsTrue(assembly.Save());

            ExecuteTests(assembly.OutputPath, testMethods, tests);
        }
 public AssemblyRegistryTests()
 {
     assembly = CodegenTestBase.CreateTempAssembly();
 }