1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/* 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver[The "BSD licence"] 3324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverCopyright (c) 2005-2007 Kunle Odutola 4324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverAll rights reserved. 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 6324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverRedistribution and use in source and binary forms, with or without 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvermodification, are permitted provided that the following conditions 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverare met: 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver1. Redistributions of source code MUST RETAIN the above copyright 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver notice, this list of conditions and the following disclaimer. 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver2. Redistributions in binary form MUST REPRODUCE the above copyright 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver notice, this list of conditions and the following disclaimer in 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver the documentation and/or other materials provided with the 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver distribution. 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver3. The name of the author may not be used to endorse or promote products 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver derived from this software without specific prior WRITTEN permission. 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver4. Unless explicitly state otherwise, any contribution intentionally 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver submitted for inclusion in this work to the copyright owner or licensor 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver shall be under the terms and conditions of this license, without any 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver additional terms or conditions. 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 22324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 23324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 24324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 25324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 26324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 27324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 31324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver*/ 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvernamespace Antlr.Runtime.Tests 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver{ 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver using System; 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver using StringBuilder = System.Text.StringBuilder; 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver using IToken = Antlr.Runtime.IToken; 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver using CommonToken = Antlr.Runtime.CommonToken; 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver using ITree = Antlr.Runtime.Tree.ITree; 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver using ITreeAdaptor = Antlr.Runtime.Tree.ITreeAdaptor; 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver using CommonTree = Antlr.Runtime.Tree.CommonTree; 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver using CommonTreeAdaptor = Antlr.Runtime.Tree.CommonTreeAdaptor; 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver using MbUnit.Framework; 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [TestFixture] 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public class ITreeFixture : TestFixtureBase 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver #region CommonTree Tests 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testSingleNode() 56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = new CommonTree(new CommonToken(101)); 58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.IsNull(t.Parent); 59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(-1, t.ChildIndex); 60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void test4Nodes() 64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // ^(101 ^(102 103) 104) 66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree r0 = new CommonTree(new CommonToken(101)); 67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(new CommonTree(new CommonToken(102))); 68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.GetChild(0).AddChild(new CommonTree(new CommonToken(103))); 69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(new CommonTree(new CommonToken(104))); 70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.IsNull(r0.Parent); 72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(-1, r0.ChildIndex); 73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testList() 77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // ^(nil 101 102 103) 79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree r0 = new CommonTree((IToken)null); 80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree c0, c1, c2; 81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(c0 = new CommonTree(new CommonToken(101))); 82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(c1 = new CommonTree(new CommonToken(102))); 83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(c2 = new CommonTree(new CommonToken(103))); 84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.IsNull(r0.Parent); 86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(-1, r0.ChildIndex); 87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(r0, c0.Parent); 88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(0, c0.ChildIndex); 89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(r0, c1.Parent); 90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(1, c1.ChildIndex); 91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(r0, c2.Parent); 92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(2, c2.ChildIndex); 93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testList2() 97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // Add child ^(nil 101 102 103) to root 5 99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // should pull 101 102 103 directly to become 5's child list 100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree root = new CommonTree(new CommonToken(5)); 101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // child tree 103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree r0 = new CommonTree((IToken)null); 104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree c0, c1, c2; 105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(c0 = new CommonTree(new CommonToken(101))); 106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(c1 = new CommonTree(new CommonToken(102))); 107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(c2 = new CommonTree(new CommonToken(103))); 108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver root.AddChild(r0); 110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.IsNull(root.Parent); 112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(-1, root.ChildIndex); 113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // check children of root all point at root 114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(root, c0.Parent); 115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(0, c0.ChildIndex); 116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(root, c0.Parent); 117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(1, c1.ChildIndex); 118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(root, c0.Parent); 119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(2, c2.ChildIndex); 120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testAddListToExistChildren() 124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // Add child ^(nil 101 102 103) to root ^(5 6) 126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // should add 101 102 103 to end of 5's child list 127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree root = new CommonTree(new CommonToken(5)); 128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver root.AddChild(new CommonTree(new CommonToken(6))); 129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // child tree 131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree r0 = new CommonTree((IToken)null); 132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree c0, c1, c2; 133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(c0 = new CommonTree(new CommonToken(101))); 134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(c1 = new CommonTree(new CommonToken(102))); 135324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(c2 = new CommonTree(new CommonToken(103))); 136324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 137324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver root.AddChild(r0); 138324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 139324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.IsNull(root.Parent); 140324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(-1, root.ChildIndex); 141324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // check children of root all point at root 142324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(root, c0.Parent); 143324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(1, c0.ChildIndex); 144324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(root, c0.Parent); 145324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(2, c1.ChildIndex); 146324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(root, c0.Parent); 147324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(3, c2.ChildIndex); 148324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 149324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 150324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 151324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testDupTree() 152324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 153324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // ^(101 ^(102 103 ^(106 107) ) 104 105) 154324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree r0 = new CommonTree(new CommonToken(101)); 155324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree r1 = new CommonTree(new CommonToken(102)); 156324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(r1); 157324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r1.AddChild(new CommonTree(new CommonToken(103))); 158324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ITree r2 = new CommonTree(new CommonToken(106)); 159324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r2.AddChild(new CommonTree(new CommonToken(107))); 160324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r1.AddChild(r2); 161324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(new CommonTree(new CommonToken(104))); 162324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver r0.AddChild(new CommonTree(new CommonToken(105))); 163324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 164324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree dup = (CommonTree)(new CommonTreeAdaptor()).DupTree(r0); 165324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 166324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.IsNull(dup.Parent); 167324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(-1, dup.ChildIndex); 168324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver dup.SanityCheckParentAndChildIndexes(); 169324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 170324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 171324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 172324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testBecomeRoot() 173324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 174324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // 5 becomes new root of ^(nil 101 102 103) 175324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newRoot = new CommonTree(new CommonToken(5)); 176324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 177324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree oldRoot = new CommonTree((IToken)null); 178324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver oldRoot.AddChild(new CommonTree(new CommonToken(101))); 179324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver oldRoot.AddChild(new CommonTree(new CommonToken(102))); 180324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver oldRoot.AddChild(new CommonTree(new CommonToken(103))); 181324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 182324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ITreeAdaptor adaptor = new CommonTreeAdaptor(); 183324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.BecomeRoot(newRoot, oldRoot); 184324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newRoot.SanityCheckParentAndChildIndexes(); 185324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 186324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 187324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 188324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testBecomeRoot2() 189324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 190324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // 5 becomes new root of ^(101 102 103) 191324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newRoot = new CommonTree(new CommonToken(5)); 192324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 193324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree oldRoot = new CommonTree(new CommonToken(101)); 194324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver oldRoot.AddChild(new CommonTree(new CommonToken(102))); 195324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver oldRoot.AddChild(new CommonTree(new CommonToken(103))); 196324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 197324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ITreeAdaptor adaptor = new CommonTreeAdaptor(); 198324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.BecomeRoot(newRoot, oldRoot); 199324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newRoot.SanityCheckParentAndChildIndexes(); 200324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 201324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 202324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 203324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testBecomeRoot3() 204324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 205324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // ^(nil 5) becomes new root of ^(nil 101 102 103) 206324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newRoot = new CommonTree((IToken)null); 207324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newRoot.AddChild(new CommonTree(new CommonToken(5))); 208324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 209324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree oldRoot = new CommonTree((IToken)null); 210324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver oldRoot.AddChild(new CommonTree(new CommonToken(101))); 211324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver oldRoot.AddChild(new CommonTree(new CommonToken(102))); 212324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver oldRoot.AddChild(new CommonTree(new CommonToken(103))); 213324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 214324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ITreeAdaptor adaptor = new CommonTreeAdaptor(); 215324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.BecomeRoot(newRoot, oldRoot); 216324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newRoot.SanityCheckParentAndChildIndexes(); 217324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 218324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 219324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 220324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testBecomeRoot5() 221324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 222324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // ^(nil 5) becomes new root of ^(101 102 103) 223324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newRoot = new CommonTree((IToken)null); 224324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newRoot.AddChild(new CommonTree(new CommonToken(5))); 225324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 226324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree oldRoot = new CommonTree(new CommonToken(101)); 227324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver oldRoot.AddChild(new CommonTree(new CommonToken(102))); 228324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver oldRoot.AddChild(new CommonTree(new CommonToken(103))); 229324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 230324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ITreeAdaptor adaptor = new CommonTreeAdaptor(); 231324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.BecomeRoot(newRoot, oldRoot); 232324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newRoot.SanityCheckParentAndChildIndexes(); 233324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 234324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 235324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 236324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testBecomeRoot6() 237324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 238324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // emulates construction of ^(5 6) 239324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ITreeAdaptor adaptor = new CommonTreeAdaptor(); 240324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree root_0 = (CommonTree)adaptor.Nil(); 241324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree root_1 = (CommonTree)adaptor.Nil(); 242324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver root_1 = (CommonTree)adaptor.BecomeRoot(new CommonTree(new CommonToken(5)), root_1); 243324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 244324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.AddChild(root_1, new CommonTree(new CommonToken(6))); 245324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 246324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver adaptor.AddChild(root_0, root_1); 247324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 248324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver root_0.SanityCheckParentAndChildIndexes(); 249324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 250324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 251324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // Test replaceChildren 252324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 253324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 254324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testReplaceWithNoChildren() 255324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 256324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = new CommonTree(new CommonToken(101)); 257324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newChild = new CommonTree(new CommonToken(5)); 258324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver bool error = false; 259324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver try 260324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 261324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.ReplaceChildren(0, 0, newChild); 262324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 263324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver catch (Exception) 264324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 265324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver error = true; 266324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 267324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.IsTrue(error); 268324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 269324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 270324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 271324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testReplaceWithOneChildren() 272324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 273324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // assume token type 99 and use text 274324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = new CommonTree(new CommonToken(99, "a")); 275324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree c0 = new CommonTree(new CommonToken(99, "b")); 276324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(c0); 277324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 278324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newChild = new CommonTree(new CommonToken(99, "c")); 279324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.ReplaceChildren(0, 0, newChild); 280324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver String expected = "(a c)"; 281324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(expected, t.ToStringTree()); 282324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.SanityCheckParentAndChildIndexes(); 283324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 284324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 285324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 286324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testReplaceInMiddle() 287324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 288324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = new CommonTree(new CommonToken(99, "a")); 289324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "b"))); 290324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "c"))); // index 1 291324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "d"))); 292324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 293324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newChild = new CommonTree(new CommonToken(99, "x")); 294324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.ReplaceChildren(1, 1, newChild); 295324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver String expected = "(a b x d)"; 296324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(expected, t.ToStringTree()); 297324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.SanityCheckParentAndChildIndexes(); 298324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 299324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 300324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 301324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testReplaceAtLeft() 302324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 303324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = new CommonTree(new CommonToken(99, "a")); 304324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "b"))); // index 0 305324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "c"))); 306324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "d"))); 307324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 308324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newChild = new CommonTree(new CommonToken(99, "x")); 309324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.ReplaceChildren(0, 0, newChild); 310324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver String expected = "(a x c d)"; 311324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(expected, t.ToStringTree()); 312324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.SanityCheckParentAndChildIndexes(); 313324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 314324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 315324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 316324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testReplaceAtRight() 317324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 318324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = new CommonTree(new CommonToken(99, "a")); 319324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "b"))); 320324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "c"))); 321324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "d"))); // index 2 322324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 323324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newChild = new CommonTree(new CommonToken(99, "x")); 324324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.ReplaceChildren(2, 2, newChild); 325324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver String expected = "(a b c x)"; 326324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(expected, t.ToStringTree()); 327324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.SanityCheckParentAndChildIndexes(); 328324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 329324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 330324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 331324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testReplaceOneWithTwoAtLeft() 332324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 333324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ITreeAdaptor adaptor = new CommonTreeAdaptor(); 334324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = new CommonTree(new CommonToken(99, "a")); 335324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "b"))); 336324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "c"))); 337324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "d"))); 338324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 339324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newChildren = (CommonTree)adaptor.Nil(); 340324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newChildren.AddChild(new CommonTree(new CommonToken(99, "x"))); 341324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newChildren.AddChild(new CommonTree(new CommonToken(99, "y"))); 342324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 343324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.ReplaceChildren(0, 0, newChildren); 344324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver String expected = "(a x y c d)"; 345324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(expected, t.ToStringTree()); 346324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.SanityCheckParentAndChildIndexes(); 347324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 348324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 349324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 350324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testReplaceOneWithTwoAtRight() 351324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 352324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ITreeAdaptor adaptor = new CommonTreeAdaptor(); 353324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = new CommonTree(new CommonToken(99, "a")); 354324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "b"))); 355324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "c"))); 356324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "d"))); 357324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 358324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newChildren = (CommonTree)adaptor.Nil(); 359324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newChildren.AddChild(new CommonTree(new CommonToken(99, "x"))); 360324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newChildren.AddChild(new CommonTree(new CommonToken(99, "y"))); 361324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 362324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.ReplaceChildren(2, 2, newChildren); 363324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver String expected = "(a b c x y)"; 364324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(expected, t.ToStringTree()); 365324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.SanityCheckParentAndChildIndexes(); 366324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 367324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 368324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 369324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testReplaceOneWithTwoInMiddle() 370324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 371324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ITreeAdaptor adaptor = new CommonTreeAdaptor(); 372324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = new CommonTree(new CommonToken(99, "a")); 373324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "b"))); 374324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "c"))); 375324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "d"))); 376324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 377324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newChildren = (CommonTree)adaptor.Nil(); 378324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newChildren.AddChild(new CommonTree(new CommonToken(99, "x"))); 379324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newChildren.AddChild(new CommonTree(new CommonToken(99, "y"))); 380324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 381324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.ReplaceChildren(1, 1, newChildren); 382324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver String expected = "(a b x y d)"; 383324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(expected, t.ToStringTree()); 384324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.SanityCheckParentAndChildIndexes(); 385324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 386324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 387324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 388324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testReplaceTwoWithOneAtLeft() 389324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 390324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = new CommonTree(new CommonToken(99, "a")); 391324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "b"))); 392324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "c"))); 393324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "d"))); 394324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 395324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newChild = new CommonTree(new CommonToken(99, "x")); 396324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 397324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.ReplaceChildren(0, 1, newChild); 398324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver String expected = "(a x d)"; 399324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(expected, t.ToStringTree()); 400324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.SanityCheckParentAndChildIndexes(); 401324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 402324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 403324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 404324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testReplaceTwoWithOneAtRight() 405324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 406324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = new CommonTree(new CommonToken(99, "a")); 407324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "b"))); 408324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "c"))); 409324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "d"))); 410324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 411324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newChild = new CommonTree(new CommonToken(99, "x")); 412324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 413324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.ReplaceChildren(1, 2, newChild); 414324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver String expected = "(a b x)"; 415324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(expected, t.ToStringTree()); 416324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.SanityCheckParentAndChildIndexes(); 417324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 418324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 419324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 420324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testReplaceAllWithOne() 421324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 422324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = new CommonTree(new CommonToken(99, "a")); 423324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "b"))); 424324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "c"))); 425324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "d"))); 426324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 427324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newChild = new CommonTree(new CommonToken(99, "x")); 428324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 429324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.ReplaceChildren(0, 2, newChild); 430324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver String expected = "(a x)"; 431324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(expected, t.ToStringTree()); 432324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.SanityCheckParentAndChildIndexes(); 433324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 434324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 435324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver [Test] 436324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public void testReplaceAllWithTwo() 437324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 438324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ITreeAdaptor adaptor = new CommonTreeAdaptor(); 439324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = new CommonTree(new CommonToken(99, "a")); 440324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "b"))); 441324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "c"))); 442324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.AddChild(new CommonTree(new CommonToken(99, "d"))); 443324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 444324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree newChildren = (CommonTree)adaptor.Nil(); 445324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newChildren.AddChild(new CommonTree(new CommonToken(99, "x"))); 446324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver newChildren.AddChild(new CommonTree(new CommonToken(99, "y"))); 447324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 448324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.ReplaceChildren(0, 2, newChildren); 449324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver String expected = "(a x y)"; 450324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Assert.AreEqual(expected, t.ToStringTree()); 451324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.SanityCheckParentAndChildIndexes(); 452324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 453324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 454324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver #endregion 455324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 456324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}