public void testList() { ITree root = new CommonTree((IToken)null); ITree t = new CommonTree(new CommonToken(101)); t.AddChild(new CommonTree(new CommonToken(102))); t.GetChild(0).AddChild(new CommonTree(new CommonToken(103))); t.AddChild(new CommonTree(new CommonToken(104))); ITree u = new CommonTree(new CommonToken(105)); root.AddChild(t); root.AddChild(u); BufferedTreeNodeStream stream = new BufferedTreeNodeStream(root); string expected = " 101 102 103 104 105"; string actual = GetStringOfEntireStreamContentsWithNodeTypesOnly(stream); Assert.AreEqual(expected, actual); expected = " 101 2 102 2 103 3 104 3 105"; actual = stream.ToString(); Assert.AreEqual(expected, actual); }
public void testPushPop() { // ^(101 ^(102 103) ^(104 105) ^(106 107) 108 109) // stream has 9 real + 8 nav nodes // Sequence of types: 101 DN 102 DN 103 Up 104 DN 105 Up 106 DN 107 Up 108 109 Up ITree r0 = new CommonTree(new CommonToken(101)); ITree r1 = new CommonTree(new CommonToken(102)); r1.AddChild(new CommonTree(new CommonToken(103))); r0.AddChild(r1); ITree r2 = new CommonTree(new CommonToken(104)); r2.AddChild(new CommonTree(new CommonToken(105))); r0.AddChild(r2); ITree r3 = new CommonTree(new CommonToken(106)); r3.AddChild(new CommonTree(new CommonToken(107))); r0.AddChild(r3); r0.AddChild(new CommonTree(new CommonToken(108))); r0.AddChild(new CommonTree(new CommonToken(109))); BufferedTreeNodeStream stream = new BufferedTreeNodeStream(r0); String expecting = " 101 2 102 2 103 3 104 2 105 3 106 2 107 3 108 109 3"; String found = stream.ToString(); Assert.AreEqual(expecting, found); // Assume we want to hit node 107 and then "call 102" then return int indexOf102 = 2; int indexOf107 = 12; for (int k = 1; k <= indexOf107; k++) { // consume til 107 node stream.Consume(); } // CALL 102 Assert.AreEqual(107, ((ITree)stream.LT(1)).Type); stream.Push(indexOf102); Assert.AreEqual(102, ((ITree)stream.LT(1)).Type); stream.Consume(); // consume 102 Assert.AreEqual(Token.Down, ((ITree)stream.LT(1)).Type); stream.Consume(); // consume DN Assert.AreEqual(103, ((ITree)stream.LT(1)).Type); stream.Consume(); // consume 103 Assert.AreEqual(Token.Up, ((ITree)stream.LT(1)).Type); // RETURN stream.Pop(); Assert.AreEqual(107, ((ITree)stream.LT(1)).Type); }
public void testListWithOneNode() { ITree root = new CommonTree((IToken)null); root.AddChild(new CommonTree(new CommonToken(101))); BufferedTreeNodeStream stream = new BufferedTreeNodeStream(root); string expected = " 101"; string actual = GetStringOfEntireStreamContentsWithNodeTypesOnly(stream); Assert.AreEqual(expected, actual); expected = " 101"; actual = stream.ToString(); Assert.AreEqual(expected, actual); }