Пример #1
0
        public void TestBecomeRoot6() /*throws Exception*/
        {
            // emulates construction of ^(5 6)
            CommonTree root_0 = (CommonTree)adaptor.Nil();
            CommonTree root_1 = (CommonTree)adaptor.Nil();

            root_1 = (CommonTree)adaptor.BecomeRoot(new CommonTree(new CommonToken(5)), root_1);

            adaptor.AddChild(root_1, new CommonTree(new CommonToken(6)));

            adaptor.AddChild(root_0, root_1);

            root_0.SanityCheckParentAndChildIndexes();
        }
Пример #2
0
        public void TestBecomeRoot2() /*throws Exception*/
        {
            // 5 becomes new root of ^(101 102 103)
            CommonTree newRoot = new CommonTree(new CommonToken(5));

            CommonTree oldRoot = new CommonTree(new CommonToken(101));

            oldRoot.AddChild(new CommonTree(new CommonToken(102)));
            oldRoot.AddChild(new CommonTree(new CommonToken(103)));

            ITreeAdaptor adaptor = new CommonTreeAdaptor();

            adaptor.BecomeRoot(newRoot, oldRoot);
            newRoot.SanityCheckParentAndChildIndexes();
        }
Пример #3
0
        public void TestReplaceAllWithOne() /*throws Exception*/
        {
            CommonTree t = new CommonTree(new CommonToken(99, "a"));

            t.AddChild(new CommonTree(new CommonToken(99, "b")));
            t.AddChild(new CommonTree(new CommonToken(99, "c")));
            t.AddChild(new CommonTree(new CommonToken(99, "d")));

            CommonTree newChild = new CommonTree(new CommonToken(99, "x"));

            t.ReplaceChildren(0, 2, newChild);
            string expecting = "(a x)";

            Assert.AreEqual(expecting, t.ToStringTree());
            t.SanityCheckParentAndChildIndexes();
        }
Пример #4
0
        public void TestReplaceWithOneChildren() /*throws Exception*/
        {
            // assume token type 99 and use text
            CommonTree t  = new CommonTree(new CommonToken(99, "a"));
            CommonTree c0 = new CommonTree(new CommonToken(99, "b"));

            t.AddChild(c0);

            CommonTree newChild = new CommonTree(new CommonToken(99, "c"));

            t.ReplaceChildren(0, 0, newChild);
            string expecting = "(a c)";

            Assert.AreEqual(expecting, t.ToStringTree());
            t.SanityCheckParentAndChildIndexes();
        }
Пример #5
0
        public void TestReplaceTwoWithOneAtRight() /*throws Exception*/
        {
            CommonTree t = new CommonTree(new CommonToken(99, "a"));

            t.AddChild(new CommonTree(new CommonToken(99, "b")));
            t.AddChild(new CommonTree(new CommonToken(99, "c")));
            t.AddChild(new CommonTree(new CommonToken(99, "d")));

            CommonTree newChild = new CommonTree(new CommonToken(99, "x"));

            t.ReplaceChildren(1, 2, newChild);
            string expecting = "(a b x)";

            assertEquals(expecting, t.ToStringTree());
            t.SanityCheckParentAndChildIndexes();
        }
Пример #6
0
        public void TestReplaceAtLeft() /*throws Exception*/
        {
            CommonTree t = new CommonTree(new CommonToken(99, "a"));

            t.AddChild(new CommonTree(new CommonToken(99, "b")));       // index 0
            t.AddChild(new CommonTree(new CommonToken(99, "c")));
            t.AddChild(new CommonTree(new CommonToken(99, "d")));

            CommonTree newChild = new CommonTree(new CommonToken(99, "x"));

            t.ReplaceChildren(0, 0, newChild);
            string expecting = "(a x c d)";

            assertEquals(expecting, t.ToStringTree());
            t.SanityCheckParentAndChildIndexes();
        }
Пример #7
0
        public void TestReplaceOneWithTwoInMiddle() /*throws Exception*/
        {
            CommonTree t = new CommonTree(new CommonToken(99, "a"));

            t.AddChild(new CommonTree(new CommonToken(99, "b")));
            t.AddChild(new CommonTree(new CommonToken(99, "c")));
            t.AddChild(new CommonTree(new CommonToken(99, "d")));

            CommonTree newChildren = (CommonTree)adaptor.Nil();

            newChildren.AddChild(new CommonTree(new CommonToken(99, "x")));
            newChildren.AddChild(new CommonTree(new CommonToken(99, "y")));

            t.ReplaceChildren(1, 1, newChildren);
            string expecting = "(a b x y d)";

            Assert.AreEqual(expecting, t.ToStringTree());
            t.SanityCheckParentAndChildIndexes();
        }
Пример #8
0
        public void TestReplaceAllWithTwo() /*throws Exception*/
        {
            CommonTree t = new CommonTree(new CommonToken(99, "a"));

            t.AddChild(new CommonTree(new CommonToken(99, "b")));
            t.AddChild(new CommonTree(new CommonToken(99, "c")));
            t.AddChild(new CommonTree(new CommonToken(99, "d")));

            CommonTree newChildren = (CommonTree)adaptor.Nil();

            newChildren.AddChild(new CommonTree(new CommonToken(99, "x")));
            newChildren.AddChild(new CommonTree(new CommonToken(99, "y")));

            t.ReplaceChildren(0, 2, newChildren);
            string expecting = "(a x y)";

            assertEquals(expecting, t.ToStringTree());
            t.SanityCheckParentAndChildIndexes();
        }
Пример #9
0
        public void TestDupTree() /*throws Exception*/
        {
            // ^(101 ^(102 103 ^(106 107) ) 104 105)
            CommonTree r0 = new CommonTree(new CommonToken(101));
            CommonTree r1 = new CommonTree(new CommonToken(102));

            r0.AddChild(r1);
            r1.AddChild(new CommonTree(new CommonToken(103)));
            ITree r2 = new CommonTree(new CommonToken(106));

            r2.AddChild(new CommonTree(new CommonToken(107)));
            r1.AddChild(r2);
            r0.AddChild(new CommonTree(new CommonToken(104)));
            r0.AddChild(new CommonTree(new CommonToken(105)));

            CommonTree dup = (CommonTree)(new CommonTreeAdaptor()).DupTree(r0);

            Assert.IsNull(dup.Parent);
            Assert.AreEqual(-1, dup.ChildIndex);
            dup.SanityCheckParentAndChildIndexes();
        }