def test_single(self): trie = Trie() trie.insert("magnum", 1337) trie.insert("magnum", 21) serialized = trie.serialize() self.compare(serialized, """ magnum [1337, 21] """) self.assertEqual(len(serialized), 46)
def test_unicode(self): trie = Trie() trie.insert("hýždě", 0) trie.insert("hárá", 1) serialized = trie.serialize() self.compare(serialized, """ h0xc3 0xbd 0xc5 | 0xbe | d0xc4 | 0x9b | [0] 0xa1 r0xc3 | 0xa1 | [1] """) self.assertEqual(len(serialized), 82)
def test_multiple(self): trie = Trie() trie.insert("math", 0) trie.insert("math::vector", 1, lookahead_barriers=[4]) trie.insert("vector", 1) trie.insert("math::range", 2) trie.insert("range", 2) trie.insert("math::min", 3) trie.insert("min", 3) trie.insert("math::max", 4) trie.insert("max", 4) trie.insert("math::minmax", 5) trie.insert("minmax", 5) trie.insert("math::vector::minmax", 6, lookahead_barriers=[4, 12]) trie.insert("vector::minmax", 6, lookahead_barriers=[6]) trie.insert("minmax", 6) trie.insert("math::vector::min", 7) trie.insert("vector::min", 7) trie.insert("min", 7) trie.insert("math::vector::max", 8) trie.insert("vector::max", 8) trie.insert("max", 8) trie.insert("math::range::min", 9, lookahead_barriers=[4, 11]) trie.insert("range::min", 9, lookahead_barriers=[5]) trie.insert("min", 9) trie.insert("math::range::max", 10) trie.insert("range::max", 10) trie.insert("max", 10) serialized = trie.serialize() self.compare(serialized, """ math [0] ||| :$ ||| :vector [1] ||| | :$ ||| | :min [7] ||| | | max [6] ||| | ax [8] ||| range [2] ||| | :$ ||| | :min [9] ||| | ax [10] ||| min [3] ||| || max [5] ||| |ax [4] ||x [4, 8, 10] |in [3, 7, 9] || max [5, 6] vector [1] | :$ | :min [7] | | max [6] | ax [8] range [2] | :$ | :min [9] | ax [10] """) self.assertEqual(len(serialized), 340)
def test_empty(self): trie = Trie() serialized = trie.serialize() self.compare(serialized, "") self.assertEqual(len(serialized), 6)