/** * Gets whether a key exists in the trie and has a non-null value mapped to * it * * @param key * Key * @return True if the key exists and has a non-null value mapped to it */ public boolean contains(String key) { return this.contains(key, true); }
/** * Gets whether a key exists in the trie and has a non-null value mapped to * it * * @param key * Key * @return True if the key exists and has a non-null value mapped to it */ public boolean contains(String key) { return this.contains(key, true); }
/** * Gets whether a key exists in the trie and has a non-null value mapped to * it * * @param key * Key * @return True if the key exists and has a non-null value mapped to it */ public boolean contains(String key) { return this.contains(key, true); }
/** * Test for keys with and without values required */ @Test public void trie_contains_02() { Trie<Integer> trie = new Trie<>(); trie.add("test", 123); Assert.assertTrue(trie.contains("test")); Assert.assertTrue(trie.contains("test", true)); Assert.assertTrue(trie.contains("test", 123)); // Any prefix of an added key exists if we don't require it to have a // value Assert.assertFalse(trie.contains("t")); Assert.assertTrue(trie.contains("t", false)); }
/** * Test for non-existent key */ @Test public void trie_contains_01() { Trie<Integer> trie = new Trie<>(); Assert.assertFalse(trie.contains("test")); }
/** * Test shortest match */ @Test public void trie_shortest_match_01() { Trie<Integer> trie = new Trie<>(); trie.add("test", 123); trie.add("testing", 456); Assert.assertTrue(trie.contains("test")); Assert.assertTrue(trie.contains("testing")); Assert.assertEquals((Integer)123, trie.shortestMatch("testing")); }
/** * Test for removing null key - provides access to trie root */ @Test public void trie_remove_04() { Trie<Integer> trie = new Trie<>(); trie.add("", 123); Assert.assertTrue(trie.contains("")); Assert.assertEquals((Integer)123, trie.get("")); trie.remove(""); Assert.assertFalse(trie.contains("")); }
/** * Adding a null value is ignored */ @Test public void trie_add_04() { Trie<Integer> trie = new Trie<>(); trie.add("test", null); Assert.assertFalse(trie.contains("test")); }
/** * Test for removing null key - provides access to trie root */ @Test public void trie_remove_03() { Trie<Integer> trie = new Trie<>(); trie.add(null, 123); Assert.assertTrue(trie.contains(null)); Assert.assertEquals((Integer)123, trie.get(null)); trie.remove(null); Assert.assertFalse(trie.contains(null)); }
/** * Test longest match */ @Test public void trie_longest_match_01() { Trie<Integer> trie = new Trie<>(); trie.add("test", 123); trie.add("testing", 456); Assert.assertTrue(trie.contains("test")); Assert.assertTrue(trie.contains("testing")); Assert.assertEquals((Integer)456, trie.longestMatch("testing")); }
/** * Removing a key value */ @Test public void trie_remove_01() { Trie<Integer> trie = new Trie<>(); trie.add("test", 123); Assert.assertTrue(trie.contains("test")); Assert.assertEquals((Integer) 123, trie.get("test")); // Removing does not fully remove the key it merely nulls the value trie.remove("test"); Assert.assertFalse(trie.contains("test")); Assert.assertTrue(trie.contains("test", false)); Assert.assertNull(trie.get("test")); }
/** * Removing a key value, removing a key which is a prefix of another leaves * the other intact */ @Test public void trie_remove_02() { Trie<Integer> trie = new Trie<>(); trie.add("test", 123); trie.add("testing", 456); Assert.assertTrue(trie.contains("test")); Assert.assertEquals((Integer) 123, trie.get("test")); Assert.assertTrue(trie.contains("testing")); Assert.assertEquals((Integer) 456, trie.get("testing")); // Removing does not fully remove the key it merely nulls the value trie.remove("test"); Assert.assertFalse(trie.contains("test")); Assert.assertTrue(trie.contains("test", false)); Assert.assertNull(trie.get("test")); // It also does not remove any keys who had the removed key as a prefix Assert.assertTrue(trie.contains("testing")); Assert.assertEquals((Integer) 456, trie.get("testing")); }
/** * Add two key values */ @Test public void trie_add_02() { Trie<Integer> trie = new Trie<>(); trie.add("test", 123); trie.add("other", 456); Assert.assertTrue(trie.contains("test")); Assert.assertTrue(trie.contains("other")); Assert.assertEquals((Integer) 123, trie.get("test")); Assert.assertEquals((Integer) 456, trie.get("other")); }
/** * Add a single key value */ @Test public void trie_add_01() { Trie<Integer> trie = new Trie<>(); trie.add("test", 123); Assert.assertTrue(trie.contains("test")); Assert.assertEquals((Integer) 123, trie.get("test")); }
/** * Adding an empty key is permitted - provides access to root of Trie */ @Test public void trie_add_06() { Trie<Integer> trie = new Trie<>(); trie.add("", 123); Assert.assertTrue(trie.contains("")); Assert.assertEquals((Integer)123, trie.get("")); }
/** * Adding a null key is permitted - provides access to root of Trie */ @Test public void trie_add_05() { Trie<Integer> trie = new Trie<>(); trie.add(null, 123); Assert.assertTrue(trie.contains(null)); Assert.assertEquals((Integer)123, trie.get(null)); }
/** * Replace an existing key value */ @Test public void trie_add_03() { Trie<Integer> trie = new Trie<>(); trie.add("test", 123); trie.add("test", 456); Assert.assertTrue(trie.contains("test")); Assert.assertEquals((Integer) 456, trie.get("test")); }
@Test public void trie_clear_02() { Trie<Integer> trie = new Trie<>(); trie.add("", 123); trie.clear() ; Assert.assertFalse(trie.contains("")); Assert.assertTrue(trie.isEmpty()) ; }