コード例 #1
0
        public void TestSetMethodAsInternal()
        {
            var c      = AstContext.Class("TestMethodAsInternal");
            var method = c.Method("beInternal");

            Assert.AreEqual(method.Access, AccessSpecifier.Public);
            passBuilder.AddPass(new CheckMacroPass());
            passBuilder.RunPasses(pass => pass.VisitASTContext(AstContext));
            Assert.AreEqual(method.Access, AccessSpecifier.Internal);
        }
コード例 #2
0
        public void TestFunctionToInstancePass()
        {
            var c = AstContext.Class("Foo");

            Assert.IsNull(c.Method("Start"));

            passBuilder.AddPass(new FunctionToInstanceMethodPass());
            passBuilder.RunPasses(pass => pass.VisitASTContext(AstContext));

            Assert.IsNotNull(c.Method("Start"));
        }
コード例 #3
0
        public void TestExtractInterfacePass()
        {
            var c = AstContext.Class("TestExtractInterfacePass");

            Assert.IsNull(c.GetInterface());

            passBuilder.AddPass(new ExtractInterfacePass());
            passBuilder.RunPasses(pass => pass.VisitASTContext(AstContext));

            Assert.IsNotNull(c.GetInterface());
            Assert.AreEqual("ITestExtractInterfacePass", c.GetInterface().Name);
        }
コード例 #4
0
        public void TestFunctionToStaticPass()
        {
            var c = AstContext.Class("Foo");

            Assert.IsTrue(AstContext.Function("FooStart").IsGenerated);
            Assert.IsNull(c.Method("Start"));

            passBuilder.AddPass(new FunctionToStaticMethodPass());
            passBuilder.RunPasses(pass => pass.VisitASTContext(AstContext));

            Assert.IsFalse(AstContext.Function("FooStart").IsGenerated);
            Assert.IsNotNull(c.Method("Start"));
        }
コード例 #5
0
        public void TestCaseRenamePass()
        {
            var c = AstContext.Class("TestRename");

            var method = c.Method("lowerCaseMethod");
            var field  = c.Field("lowerCaseField");

            passBuilder.RenameDeclsUpperCase(RenameTargets.Any);
            passBuilder.RunPasses(pass => pass.VisitLibrary(AstContext));

            Assert.That(method.Name, Is.EqualTo("LowerCaseMethod"));
            Assert.That(field.Name, Is.EqualTo("LowerCaseField"));
        }
コード例 #6
0
        public void TestCaseRenamePass()
        {
            Type.TypePrinterDelegate += type => type.Visit(new CSharpTypePrinter(Driver)).Type;

            var c = AstContext.Class("TestRename");

            var method = c.Method("lowerCaseMethod");
            var field  = c.Field("lowerCaseField");

            passBuilder.RenameDeclsUpperCase(RenameTargets.Any);
            passBuilder.RunPasses(pass => pass.VisitLibrary(AstContext));

            Assert.That(method.Name, Is.EqualTo("LowerCaseMethod"));
            Assert.That(field.Name, Is.EqualTo("LowerCaseField"));
        }
コード例 #7
0
        public void TestCaseRenamePass()
        {
            Type.TypePrinterDelegate += TypePrinterDelegate;

            var c = AstContext.Class("TestRename");

            passBuilder.AddPass(new FieldToPropertyPass());
            passBuilder.RunPasses(pass => pass.VisitASTContext(AstContext));

            var method   = c.Method("lowerCaseMethod");
            var property = c.Properties.Find(p => p.Name == "lowerCaseField");

            passBuilder.RenameDeclsUpperCase(RenameTargets.Any);
            passBuilder.RunPasses(pass => pass.VisitASTContext(AstContext));

            Assert.That(method.Name, Is.EqualTo("LowerCaseMethod"));
            Assert.That(property.Name, Is.EqualTo("LowerCaseField"));

            Type.TypePrinterDelegate -= TypePrinterDelegate;
        }