def test_get_bottom_node_single_char(self):
     """Input fragement is a single character. 
     """
     fragment = 'a'
     correct_answer = auto.MemoryNode(
         {'b': auto.MemoryNode({'c': auto.MemoryNode({}, 1)}, 0)}, 0)
     output = auto.get_bottom_node(fragment, self.abc_memory)
     self.assertEqual(output, correct_answer)
 def setUp(self):
     self.abc_memory = {
         'a':
         auto.MemoryNode(
             {
                 'b':  # memory of the word abc
                 auto.MemoryNode({'c': auto.MemoryNode({}, 1)}, 0)
             },
             0)
     }
 def test_memorize_same_prefix(self):
     """Tests memorize function when a word is passed that is a prefix of a 
     word already in the memory.
     """
     word = 'ab'
     correct_answer = {
         'a':
         auto.MemoryNode(
             {'b': auto.MemoryNode({'c': auto.MemoryNode({}, 1)}, 1)}, 0)
     }
     output = auto.memorize(self.abc_memory, word)
     self.assertEqual(output, correct_answer)
 def test_get_candidates_one_good_bottom(self):
     """One good candidate at bottom level of memmory.
     """
     memory = {
         'a':
         auto.MemoryNode(
             {'b': auto.MemoryNode({'c': auto.MemoryNode({}, 2)}, 0)}, 0)
     }
     fragment = 'prefix'
     correct_answer = [cand.Candidate('prefixabc', 2)]
     output = auto.get_candidates(fragment, memory)
     self.assertEqual(output, correct_answer)
 def test_get_candidates_none(self):
     """No good candidates in memory.
     """
     memory = {
         'a':
         auto.MemoryNode(
             {'b': auto.MemoryNode({'c': auto.MemoryNode({}, 0)}, 0)}, 0)
     }
     fragment = 'a'
     correct_answer = []
     output = auto.get_candidates(fragment, memory)
     self.assertEqual(output, correct_answer)
 def test_memorize_non_empty_memory(self):
     """Tests memorize function when memory already exists. 
     """
     word = 'adc'
     correct_answer = {
         'a':
         auto.MemoryNode(
             {
                 'b': auto.MemoryNode({'c': auto.MemoryNode({}, 1)}, 0),
                 'd': auto.MemoryNode({'c': auto.MemoryNode({}, 1)}, 0)
             }, 0)
     }
     output = auto.memorize(self.abc_memory, word)
     self.assertEqual(output, correct_answer)
 def test_getWords_no_candidates(self):
     """No good candidates in memory for passed fragment.
     """
     memory = {
         'a':
         auto.MemoryNode(
             {'b': auto.MemoryNode({'c': auto.MemoryNode({}, 1)}, 0)}, 0)
     }
     fragment = 'ad'
     correct_answer = []
     alg = auto.AutocompleteProvider()
     alg.memory = memory
     output = alg.getWords(fragment)
     self.assertEqual(output, correct_answer)
 def test_getWords_not_all_good_candidates(self):
     """Given the fragment and memory, getWords should not return every 
     candidate with a postive confidence in memory.
     """
     memory = {
         'a':
         auto.MemoryNode(
             {'b': auto.MemoryNode({'c': auto.MemoryNode({}, 1)}, 0)}, 1)
     }
     fragment = 'aB'  # contains uppercase
     correct_answer = [cand.Candidate('abc', 1)]
     alg = auto.AutocompleteProvider()
     alg.memory = memory
     output = alg.getWords(fragment)
     self.assertEqual(output, correct_answer)
 def test_get_candidates_two_good_diff_lvl(self):
     """Two good candidates at different levels of memmory.
     """
     memory = {
         'a':
         auto.MemoryNode(
             {'b': auto.MemoryNode({'c': auto.MemoryNode({}, 1)}, 0)}, 2)
     }
     fragment = 'prefix'
     correct_answer = [
         cand.Candidate('prefixa', 2),
         cand.Candidate('prefixabc', 1)
     ]
     output = auto.get_candidates(fragment, memory)
     self.assertEqual(output, correct_answer)
 def test_get_bottom_node_bottom(self):
     """Input fragement should return a node at the bottom of memory. 
     """
     fragment = 'abc'
     correct_answer = auto.MemoryNode({}, 1)
     output = auto.get_bottom_node(fragment, self.abc_memory)
     self.assertEqual(output, correct_answer)
 def test_train_has_memory(self):
     """Test the train method when there are previous memories.
     """
     passage = 'ab abc abd'
     memory = {
         'a':
         auto.MemoryNode(
             {'b': auto.MemoryNode({'c': auto.MemoryNode({}, 1)}, 0)}, 0)
     }
     correct_answer = {
         'a':
         auto.MemoryNode(
             {
                 'b':
                 auto.MemoryNode(
                     {
                         'c': auto.MemoryNode({}, 2),
                         'd': auto.MemoryNode({}, 1)
                     }, 1)
             }, 0)
     }
     algorithm = auto.AutocompleteProvider()
     algorithm.memory = memory
     algorithm.train(passage)
     self.assertEqual(algorithm.memory, correct_answer)
 def test_get_candidates_diff_branches(self):
     """Two good candidates down different branches of memmory.
     """
     memory = {
         'a':
         auto.MemoryNode(
             {
                 'b': auto.MemoryNode({'c': auto.MemoryNode({}, 1)}, 0),
                 'd': auto.MemoryNode({'e': auto.MemoryNode({}, 3)}, 0)
             }, 0)
     }
     fragment = 'prefix'
     correct_answer = [
         cand.Candidate('prefixabc', 1),
         cand.Candidate('prefixade', 3)
     ]
     output = auto.get_candidates(fragment, memory)
     self.assertEqual(output, correct_answer)
 def test_train_no_memory(self):
     """Tests the train method when there are no previous memories.
     """
     passage = 'Abc d-ef'  # contains uppercase and special characters
     correct_answer = {
         'a':
         auto.MemoryNode(
             {'b': auto.MemoryNode({'c': auto.MemoryNode({}, 1)}, 0)}, 0),
         'd':
         auto.MemoryNode(
             {'e': auto.MemoryNode({'f': auto.MemoryNode({}, 1)}, 0)}, 0)
     }
     algorithm = auto.AutocompleteProvider()
     algorithm.train(passage)
     self.assertEqual(algorithm.memory, correct_answer)
 def test_get_bottom_node_branches(self):
     """Input memory has branches and function must choose correct branch. 
     """
     memory = {
         'a':
         auto.MemoryNode(
             {
                 'b': auto.MemoryNode({'c': auto.MemoryNode({}, 1)}, 0),
                 'd': auto.MemoryNode({'e': auto.MemoryNode({}, 2)}, 0)
             }, 0)
     }
     fragment = 'ade'
     correct_answer = auto.MemoryNode({}, 2)
     output = auto.get_bottom_node(fragment, memory)
     self.assertEqual(output, correct_answer)
 def test_getWords_different_branches(self):
     """Two good candidates in different branches. 
     """
     memory = {
         'a':
         auto.MemoryNode(
             {
                 'b':
                 auto.MemoryNode({'c': auto.MemoryNode({}, 1)}, 0),
                 'd':
                 auto.MemoryNode(
                     {
                         'e': auto.MemoryNode({'f': auto.MemoryNode({}, 2)},
                                              0)
                     }, 0)
             }, 0),
     }
     fragment = 'a'
     correct_answer = [cand.Candidate('adef', 2), cand.Candidate('abc', 1)]
     alg = auto.AutocompleteProvider()
     alg.memory = memory
     output = alg.getWords(fragment)
     self.assertEqual(output, correct_answer)