Esempio n. 1
0
        public void TestSiblingsBeforeSelf_MissingChild()
        {
            var a = new VariableUse()
            {
                Name = "a"
            };
            var plus = new OperatorUse()
            {
                Text = "+"
            };
            var foo = new VariableUse()
            {
                Name = "foo"
            };
            var times = new OperatorUse()
            {
                Text = "*"
            };
            var b = new VariableUse()
            {
                Name = "b"
            };
            var exp = new Expression();

            exp.AddComponents(new Expression[] { a, plus, foo, times, b });

            var dot = new OperatorUse {
                Text             = ".",
                ParentExpression = exp
            };

            Assert.Throws <InvalidOperationException>(() => dot.GetSiblingsBeforeSelf());
        }
Esempio n. 2
0
 private static void TestEquality(VariableUse expected, VariableUse actual, string propertyName)
 {
     try {
         ExpressionsAreEqual(expected.Index, actual.Index, "Index");
     } catch (DataAssertionException e) {
         e.Add(propertyName);
         throw e;
     }
     TestEquality((NameUse)expected, (NameUse)actual, propertyName);
 }
Esempio n. 3
0
        public void TestSiblingsBeforeSelf_MissingChild() {
            var a = new VariableUse() { Name = "a" };
            var plus = new OperatorUse() { Text = "+" };
            var foo = new VariableUse() { Name = "foo" };
            var times = new OperatorUse() { Text = "*" };
            var b = new VariableUse() { Name = "b" };
            var exp = new Expression();
            exp.AddComponents(new Expression[] { a, plus, foo, times, b });

            var dot = new OperatorUse {
                Text = ".",
                ParentExpression = exp
            };

            Assert.Throws<InvalidOperationException>(() => dot.GetSiblingsBeforeSelf());
        }
Esempio n. 4
0
        public void TestSiblingsBeforeSelf() {
            var a = new VariableUse() { Name = "a" };
            var plus = new OperatorUse() { Text = "+" };
            var foo = new VariableUse() { Name = "foo" };
            var times = new OperatorUse() { Text = "*" };
            var b = new VariableUse() { Name = "b" };
            var exp = new Expression();
            exp.AddComponents(new Expression[] { a, plus, foo, times, b });

            var fooSiblings = foo.GetSiblingsBeforeSelf().ToList();
            Assert.AreEqual(2, fooSiblings.Count());
            Assert.AreSame(a, fooSiblings[0]);
            Assert.AreSame(plus, fooSiblings[1]);

            var aSiblings = a.GetSiblingsBeforeSelf().ToList();
            Assert.AreEqual(0, aSiblings.Count());
        }
Esempio n. 5
0
        public void TestSiblingsAfterSelf() {
            var a = new VariableUse() { Name = "a" };
            var plus = new OperatorUse() { Text = "+" };
            var foo = new VariableUse() { Name = "foo" };
            var times = new OperatorUse() { Text = "*" };
            var b = new VariableUse() { Name = "b" };
            var exp = new Expression();
            exp.AddComponents(new Expression[] { a, plus, foo, times, b });

            var plusSiblings = plus.GetSiblingsAfterSelf().ToList();
            Assert.AreEqual(3, plusSiblings.Count());
            Assert.AreSame(foo, plusSiblings[0]);
            Assert.AreSame(times, plusSiblings[1]);
            Assert.AreSame(b, plusSiblings[2]);

            var bSiblings = b.GetSiblingsAfterSelf().ToList();
            Assert.AreEqual(0, bSiblings.Count());
        }
Esempio n. 6
0
        public void TestSiblingsAfterSelf()
        {
            var a = new VariableUse()
            {
                Name = "a"
            };
            var plus = new OperatorUse()
            {
                Text = "+"
            };
            var foo = new VariableUse()
            {
                Name = "foo"
            };
            var times = new OperatorUse()
            {
                Text = "*"
            };
            var b = new VariableUse()
            {
                Name = "b"
            };
            var exp = new Expression();

            exp.AddComponents(new Expression[] { a, plus, foo, times, b });

            var plusSiblings = plus.GetSiblingsAfterSelf().ToList();

            Assert.AreEqual(3, plusSiblings.Count());
            Assert.AreSame(foo, plusSiblings[0]);
            Assert.AreSame(times, plusSiblings[1]);
            Assert.AreSame(b, plusSiblings[2]);

            var bSiblings = b.GetSiblingsAfterSelf().ToList();

            Assert.AreEqual(0, bSiblings.Count());
        }
Esempio n. 7
0
        public void TestSiblingsBeforeSelf()
        {
            var a = new VariableUse()
            {
                Name = "a"
            };
            var plus = new OperatorUse()
            {
                Text = "+"
            };
            var foo = new VariableUse()
            {
                Name = "foo"
            };
            var times = new OperatorUse()
            {
                Text = "*"
            };
            var b = new VariableUse()
            {
                Name = "b"
            };
            var exp = new Expression();

            exp.AddComponents(new Expression[] { a, plus, foo, times, b });

            var fooSiblings = foo.GetSiblingsBeforeSelf().ToList();

            Assert.AreEqual(2, fooSiblings.Count());
            Assert.AreSame(a, fooSiblings[0]);
            Assert.AreSame(plus, fooSiblings[1]);

            var aSiblings = a.GetSiblingsBeforeSelf().ToList();

            Assert.AreEqual(0, aSiblings.Count());
        }
Esempio n. 8
0
 public static void EmitUnset(this VariableUse /*!*/ node, CodeGenerator codeGenerator)
 {
     node.NodeCompiler <IVariableUseCompiler>().EmitUnset(node, codeGenerator);
 }
Esempio n. 9
0
 public static PhpTypeCode EmitIsset(this VariableUse /*!*/ node, CodeGenerator codeGenerator, bool empty)
 {
     return(node.NodeCompiler <IVariableUseCompiler>().EmitIsset(node, codeGenerator, empty));
 }
Esempio n. 10
0
 public static PhpTypeCode EmitAssign(this VariableUse /*!*/ node, CodeGenerator codeGenerator)
 {
     return(node.NodeCompiler <IVariableUseCompiler>().EmitAssign(node, codeGenerator));
 }
Esempio n. 11
0
 void IVariableUseCompiler.EmitUnset(VariableUse node, CodeGenerator codeGenerator)
 {
     EmitUnset((T)node, codeGenerator);
 }
Esempio n. 12
0
 PhpTypeCode IVariableUseCompiler.EmitIsset(VariableUse node, CodeGenerator codeGenerator, bool empty)
 {
     return(EmitIsset((T)node, codeGenerator, empty));
 }
Esempio n. 13
0
 PhpTypeCode IVariableUseCompiler.EmitAssign(VariableUse node, CodeGenerator codeGenerator)
 {
     return(EmitAssign((T)node, codeGenerator));
 }