public void testInvalidListTree() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("A B C"); Assert.IsTrue(t == null); }
public void testWildcard() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A B C)"); bool valid = wiz.Parse(t, "(A . .)"); Assert.IsTrue(valid); }
public void testParseWithTextFails() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A B C)"); bool valid = wiz.Parse(t, "(A[foo] B C)"); Assert.IsTrue(!valid); // fails }
public void testDoubleLevelTree() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A (B C) (B D) E)"); string actual = t.ToStringTree(); string expected = "(A (B C) (B D) E)"; Assert.AreEqual(expected, actual); }
public void testParseSingleNode() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("A"); bool valid = wiz.Parse(t, "A"); Assert.IsTrue(valid); }
public void testEqualsWithMismatchedText() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t1 = (CommonTree)wiz.Create("(A B[foo] C)"); CommonTree t2 = (CommonTree)wiz.Create("(A B C)"); bool same = TreeWizard.Equals(t1, t2, adaptor); Assert.IsTrue(!same); }
public void testSingleNodeWithArg() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("ID[foo]"); string actual = t.ToStringTree(); string expected = "foo"; Assert.AreEqual(expected, actual); }
public void testListTree() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(nil A B C)"); string actual = t.ToStringTree(); string expected = "A B C"; Assert.AreEqual(expected, actual); }
public void testSingleNodeIndex() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("ID"); IDictionary m = wiz.Index(t); string actual = CollectionUtils.DictionaryToString(m); string expected = "{10=[ID]}"; Assert.AreEqual(expected, actual); }
public void testParseWithText() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A B[foo] C[bar])"); // C pattern has no text arg so despite [bar] in t, no need // to match text--check structure only. bool valid = wiz.Parse(t, "(A B[foo] C)"); Assert.IsTrue(valid); }
public void testFindPattern() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A B C (A[foo] B[bar]) (D (A[big] B[dog])))"); IList subtrees = wiz.Find(t, "(A B)"); IList elements = subtrees; string actual = CollectionUtils.ListToString(elements); string expected = "[foo, big]"; Assert.AreEqual(expected, actual); }
public void testRepeatsIndex() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A B (A C B) B D D)"); IDictionary m = wiz.Index(t); string actual = CollectionUtils.DictionaryToString(m); //string expected = "{8=[D, D], 6=[B, B, B], 7=[C], 5=[A, A]}"; string expected = "{8=[D, D], 7=[C], 6=[B, B, B], 5=[A, A]}"; Assert.AreEqual(expected, actual); }
public void testParseWithWildcardLabels() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A B C)"); IDictionary labels = new Hashtable(); bool valid = wiz.Parse(t, "(A %b:. %c:.)", labels); Assert.IsTrue(valid); Assert.AreEqual("B", labels["b"].ToString()); Assert.AreEqual("C", labels["c"].ToString()); }
public void testRepeatsVisit2() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A B (A C B) B D D)"); IList elements = new ArrayList(); wiz.Visit(t, wiz.GetTokenType("A"), new RecordAllElementsVisitor(elements)); string actual = CollectionUtils.ListToString(elements); string expected = "[A, A]"; Assert.AreEqual(expected, actual); }
public void testRepeatsVisitWithNullParentAndContext() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A B (A C B) B D D)"); IList elements = new ArrayList(); wiz.Visit(t, wiz.GetTokenType("A"), new Test1ContextVisitor(adaptor, elements)); string actual = CollectionUtils.ListToString(elements); string expected = "[A@nil[0], A@A[1]]"; Assert.AreEqual(expected, actual); }
public void testVisitPattern() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A B C (A B) D)"); IList elements = new ArrayList(); wiz.Visit(t, "(A B)", new RecordAllElementsVisitor(elements)); string actual = CollectionUtils.ListToString(elements); string expected = "[A]"; // shouldn't match overall root, just (A B) Assert.AreEqual(expected, actual); }
public void testVisitPatternMultiple() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A B C (A B) (D (A B)))"); IList elements = new ArrayList(); wiz.Visit(t, "(A B)", new Test1ContextVisitor(adaptor, elements)); string actual = CollectionUtils.ListToString(elements); string expected = "[A@A[2], A@D[0]]"; // shouldn't match overall root, just (A B) Assert.AreEqual(expected, actual); }
public void testVisitPatternMultipleWithLabels() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A B C (A[foo] B[bar]) (D (A[big] B[dog])))"); IList elements = new ArrayList(); wiz.Visit(t, "(%a:A %b:B)", new Test2ContextVisitor(adaptor, elements)); string actual = CollectionUtils.ListToString(elements); string expected = "[foo@A[2]foo&bar, big@D[0]big&dog]"; Assert.AreEqual(expected, actual); }
public void testParseLabelsAndTestText() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A B[foo] C)"); IDictionary labels = new Hashtable(); bool valid = wiz.Parse(t, "(%a:A %b:B[foo] %c:C)", labels); Assert.IsTrue(valid); Assert.AreEqual("A", labels["a"].ToString()); Assert.AreEqual("foo", labels["b"].ToString()); Assert.AreEqual("C", labels["c"].ToString()); }
public void testBecomeRoot6() { // emulates construction of ^(5 6) ITreeAdaptor adaptor = new CommonTreeAdaptor(); CommonTree root_0 = (CommonTree)adaptor.GetNilNode(); CommonTree root_1 = (CommonTree)adaptor.GetNilNode(); 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(); }
public void testBecomeRoot2() { // 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(); }
public void testParseLabelsInNestedTree() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t = (CommonTree)wiz.Create("(A (B C) (D E))"); IDictionary labels = new Hashtable(); bool valid = wiz.Parse(t, "(%a:A (%b:B %c:C) (%d:D %e:E) )", labels); Assert.IsTrue(valid); Assert.AreEqual("A", labels["a"].ToString()); Assert.AreEqual("B", labels["b"].ToString()); Assert.AreEqual("C", labels["c"].ToString()); Assert.AreEqual("D", labels["d"].ToString()); Assert.AreEqual("E", labels["e"].ToString()); }
public void testReplaceOneWithTwoInMiddle() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); 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 expected = "(a b x y d)"; Assert.AreEqual(expected, t.ToStringTree()); t.SanityCheckParentAndChildIndexes(); }
public void testReplaceAllWithTwo() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); 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.GetNilNode(); newChildren.AddChild(new CommonTree(new CommonToken(99, "x"))); newChildren.AddChild(new CommonTree(new CommonToken(99, "y"))); t.ReplaceChildren(0, 2, newChildren); String expected = "(a x y)"; Assert.AreEqual(expected, t.ToStringTree()); t.SanityCheckParentAndChildIndexes(); }
public void testEquals() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); TreeWizard wiz = new TreeWizard(adaptor, tokens); CommonTree t1 = (CommonTree)wiz.Create("(A B C)"); CommonTree t2 = (CommonTree)wiz.Create("(A B C)"); bool same = TreeWizard.Equals(t1, t2, adaptor); Assert.IsTrue(same); }
public void testBecomeRoot5() { // ^(nil 5) becomes new root of ^(101 102 103) CommonTree newRoot = new CommonTree((IToken)null); newRoot.AddChild(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(); }
public void testReplaceOneWithTwoInMiddle() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); 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.GetNilNode(); newChildren.AddChild(new CommonTree(new CommonToken(99, "x"))); newChildren.AddChild(new CommonTree(new CommonToken(99, "y"))); t.ReplaceChildren(1, 1, newChildren); String expected = "(a b x y d)"; Assert.AreEqual(expected, t.ToStringTree()); t.SanityCheckParentAndChildIndexes(); }
public void testReplaceAllWithTwo() { ITreeAdaptor adaptor = new CommonTreeAdaptor(); 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 expected = "(a x y)"; Assert.AreEqual(expected, t.ToStringTree()); t.SanityCheckParentAndChildIndexes(); }