StringTrie { public P add(String path) { return add(rootNode, path); } StringTrie(P rootNode); P get(String path); P add(String path); P add(P parent, String path); P delete(String path);  }
@Test public void testAdd() { T trie = new T(); trie.add("aaa"); trie.add("bbb"); trie.add("aad"); trie.add("aade"); trie.add("aadd"); System.out.println(Util.dumpTree(trie.rootNode)); Assert.assertEquals("aaa", trie.get("aaa").getAbsolutePath()); Assert.assertEquals("bbb", trie.get("bbb").getAbsolutePath()); Assert.assertEquals("aad", trie.get("aad").getAbsolutePath()); Assert.assertEquals("aa", trie.get("aaqqq").getAbsolutePath()); Assert.assertEquals("", trie.get("bbe").getAbsolutePath()); }
@Test public void testAddRootLeaf() { T trie = new T(); trie.add("ax"); trie.add("ay"); trie.add("a"); System.out.println(Util.dumpTree(trie.rootNode)); }
@Test public void testAddDuplicate() { T trie = new T(); A a = trie.add("a"); A ay = trie.add("ay"); A a1 = trie.add("a"); Assert.assertTrue(a == a1); A ay1 = trie.add("ay"); Assert.assertTrue(ay == ay1); }
@Test public void testAddLeafRoot() { T trie = new T(); trie.add("a"); trie.add("ax"); System.out.println(Util.dumpTree(trie.rootNode)); }