// Copyright 2012 Google Inc. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.collide.client.code.autocomplete; import com.google.collide.client.testutil.SynchronousTestCase; /** * Test cases for {@link AbstractTrie}. */ public class AbstractTrieTest extends SynchronousTestCase { AbstractTrie<String> trie; @Override public String getModuleName() { return "com.google.collide.client.TestCode"; } @Override public void gwtSetUp() throws Exception { super.gwtSetUp(); trie = TestUtils.createStringTrie("a", "ab", "ac"); } public void testDuplicates() { trie = TestUtils.createStringTrie("abc", "def", "abc"); assertEquals("abc,def", AbstractTrie.collectSubtree(trie.getRoot()).join(",")); assertEquals("abc", trie.search("ab").join(",")); } public void testfindAutocompletions() { assertEquals("a,ab,ac", trie.search("").join(",")); assertEquals("ac", trie.search("ac").join("")); assertEquals(0, trie.search("b").size()); } public void testfindNode() { TrieNode<String> node = AbstractTrie.findNode("", trie.getRoot()); assertEquals(trie.getRoot(), node); node = AbstractTrie.findNode("a", trie.getRoot()); assertEquals("a", node.getPrefix()); node = AbstractTrie.findNode("b", trie.getRoot()); assertNull(node); } public void testGetAllLeavesInSubtree() { assertEquals("a,ab,ac", AbstractTrie.collectSubtree(trie.getRoot()).join(",")); } public void testInsertIntoTrie() { trie.put("foo", "foo"); assertNotNull(AbstractTrie.findNode("foo", trie.getRoot())); } public void testTrieSetup() { assertEquals("", trie.getRoot().getPrefix()); } public void testPopulateTrie() { trie = TestUtils.createStringTrie("a.b", "a.c", "a.b.c"); assertNotNull(AbstractTrie.findNode("a.b", trie.getRoot())); assertNotNull(AbstractTrie.findNode("a.c", trie.getRoot())); assertNotNull(AbstractTrie.findNode("a.b.c", trie.getRoot())); } public void testFindAutocompletions() { trie = TestUtils.createStringTrie("a.b", "a.c", "a.b.c"); assertEquals("a.b.c", trie.search("a.b.").join("")); } public void testCL21928774() { // Prior to CL 21928774 this test would fail with ClassCastException trie = new AbstractTrie<String>(); trie.put("__proto__", "__proto__"); } }