public void TestObjectWithPrimitiveList()
        {
            var nodeContainer = new NodeContainer();
            var instance      = new PrimitiveListClass {
                Member1 = 3, Member2 = new List <string> {
                    "aaa", "bbb", "ccc"
                }
            };
            var rootNode = nodeContainer.GetOrCreateNode(instance);
            var visitor  = new TestVisitor();

            visitor.Visit(rootNode);
            var expectedNodes = new IGraphNode[]
            {
                rootNode,
                rootNode[nameof(PrimitiveListClass.Member1)],
                rootNode[nameof(PrimitiveListClass.Member2)],
                rootNode[nameof(PrimitiveListClass.Member2)].Target,
            };
            var expectedPaths = new GraphNodePath[4];

            expectedPaths[0] = new GraphNodePath(rootNode);
            expectedPaths[1] = expectedPaths[0].Clone();
            expectedPaths[1].PushMember(nameof(PrimitiveListClass.Member1));
            expectedPaths[2] = expectedPaths[0].Clone();
            expectedPaths[2].PushMember(nameof(PrimitiveListClass.Member2));
            expectedPaths[3] = expectedPaths[2].Clone();
            expectedPaths[3].PushTarget();
            VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
        }
        public void TestSimpleObject()
        {
            var nodeContainer = new NodeContainer();
            var instance      = new SimpleClass {
                Member1 = 3, Member2 = new SimpleClass()
            };
            var rootNode = nodeContainer.GetOrCreateNode(instance);
            var visitor  = new TestVisitor();

            visitor.Visit(rootNode);
            var expectedNodes = new IGraphNode[]
            {
                rootNode,
                rootNode[nameof(SimpleClass.Member1)],
                rootNode[nameof(SimpleClass.Member2)],
                rootNode[nameof(SimpleClass.Member2)].Target,
                rootNode[nameof(SimpleClass.Member2)].Target[nameof(SimpleClass.Member1)],
                rootNode[nameof(SimpleClass.Member2)].Target[nameof(SimpleClass.Member2)],
            };
            var expectedPaths = new GraphNodePath[6];

            expectedPaths[0] = new GraphNodePath(rootNode);
            expectedPaths[1] = new GraphNodePath(rootNode);
            expectedPaths[1].PushMember(nameof(SimpleClass.Member1));
            expectedPaths[2] = new GraphNodePath(rootNode);
            expectedPaths[2].PushMember(nameof(SimpleClass.Member2));
            expectedPaths[3] = expectedPaths[2].Clone();
            expectedPaths[3].PushTarget();
            expectedPaths[4] = expectedPaths[3].Clone();
            expectedPaths[4].PushMember(nameof(SimpleClass.Member1));
            expectedPaths[5] = expectedPaths[3].Clone();
            expectedPaths[5].PushMember(nameof(SimpleClass.Member2));
            VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
        }
        public void PropertyVisitor_WhenChainingAdapters_RespectVisitation(int count, params VisitStatus[] statuses)
        {
            var container = new Container();

            var expectedHasDefault = true;

            foreach (var status in statuses)
            {
                if (status == VisitStatus.Stop)
                {
                    expectedHasDefault = false;
                    break;
                }

                if (status == VisitStatus.Handled)
                {
                    break;
                }
            }

            var visitor = new TestVisitor(expectedHasDefault ? "0" : "");

            foreach (var status in statuses)
            {
                visitor.AddAdapter(new ChainedAdapter(visitor, status));
            }

            PropertyContainer.Accept(visitor, ref container);
            Assert.That(visitor.ToString(), Is.EqualTo(new string('0', count)));
        }
        public void CanReturnEmptyListIfNoOperandsFound()
        {
            //-- Arrange

            DeriveClassFrom <object>()
            .DefaultConstructor()
            .ImplementInterface <AncestorRepository.IFewMethods>()
            .Method(intf => intf.One).Implement(w => Static.Void(Console.WriteLine))
            .AllMethods().Throw <NotImplementedException>()
            .Flush();

            var method = base.Class.GetAllMembers().OfType <MethodMember>().Single(m => m.Name == "One");

            method.Write();

            //-- Act

            var visitor = new TestVisitor();

            method.AcceptVisitor(visitor);
            var visitedOperands = visitor.GetVisitedOperands();

            //-- Assert

            Assert.That(visitedOperands, Is.Empty);
        }
        public void TestObjectWithStruct()
        {
            var nodeContainer = new NodeContainer();
            var instance      = new StructClass {
                Member1 = 3, Member2 = new Struct()
            };
            var rootNode = nodeContainer.GetOrCreateNode(instance);
            var visitor  = new TestVisitor();

            visitor.Visit(rootNode);
            var expectedNodes = new[]
            {
                rootNode,
                rootNode.TryGetChild(nameof(StructClass.Member1)),
                rootNode.TryGetChild(nameof(StructClass.Member2)),
                rootNode.TryGetChild(nameof(StructClass.Member2)).TryGetChild(nameof(Struct.Member1)),
                rootNode.TryGetChild(nameof(StructClass.Member2)).TryGetChild(nameof(Struct.Member2)),
            };
            var expectedPaths = new[]
            {
                new GraphNodePath(rootNode),
                new GraphNodePath(rootNode).PushMember(nameof(StructClass.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(StructClass.Member2)),
                new GraphNodePath(rootNode).PushMember(nameof(StructClass.Member2)).PushMember(nameof(Struct.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(StructClass.Member2)).PushMember(nameof(Struct.Member2)),
            };

            VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
        }
Exemple #6
0
        public void SnQuery_Visitor_Rewrite_CSrv()
        {
            var tree = new LogicalPredicate(
                new []
            {
                new LogicalClause(new LogicalPredicate(
                                      new [] {
                    new LogicalClause(new SimplePredicate("F1", new IndexValue("V1")), Occurence.Should),
                    new LogicalClause(new SimplePredicate("F2", new IndexValue("V2")), Occurence.Should)
                }), Occurence.Must),
                new LogicalClause(new LogicalPredicate(
                                      new [] {
                    new LogicalClause(new SimplePredicate("F3", new IndexValue("V3")), Occurence.Should),
                    new LogicalClause(new RangePredicate("F4", null, new IndexValue(10), true, true), Occurence.Should),
                }), Occurence.Must),
            });

            var visitor   = new TestVisitor();
            var rewritten = visitor.Visit(tree);

            var dumper = new SnQueryToStringVisitor();

            dumper.Visit(rewritten);

            Assert.AreEqual("+(F1:V1 F2:V2222) +(F3:V3 F4:<10)", dumper.Output);
        }
        public void CanVisitThisAndFields()
        {
            //-- Arrange

            Field <int> fieldOne;

            DeriveClassFrom <object>()
            .Field("m_One", out fieldOne)
            .DefaultConstructor()
            .ImplementInterface <AncestorRepository.IFewMethods>()
            .Method <int, string>(intf => intf.Five).Implement((w, n) => {
                fieldOne.Assign(n);
                w.Return(fieldOne.Func <string>(x => x.ToString));
            })
            .AllMethods().Throw <NotImplementedException>()
            .Flush();

            var method = base.Class.GetAllMembers().OfType <MethodMember>().Single(m => m.Name == "Five");

            method.Write();

            //-- Act

            var visitor = new TestVisitor();

            method.AcceptVisitor(visitor);

            var visitedOperandStrings = visitor.GetVisitedOperands().Select(op => op.ToString()).ToArray();

            //-- Assert

            CollectionAssert.Contains(visitedOperandStrings, "this");
            CollectionAssert.Contains(visitedOperandStrings, "this.Field[m_One]");
        }
 public void TestSimpleObject()
 {
     var nodeContainer = new NodeContainer();
     var instance = new SimpleClass { Member1 = 3, Member2 = new SimpleClass() };
     var rootNode = nodeContainer.GetOrCreateNode(instance);
     var visitor = new TestVisitor();
     visitor.Visit(rootNode);
     var expectedNodes = new[]
     {
         rootNode,
         rootNode.TryGetChild(nameof(SimpleClass.Member1)),
         rootNode.TryGetChild(nameof(SimpleClass.Member2)),
         rootNode.TryGetChild(nameof(SimpleClass.Member2)).Target,
         rootNode.TryGetChild(nameof(SimpleClass.Member2)).Target.TryGetChild(nameof(SimpleClass.Member1)),
         rootNode.TryGetChild(nameof(SimpleClass.Member2)).Target.TryGetChild(nameof(SimpleClass.Member2)),
     };
     var expectedPaths = new[]
     {
         new GraphNodePath(rootNode),
         new GraphNodePath(rootNode).PushMember(nameof(SimpleClass.Member1)),
         new GraphNodePath(rootNode).PushMember(nameof(SimpleClass.Member2)),
         new GraphNodePath(rootNode).PushMember(nameof(SimpleClass.Member2)).PushTarget(),
         new GraphNodePath(rootNode).PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member1)),
         new GraphNodePath(rootNode).PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member2)),
     };
     VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
 }
        public void CanVisitLocalsAndArguments()
        {
            //-- Arrange

            DeriveClassFrom <object>()
            .DefaultConstructor()
            .ImplementInterface <AncestorRepository.IFewMethods>()
            .Method <int, string>(intf => intf.Five).Implement((w, n) => {
                var s = w.Local <string>();
                s.Assign(n.Func <string>(x => x.ToString));
                w.Return(s);
            })
            .AllMethods().Throw <NotImplementedException>()
            .Flush();

            var method = base.Class.GetAllMembers().OfType <MethodMember>().Single(m => m.Name == "Five");

            method.Write();

            //-- Act

            var visitor = new TestVisitor();

            method.AcceptVisitor(visitor);

            var visitedOperandStrings = visitor.GetVisitedOperands().Select(op => op.ToString()).ToArray();

            //-- Assert

            CollectionAssert.Contains(visitedOperandStrings, "Loc0");
            CollectionAssert.Contains(visitedOperandStrings, "Arg1[n]");
        }
Exemple #10
0
        public void TestObjectWithPrimitiveList()
        {
            var nodeContainer = new NodeContainer();
            var instance      = new PrimitiveListClass {
                Member1 = 3, Member2 = new List <string> {
                    "aaa", "bbb", "ccc"
                }
            };
            var rootNode = nodeContainer.GetOrCreateNode(instance);
            var visitor  = new TestVisitor();

            visitor.Visit(rootNode);
            var expectedNodes = new IContentNode[]
            {
                rootNode,
                rootNode[nameof(PrimitiveListClass.Member1)],
                rootNode[nameof(PrimitiveListClass.Member2)],
            };
            var expectedPaths = new[]
            {
                new GraphNodePath(rootNode),
                new GraphNodePath(rootNode).PushMember(nameof(PrimitiveListClass.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(PrimitiveListClass.Member2)),
            };

            VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
        }
Exemple #11
0
        public void TestSimpleObject()
        {
            var nodeContainer = new NodeContainer();
            var instance      = new SimpleClass {
                Member1 = 3, Member2 = new SimpleClass()
            };
            var rootNode = nodeContainer.GetOrCreateNode(instance);
            var visitor  = new TestVisitor();

            visitor.Visit(rootNode);
            var expectedNodes = new IContentNode[]
            {
                rootNode,
                rootNode[nameof(SimpleClass.Member1)],
                rootNode[nameof(SimpleClass.Member2)],
                rootNode[nameof(SimpleClass.Member2)].Target,
                rootNode[nameof(SimpleClass.Member2)].Target[nameof(SimpleClass.Member1)],
                rootNode[nameof(SimpleClass.Member2)].Target[nameof(SimpleClass.Member2)],
            };
            var expectedPaths = new[]
            {
                new GraphNodePath(rootNode),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass.Member2)),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass.Member2)).PushTarget(),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member2)),
            };

            VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
        }
Exemple #12
0
        private TestVisitor RegisterTestLogVisitor(Type stateTypeToCheck)
        {
            var visitor = new TestVisitor(stateTypeToCheck);

            new LogCollector(brain, visitor);
            return(visitor);
        }
Exemple #13
0
        public void TestCircularReference()
        {
            var nodeContainer = new NodeContainer();
            var obj1          = new SimpleClass {
                Member1 = 3
            };
            var obj2 = new SimpleClass {
                Member1 = 3
            };

            obj1.Member2 = obj2;
            obj2.Member2 = obj1;
            var rootNode1 = nodeContainer.GetOrCreateNode(obj1);
            var rootNode2 = nodeContainer.GetOrCreateNode(obj2);
            var visitor   = new TestVisitor();

            visitor.Visit(rootNode1);
            var expectedNodes = new IContentNode[]
            {
                rootNode1,
                rootNode1[nameof(SimpleClass.Member1)],
                rootNode1[nameof(SimpleClass.Member2)],
                rootNode2,
                rootNode2[nameof(SimpleClass.Member1)],
                rootNode2[nameof(SimpleClass.Member2)],
            };
            var expectedPaths = new[]
            {
                new GraphNodePath(rootNode1),
                new GraphNodePath(rootNode1).PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode1).PushMember(nameof(SimpleClass.Member2)),
                new GraphNodePath(rootNode1).PushMember(nameof(SimpleClass.Member2)).PushTarget(),
                new GraphNodePath(rootNode1).PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode1).PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member2)),
            };

            VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);

            visitor.Visit(rootNode2);
            expectedNodes = new IContentNode[]
            {
                rootNode2,
                rootNode2[nameof(SimpleClass.Member1)],
                rootNode2[nameof(SimpleClass.Member2)],
                rootNode1,
                rootNode1[nameof(SimpleClass.Member1)],
                rootNode1[nameof(SimpleClass.Member2)],
            };
            expectedPaths = new[]
            {
                new GraphNodePath(rootNode2),
                new GraphNodePath(rootNode2).PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode2).PushMember(nameof(SimpleClass.Member2)),
                new GraphNodePath(rootNode2).PushMember(nameof(SimpleClass.Member2)).PushTarget(),
                new GraphNodePath(rootNode2).PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode2).PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member2)),
            };
            VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
        }
Exemple #14
0
        public void VisitTest()
        {
            TestVisitor visitor = new TestVisitor();

            _testCommand.Visit(visitor);

            Assert.IsInstanceOf(typeof(EmptyCommand), visitor.VisitedCommand);
        }
        public void PropertyVisitor_WithoutAdapters_CallsDefaultBehaviour()
        {
            var container = new Container();
            var visitor   = new TestVisitor("No adapters were reached");

            PropertyContainer.Accept(visitor, ref container);
            Assert.That(visitor.ToString(), Is.EqualTo("No adapters were reached"));
        }
        public void TestMultipleReferences()
        {
            var nodeContainer = new NodeContainer();
            var commonObj     = new SimpleClass();
            var instance      = new SimpleClass2 {
                Member1 = 3, Member2 = new SimpleClass {
                    Member1 = 4, Member2 = commonObj
                }, Member3 = new SimpleClass {
                    Member1 = 5, Member2 = commonObj
                }
            };
            var rootNode = nodeContainer.GetOrCreateNode(instance);
            var visitor  = new TestVisitor();

            visitor.Visit(rootNode);
            var expectedNodes = new[]
            {
                rootNode,
                rootNode.TryGetChild(nameof(SimpleClass2.Member1)),
                rootNode.TryGetChild(nameof(SimpleClass2.Member2)),
                rootNode.TryGetChild(nameof(SimpleClass2.Member2)).Target,
                rootNode.TryGetChild(nameof(SimpleClass2.Member2)).Target.TryGetChild(nameof(SimpleClass.Member1)),
                rootNode.TryGetChild(nameof(SimpleClass2.Member2)).Target.TryGetChild(nameof(SimpleClass.Member2)),
                rootNode.TryGetChild(nameof(SimpleClass2.Member2)).Target.TryGetChild(nameof(SimpleClass.Member2)).Target,
                rootNode.TryGetChild(nameof(SimpleClass2.Member2)).Target.TryGetChild(nameof(SimpleClass.Member2)).Target.TryGetChild(nameof(SimpleClass.Member1)),
                rootNode.TryGetChild(nameof(SimpleClass2.Member2)).Target.TryGetChild(nameof(SimpleClass.Member2)).Target.TryGetChild(nameof(SimpleClass.Member2)),
                rootNode.TryGetChild(nameof(SimpleClass2.Member3)),
                rootNode.TryGetChild(nameof(SimpleClass2.Member3)).Target,
                rootNode.TryGetChild(nameof(SimpleClass2.Member3)).Target.TryGetChild(nameof(SimpleClass.Member1)),
                rootNode.TryGetChild(nameof(SimpleClass2.Member3)).Target.TryGetChild(nameof(SimpleClass.Member2)),
                rootNode.TryGetChild(nameof(SimpleClass2.Member3)).Target.TryGetChild(nameof(SimpleClass.Member2)).Target,
                rootNode.TryGetChild(nameof(SimpleClass2.Member3)).Target.TryGetChild(nameof(SimpleClass.Member2)).Target.TryGetChild(nameof(SimpleClass.Member1)),
                rootNode.TryGetChild(nameof(SimpleClass2.Member3)).Target.TryGetChild(nameof(SimpleClass.Member2)).Target.TryGetChild(nameof(SimpleClass.Member2)),
            };
            var expectedPaths = new[]
            {
                new GraphNodePath(rootNode),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member2)),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member2)).PushTarget(),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member2)),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member2)).PushTarget(),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member2)),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member3)),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member3)).PushTarget(),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member3)).PushTarget().PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member3)).PushTarget().PushMember(nameof(SimpleClass.Member2)),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member3)).PushTarget().PushMember(nameof(SimpleClass.Member2)).PushTarget(),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member3)).PushTarget().PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(SimpleClass2.Member3)).PushTarget().PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member2)),
            };

            VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
        }
        public void PropertyVisitor_WithContravariantAdapters_CallsMostTyped()
        {
            var container = new ContainerWithInterface();
            var visitor   = new TestVisitor("");

            visitor.AddAdapter(new ContravariantAdapter(visitor));

            PropertyContainer.Accept(visitor, ref container);
            Assert.That(visitor.ToString(), Is.EqualTo("ABA"));
        }
Exemple #18
0
        public void TestValidateAlgorithm_NoName_NoThrow()
        {
            TestVisitor     v       = new TestVisitor();
            JobXmlValidator visitor = new JobXmlValidator(v);

            XNode xml = new XElement("algorithm");

            visitor.VisitAlgorithm(xml);
            Assert.IsFalse(v.VisitedAlgorithm);
        }
        public void VisitorTest()
        {
            var jsonGrammar = new JsonGrammar();
            var result = jsonGrammar.Parser.Parse(json).Value;
            var testVisitor = new TestVisitor();

            testVisitor.Visit(result);
            foreach (var property in testVisitor.GetType().GetFields().Where(f => f.FieldType == typeof(bool)))
                Assert.IsTrue((bool)property.GetValue(testVisitor));
        }
Exemple #20
0
        public void TestConstructor_ValidVisitor()
        {
            TestVisitor      v    = new TestVisitor();
            XmlValidatorArgs args = new XmlValidatorArgs(v);

            Assert.AreEqual(v, args.Visitor);
            Assert.IsFalse(args.ThrowOnError);
            Assert.IsNull(args.InputValidator);
            Assert.IsNull(args.AlgorithmValidator);
        }
Exemple #21
0
        public void ExecutorVisitorVisit_FuncCall_CreateFuncCallAST(string text)
        {
            var lexer       = new Lexer(new StringSource(text));
            var parser      = new Parser(lexer);
            var program     = parser.Parse();
            var testVisitor = new TestVisitor();

            testVisitor.Visit(program);
            Assert.AreEqual(text, writer.ToString());
        }
Exemple #22
0
        public void Instantiation()
        {
            var visitor = new TestVisitor();

            new LogCollector(brain, visitor);
            env.Tick();
            // Direction change will fire a log event which is captured by LogCollector
            //  and forwarded to TestVisitor.
            Assert.True(visitor.Visited);
        }
Exemple #23
0
        public void ExecutorVisitorVisit_IfStatement_CreateIfStatementAST(string text, string expected)
        {
            var lexer       = new Lexer(new StringSource(text));
            var parser      = new Parser(lexer);
            var program     = parser.Parse();
            var testVisitor = new TestVisitor();

            testVisitor.Visit(program);
            Assert.AreEqual(expected, writer.ToString());
        }
        public void PropertyVisitor_WithMixedAdapters_CanIterate()
        {
            var container = new MixedContainer();
            var visitor   = new TestVisitor("");

            visitor.AddAdapter(new MixedContravariantAdapter(visitor));
            visitor.AddAdapter(new MixedAdapter(visitor));

            PropertyContainer.Accept(visitor, ref container);
            Assert.That(visitor.ToString(), Is.EqualTo("AA"));
        }
Exemple #25
0
        static void Main(string[] args)
        {
            Parser      parser  = new Parser(new Lexer("int test = 10; int anotherTest = 15;", getMatchers()));
            TestVisitor visitor = new TestVisitor();

            foreach (Ast ast in parser.Parse())
            {
                ast.Visit(visitor);
            }
            Console.Read();
        }
            public Expression Apply(Session session, Expression query)
            {
                var visitor = new TestVisitor();
                var result  = visitor.Visit(query);

                if (visitor.ClosureRegistered())
                {
                    session.Extensions.Set(new ClosureMarker());
                }
                return(result);
            }
Exemple #27
0
        public void TestASTVisitor()
        {
            var testVisitor  = new TestVisitor();
            var plusOperator = AstContext.TranslationUnits
                               .SelectMany(u => u.Namespaces.Where(n => n.Name == "Math"))
                               .SelectMany(n => n.Classes.Where(c => c.Name == "Complex"))
                               .SelectMany(c => c.Methods.Where(m => m.OperatorKind == CXXOperatorKind.Plus))
                               .First();

            Assert.IsTrue(plusOperator.Visit(testVisitor));
        }
        public void PropertyVisitor_WithWrappingAdapter_CallsAdapterAndDefault()
        {
            var container = new Container();
            var visitor   = new TestVisitor("Failure is inevitable");

            visitor.AddAdapter(new WrappingAdapter(visitor));

            PropertyContainer.Accept(visitor, ref container);
            Assert.That(visitor.ToString(),
                        Is.EqualTo("This sentence: \"Failure is inevitable\" is simply not true"));
        }
        public void PropertyVisitor_WithExcludeAdapter_StopsVisitationWhenRequired()
        {
            var container = new ExcludeContainer();
            var visitor   = new TestVisitor("X");

            visitor.AddAdapter(new ExcludeAdapter(visitor));

            PropertyContainer.Accept(visitor, ref container);
            Assert.That(visitor.ToString(), Does.Not.Contain("int"));
            Assert.That(visitor.ToString(), Does.Contain("float"));
        }
        public void PropertyVisitor_WithInertAdapter_ContinuesAsExpected()
        {
            var container = new Container();
            var visitor   = new TestVisitor("");

            visitor.AddAdapter(new MixedContravariantAdapter(visitor));
            visitor.AddAdapter(new MixedAdapter(visitor));
            visitor.AddAdapter(new MultiAdapter(visitor));

            PropertyContainer.Accept(visitor, ref container);
            Assert.That(visitor.ToString(), Is.EqualTo("IVisit<Container, int>"));
        }
Exemple #31
0
        public void VisitorTest()
        {
            var jsonGrammar = new JsonGrammar();
            var result      = jsonGrammar.Parser.Parse(json).Value;
            var testVisitor = new TestVisitor();

            testVisitor.Visit(result);
            foreach (var property in testVisitor.GetType().GetFields().Where(f => f.FieldType == typeof(bool)))
            {
                Assert.IsTrue((bool)property.GetValue(testVisitor));
            }
        }
Exemple #32
0
        public void TestObjectWithStructList()
        {
            var nodeContainer = new NodeContainer();
            // We also test a null item in the list
            var instance = new StructListClass {
                Member1 = 3, Member2 = new List <Struct> {
                    new Struct(), new Struct()
                }
            };
            var rootNode = nodeContainer.GetOrCreateNode(instance);
            var visitor  = new TestVisitor();

            visitor.Visit(rootNode);
            Index        index          = new Index(0);
            IContentNode tempQualifier  = rootNode[nameof(StructListClass.Member2)];
            Index        index1         = new Index(0);
            IContentNode tempQualifier1 = rootNode[nameof(StructListClass.Member2)];
            Index        index2         = new Index(0);
            IContentNode tempQualifier2 = rootNode[nameof(StructListClass.Member2)];
            Index        index3         = new Index(1);
            IContentNode tempQualifier3 = rootNode[nameof(StructListClass.Member2)];
            Index        index4         = new Index(1);
            IContentNode tempQualifier4 = rootNode[nameof(StructListClass.Member2)];
            Index        index5         = new Index(1);
            IContentNode tempQualifier5 = rootNode[nameof(StructListClass.Member2)];
            var          expectedNodes  = new IContentNode[]
            {
                rootNode,
                rootNode[nameof(StructListClass.Member1)],
                rootNode[nameof(StructListClass.Member2)],
                tempQualifier.IndexedTarget(index),
                tempQualifier1.IndexedTarget(index1)[nameof(StructListClass.Member1)],
                tempQualifier2.IndexedTarget(index2)[nameof(StructListClass.Member2)],
                tempQualifier3.IndexedTarget(index3),
                tempQualifier4.IndexedTarget(index4)[nameof(StructListClass.Member1)],
                tempQualifier5.IndexedTarget(index5)[nameof(StructListClass.Member2)],
            };
            var expectedPaths = new[]
            {
                new GraphNodePath(rootNode),
                new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)),
                new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)),
                new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)).PushMember(nameof(StructListClass.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)).PushMember(nameof(StructListClass.Member2)),
                new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)),
                new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)).PushMember(nameof(StructListClass.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)).PushMember(nameof(StructListClass.Member2)),
            };

            VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
        }
Exemple #33
0
        public void HtmlTree_VisitorTest() {
            string html = "<html><head>" +
                            "<script>alert(\"boo!\")</script>" +
                            "<style>.a { color: red; }</style>" +
                            "</head>" +
                            "<body style=\"text:green\" onload=\"some_script\">" +
                            "</body></html>";

            HtmlTree tree = ParseHtml(html);
            var visitor = new TestVisitor();
            tree.RootNode.Accept(visitor, parameter: null);

            Assert.Equal(6, visitor.Count); // 5 + root node
        }
        public void TestEatDeclarationWithAssignment()
        {
            Token tmpToken;
            ILineContext tmpContext;
            List<Token> tokens = new List<Token>();
            tmpToken = new Token(Global.DataType.VAR);
            tmpToken.value = "var";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.IDENTIFIER);
            tmpToken.value = "a";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.OPERATOR);
            tmpToken.value = "=";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.INT);
            tmpToken.value = "3";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.OPERATOR);
            tmpToken.value = "+";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.INT);
            tmpToken.value = "2";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.ENDSTATEMENT);
            tokens.Add(tmpToken);

            List<ILineContext> context = new List<ILineContext>();
            for (int i = 0; i < 7; i++)
            {
                tmpContext = new LineContext(1, 1);
                context.Add(tmpContext);
            }

            SyntaxAnalyzer syntaxAnalyer = new SyntaxAnalyzer();
            TestVisitor testVisitor = new TestVisitor();
            Base result = syntaxAnalyer.CheckSyntax(tokens, context, Global.InstructionSets.X86_64);
            /*Assert.AreEqual(Global.ASTType.VAR_DECLARATION, result.GetChildren()[0].GetType());
            Assert.AreEqual("a", result.GetChildren()[0].GetName());
            Assert.AreEqual(Global.ASTType.ASSIGNMENT, result.GetChildren()[1].GetType());*/

        }
Exemple #35
0
        public void CanInheritVisitor()
        {
            var log = LogManager.Create("repo");
            var repos = new java.util.ArrayList();
            var mgr = CeylonUtils.makeRepositoryManager(repos, OutRepoLocation, log);

            var tcb = new TypeCheckerBuilder();
            tcb.verbose(true);
            tcb.setRepositoryManager(mgr);
            var srcFile = new java.io.File("hello.ceylon");
            tcb.addSrcDirectory(srcFile);

            var tc = tcb.getTypeChecker();
            tc.process();

            var v = new TestVisitor(log);

            foreach(var unit in  tc.getPhasedUnits().getPhasedUnits().Enumerate<PhasedUnit>())
            {
               unit.getCompilationUnit().visit(v);
            }
        }
 public void TestObjectWithStructList()
 {
     var nodeContainer = new NodeContainer();
     // We also test a null item in the list
     var instance = new StructListClass { Member1 = 3, Member2 = new List<Struct> { new Struct(), new Struct() } };
     var rootNode = nodeContainer.GetOrCreateNode(instance);
     var visitor = new TestVisitor();
     visitor.Visit(rootNode);
     Index index = new Index(0);
     IGraphNode tempQualifier = rootNode.TryGetChild(nameof(StructListClass.Member2));
     Index index1 = new Index(0);
     IGraphNode tempQualifier1 = rootNode.TryGetChild(nameof(StructListClass.Member2));
     Index index2 = new Index(0);
     IGraphNode tempQualifier2 = rootNode.TryGetChild(nameof(StructListClass.Member2));
     Index index3 = new Index(1);
     IGraphNode tempQualifier3 = rootNode.TryGetChild(nameof(StructListClass.Member2));
     Index index4 = new Index(1);
     IGraphNode tempQualifier4 = rootNode.TryGetChild(nameof(StructListClass.Member2));
     Index index5 = new Index(1);
     IGraphNode tempQualifier5 = rootNode.TryGetChild(nameof(StructListClass.Member2));
     var expectedNodes = new[]
     {
         rootNode,
         rootNode.TryGetChild(nameof(StructListClass.Member1)),
         rootNode.TryGetChild(nameof(StructListClass.Member2)),
         tempQualifier.IndexedTarget(index),
         tempQualifier1.IndexedTarget(index1).TryGetChild(nameof(StructListClass.Member1)),
         tempQualifier2.IndexedTarget(index2).TryGetChild(nameof(StructListClass.Member2)),
         tempQualifier3.IndexedTarget(index3),
         tempQualifier4.IndexedTarget(index4).TryGetChild(nameof(StructListClass.Member1)),
         tempQualifier5.IndexedTarget(index5).TryGetChild(nameof(StructListClass.Member2)),
       };
     var expectedPaths = new[]
     {
         new GraphNodePath(rootNode),
         new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member1)),
         new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)),
         new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)),
         new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)).PushMember(nameof(StructListClass.Member1)),
         new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)).PushMember(nameof(StructListClass.Member2)),
         new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)),
         new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)).PushMember(nameof(StructListClass.Member1)),
         new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)).PushMember(nameof(StructListClass.Member2)),
     };
     VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
 }
        public void TestExpressionPlus()
        {
            Token tmpToken;
            ILineContext tmpContext;
            List<Token> tokens = new List<Token>();
            tmpToken = new Token(Global.DataType.VAR);
            tmpToken.value = "var";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.IDENTIFIER);
            tmpToken.value = "a";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.OPERATOR);
            tmpToken.value = "=";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.INT);
            tmpToken.value = "3";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.OPERATOR);
            tmpToken.value = "+";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.INT);
            tmpToken.value = "2";
            tokens.Add(tmpToken);
            tmpToken = new Token(Global.DataType.ENDSTATEMENT);
            tokens.Add(tmpToken);

            List<ILineContext> context = new List<ILineContext>();
            for (int i = 0; i < 7; i++)
            {
                tmpContext = new LineContext(1, 1);
                context.Add(tmpContext);
            }

            SyntaxAnalyzer syntaxAnalyer = new SyntaxAnalyzer();
            TestVisitor testVisitor = new TestVisitor();
            Base result = syntaxAnalyer.CheckSyntax(tokens, context, Global.InstructionSets.X86_64);
            Assert.AreEqual(new VarDeclaration(null).GetType(), result.Children[0].GetType());
            Assert.AreEqual("a", ((VarDeclaration)result.Children[0]).Name.Name);
            Assert.AreEqual(new Assignment(null).GetType(), result.Children[1].GetType());
            Assert.AreEqual("a", ((Assignment) result.Children[1]).LHS.Name);
            Assert.AreEqual(new PlusExp(null, null, null).GetType(), ((Assignment)result.Children[1]).RHS.GetType());
            Assert.AreEqual(new Int64Literal(null, null).GetType(), ((PlusExp)((Assignment)result.Children[1]).RHS).e1.GetType());
            Assert.AreEqual(new Int64Literal(null, null).GetType(), ((PlusExp)((Assignment)result.Children[1]).RHS).e2.GetType());
            Assert.AreEqual("3", ((Int64Literal) ((PlusExp) ((Assignment)result.Children[1]).RHS).e1).Value);
            Assert.AreEqual("2", ((Int64Literal)((PlusExp)((Assignment)result.Children[1]).RHS).e2).Value);
        }
 public void TestObjectWithPrimitiveList()
 {
     var nodeContainer = new NodeContainer();
     var instance = new PrimitiveListClass { Member1 = 3, Member2 = new List<string> { "aaa", "bbb", "ccc" } };
     var rootNode = nodeContainer.GetOrCreateNode(instance);
     var visitor = new TestVisitor();
     visitor.Visit(rootNode);
     var expectedNodes = new[]
     {
         rootNode,
         rootNode.TryGetChild(nameof(PrimitiveListClass.Member1)),
         rootNode.TryGetChild(nameof(PrimitiveListClass.Member2)),
     };
     var expectedPaths = new[]
     {
         new GraphNodePath(rootNode),
         new GraphNodePath(rootNode).PushMember(nameof(PrimitiveListClass.Member1)),
         new GraphNodePath(rootNode).PushMember(nameof(PrimitiveListClass.Member2)),
     };
     VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
 }
 public void SetUp()
 {
     _visitor = new TestVisitor();
     _parser = new SqlCmdParser(_visitor);
 }
 private static void VerifyNodesAndPath(IReadOnlyList<IGraphNode> expectedNodes, IReadOnlyList<GraphNodePath> expectedPaths, TestVisitor visitor)
 {
     Assert.AreEqual(expectedNodes.Count, visitor.Result.Count);
     Assert.AreEqual(expectedPaths.Count, visitor.Result.Count);
     for (var i = 0; i < expectedNodes.Count; i++)
     {
         Assert.AreEqual(expectedNodes[i], visitor.Result[i].Item1);
         Assert.AreEqual(expectedPaths[i], visitor.Result[i].Item2);
     }
 }
Exemple #41
0
        public void VisitTest()
        {
            TestVisitor visitor = new TestVisitor();
            _testCommand.Visit(visitor);

            Assert.IsInstanceOf(typeof(EmptyCommand), visitor.VisitedCommand);
        }
        public void TestCircularReference()
        {
            var nodeContainer = new NodeContainer();
            var obj1 = new SimpleClass { Member1 = 3 };
            var obj2 = new SimpleClass { Member1 = 3 };
            obj1.Member2 = obj2;
            obj2.Member2 = obj1;
            var rootNode1 = nodeContainer.GetOrCreateNode(obj1);
            var rootNode2 = nodeContainer.GetOrCreateNode(obj2);
            var visitor = new TestVisitor();
            visitor.Visit(rootNode1);
            var expectedNodes = new[]
            {
                rootNode1,
                rootNode1.TryGetChild(nameof(SimpleClass.Member1)),
                rootNode1.TryGetChild(nameof(SimpleClass.Member2)),
                rootNode2,
                rootNode2.TryGetChild(nameof(SimpleClass.Member1)),
                rootNode2.TryGetChild(nameof(SimpleClass.Member2)),
            };
            var expectedPaths = new[]
            {
                new GraphNodePath(rootNode1),
                new GraphNodePath(rootNode1).PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode1).PushMember(nameof(SimpleClass.Member2)),
                new GraphNodePath(rootNode1).PushMember(nameof(SimpleClass.Member2)).PushTarget(),
                new GraphNodePath(rootNode1).PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode1).PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member2)),
            };
            VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);

            visitor.Visit(rootNode2);
            expectedNodes = new[]
            {
                rootNode2,
                rootNode2.TryGetChild(nameof(SimpleClass.Member1)),
                rootNode2.TryGetChild(nameof(SimpleClass.Member2)),
                rootNode1,
                rootNode1.TryGetChild(nameof(SimpleClass.Member1)),
                rootNode1.TryGetChild(nameof(SimpleClass.Member2)),
            };
            expectedPaths = new[]
            {
                new GraphNodePath(rootNode2),
                new GraphNodePath(rootNode2).PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode2).PushMember(nameof(SimpleClass.Member2)),
                new GraphNodePath(rootNode2).PushMember(nameof(SimpleClass.Member2)).PushTarget(),
                new GraphNodePath(rootNode2).PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member1)),
                new GraphNodePath(rootNode2).PushMember(nameof(SimpleClass.Member2)).PushTarget().PushMember(nameof(SimpleClass.Member2)),
            };
            VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
        }