def test_reuse_id(self): trie = Trie() ids = {w: trie.insert(w) for w in [u"abc", u"abd", u"abe"]} trie.remove(u"abc") trie.remove(u"abe") v = trie.insert(u"abf") self.assertEqual(v, ids[u"abe"]) v = trie.insert(u"abg") self.assertEqual(v, ids[u"abc"]) v = trie.insert(u"abh") self.assertEqual(v, 3) v = trie.insert(u"abi") self.assertEqual(v, 4)
def test_init(self): trie = Trie() ids = [trie.insert(w) for w in [u'Ruby', u'ruby', u'rb']] self.assertEqual(ids, [0, 1, 2]) self.assertEqual(u"ruby" in trie, True) self.assertEqual(u"rubyx" in trie, False) self.assertEqual(trie.remove(u"ruby"), 1) self.assertEqual(trie.remove(u"ruby"), -1)
def test_remove_words(self): dir_ = os.path.dirname(__file__) trie = Trie() for i in range(3): ids = [] words = [] with open(os.path.join(dir_, "../bench/words.txt")) as fi: for l in fi: l = l.strip() if isinstance(l, bytes): l = l.decode("utf8") if len(l) > 0: words.append(l) ids.append(trie.insert(l)) for id_, w in zip(ids, words): self.assertEqual(id_, trie.remove(w))
def test_ignore_case(self): trie = Trie(ignore_case=True) ids = [trie.insert(w) for w in [u'Ruby', u'ruby', u'rb']] self.assertEqual(ids, [0, 0, 1]) self.assertEqual(trie.remove(u"ruby"), 0) self.assertEqual(trie.remove(u"Ruby"), -1)