2018-01-20 11:54:24 +01:00
|
|
|
package com.baeldung.trie;
|
|
|
|
|
|
|
|
|
|
import org.junit.Test;
|
2018-07-09 16:26:52 +02:00
|
|
|
import org.junit.jupiter.api.Assertions;
|
2018-01-20 11:54:24 +01:00
|
|
|
|
|
|
|
|
import static org.junit.Assert.assertFalse;
|
|
|
|
|
import static org.junit.Assert.assertTrue;
|
|
|
|
|
|
2018-07-07 01:38:35 +02:00
|
|
|
public class TrieUnitTest {
|
2018-01-20 11:54:24 +01:00
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void whenEmptyTrie_thenNoElements() {
|
|
|
|
|
Trie trie = new Trie();
|
|
|
|
|
|
|
|
|
|
assertFalse(trie.isEmpty());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenATrie_whenAddingElements_thenTrieNotEmpty() {
|
|
|
|
|
Trie trie = createExampleTrie();
|
|
|
|
|
|
|
|
|
|
assertFalse(trie.isEmpty());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenATrie_whenAddingElements_thenTrieHasThoseElements() {
|
|
|
|
|
Trie trie = createExampleTrie();
|
|
|
|
|
|
|
|
|
|
assertFalse(trie.containsNode("3"));
|
|
|
|
|
assertFalse(trie.containsNode("vida"));
|
|
|
|
|
|
|
|
|
|
assertTrue(trie.containsNode("Programming"));
|
|
|
|
|
assertTrue(trie.containsNode("is"));
|
|
|
|
|
assertTrue(trie.containsNode("a"));
|
|
|
|
|
assertTrue(trie.containsNode("way"));
|
|
|
|
|
assertTrue(trie.containsNode("of"));
|
|
|
|
|
assertTrue(trie.containsNode("life"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenATrie_whenLookingForNonExistingElement_thenReturnsFalse() {
|
|
|
|
|
Trie trie = createExampleTrie();
|
|
|
|
|
|
|
|
|
|
assertFalse(trie.containsNode("99"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenATrie_whenDeletingElements_thenTreeDoesNotContainThoseElements() {
|
|
|
|
|
|
|
|
|
|
Trie trie = createExampleTrie();
|
|
|
|
|
|
|
|
|
|
assertTrue(trie.containsNode("Programming"));
|
|
|
|
|
trie.delete("Programming");
|
|
|
|
|
assertFalse(trie.containsNode("Programming"));
|
|
|
|
|
}
|
|
|
|
|
|
2018-07-09 16:26:52 +02:00
|
|
|
@Test
|
|
|
|
|
public void givenATrie_whenDeletingOverlappingElements_thenDontDeleteSubElement() {
|
|
|
|
|
|
|
|
|
|
Trie trie1 = new Trie();
|
|
|
|
|
|
|
|
|
|
trie1.insert("pie");
|
|
|
|
|
trie1.insert("pies");
|
|
|
|
|
|
|
|
|
|
trie1.delete("pies");
|
|
|
|
|
|
|
|
|
|
Assertions.assertTrue(trie1.containsNode("pie"));
|
|
|
|
|
}
|
|
|
|
|
|
2018-01-20 11:54:24 +01:00
|
|
|
private Trie createExampleTrie() {
|
|
|
|
|
Trie trie = new Trie();
|
|
|
|
|
|
|
|
|
|
trie.insert("Programming");
|
|
|
|
|
trie.insert("is");
|
|
|
|
|
trie.insert("a");
|
|
|
|
|
trie.insert("way");
|
|
|
|
|
trie.insert("of");
|
|
|
|
|
trie.insert("life");
|
|
|
|
|
|
|
|
|
|
return trie;
|
|
|
|
|
}
|
|
|
|
|
}
|