def test_01_insert(self): trie = lab.Trie() trie['cat'] = 'kitten' trie['car'] = 'tricycle' trie['carpet'] = 'rug' expect = read_expected('1.pickle') self.assertTrue(dictify(trie) == expect, msg="Your trie is incorrect.") self.assertEqual(any_key_stored(trie, ('cat', 'car', 'carpet')), None) t = lab.Trie() t['a'] = 1 t['an'] = 1 t['ant'] = 1 t['anteater'] = 1 t['ants'] = 1 t['a'] = 2 t['an'] = 2 t['a'] = 3 expect = read_expected('2.pickle') self.assertTrue(dictify(t) == expect, msg="Your trie is incorrect.") self.assertEqual(any_key_stored(t, ('an', 'ant', 'anteater', 'ants')), None) t = lab.Trie() t['man'] = 'person' t['mat'] = 'object' t['mattress'] = 'thing you sleep on' t['map'] = 'pam' t['me'] = 'you' t['met'] = 'tem' t['a'] = '?' t['map'] = -1000 expect = read_expected('3.pickle') self.assertTrue(dictify(t) == expect, msg="Your trie is incorrect.") self.assertEqual(any_key_stored(trie, ('man', 'mat', 'mattress', 'map', 'me', 'met', 'map')), None)
def test_01_set(self): trie = lab.Trie() trie.set((1, 2, 3), 'kitten') trie.set((1, 2, 0), 'tricycle') trie.set((1, 2, 0, 1), 'rug') expect = read_expected('4.pickle') self.assertTrue(dictify(trie) == expect, msg="Your trie is incorrect.") self.assertEqual( any_key_stored(trie, ((1, 2, 3), (1, 2, 0), (1, 2, 0, 1))), None) t = lab.Trie() t.set((7, 8, 9), 1) t.set((7, 8, 9, 'hello'), 1) t.set((7, 8, 9, 'hello', (1, 2)), 1) t.set((1, ), 1) t.set((7, ), 1) t.set((7, 8, 9), 2) t.set((-1, -2, -3), 2) t.set(('a', ), 3) expect = read_expected('5.pickle') self.assertTrue(dictify(t) == expect, msg="Your trie is incorrect.") self.assertEqual( any_key_stored(t, ((7, 8, 9), (7, 8, 9, 'hello'), (7, 8, 9, 'hello', (1, 2)), (1, ), (7, ), (-1, -2, -3), ('a', ))), None)
def test_01_insert(self): trie = lab.Trie() trie[(1, 2, 3)] = 'kitten' trie[(1, 2, 0)] = 'tricycle' trie[(1, 2, 0, 1)] = 'rug' expect = read_expected('4.pickle') self.assertTrue(dictify(trie) == expect, msg="Your trie is incorrect.") self.assertEqual( any_key_stored(trie, ((1, 2, 3), (1, 2, 0), (1, 2, 0, 1))), None) t = lab.Trie() t[(7, 8, 9)] = 1 t[(7, 8, 9, 'hello')] = 1 t[(7, 8, 9, 'hello', (1, 2))] = 1 t[(1, )] = 1 t[(7, )] = 1 t[(7, 8, 9)] = 2 t[(-1, -2, -3)] = 2 t[('a', )] = 3 expect = read_expected('5.pickle') self.assertTrue(dictify(t) == expect, msg="Your trie is incorrect.") self.assertEqual( any_key_stored(trie, ((7, 8, 9), (7, 8, 9, 'hello'), (7, 8, 9, 'hello', (1, 2)), (1, ), (7, ), (-1, -2, -3), ('a', ))), None)
def test_05_delete(self): c = {'make': 'Toyota', 'model': 'Corolla', 'year': 2006, 'color': 'beige'} t = from_dict(c) self.assertEqual(read_expected('car.pickle'), dictify(t)) del t['color'] self.assertTrue(hasattr(iter(t), '__next__'), "__iter__ must either produce a generator or an iterator") self.assertEqual(set(t), set(c.items()) - {('color', 'beige')}) t['color'] = 'silver' # new paint job for i in t: if i[0] != 'color': self.assertIn(i, c.items()) else: self.assertEqual('silver', i[1]) t = lab.Trie() t['man'] = 'person' t['mat'] = 'object' t['mattress'] = 'thing you sleep on' t['map'] = 'pam' t['me'] = 'you' t['met'] = 'tem' t['a'] = '?' t['map'] = -1000 self.assertTrue(hasattr(iter(t), '__next__'), "__iter__ must either produce a generator or an iterator") l = sorted(list(t)) expected = [('a', '?'), ('man', 'person'), ('map', -1000), ('mat', 'object'), ('mattress', 'thing you sleep on'), ('me', 'you'), ('met', 'tem')] self.assertEqual(expected, l) del t['mat'] l = sorted(list(t)) expected = [('a', '?'), ('man', 'person'), ('map', -1000), ('mattress', 'thing you sleep on'), ('me', 'you'), ('met', 'tem')] self.assertEqual(expected, l)
def run_test(input_data): try: # build trie, insert words trie = lab.Trie() words = input_data["words"] if words == 'jules_verne': with open("resources/words.json", "r") as f: words = json.load(f) for w in set(words): trie.insert(w, words.count(w)) else: for w in words: trie.insert(w) # select subtrie if requested if "find" in input_data: trie = trie.find(input_data["find"]) # invoke method if asked to if "method" in input_data: f = getattr(trie, input_data["method"]) if "args" in input_data: result = f(*input_data["args"]) else: result = f() else: result = None # package result for verifier return ('ok', trie, result) except: return ('error', traceback.format_exc())
def from_dict(d): type_ = str for k, v in d.items(): type_ = type(k) break t = lab.Trie(type_) for k, v in d.items(): t[k] = v return t
def test_01_set(self): trie = lab.Trie() trie['cat'] = 'kitten' trie['car'] = 'tricycle' trie['carpet'] = 'rug' #print(list(trie)) expect = read_expected('1.pickle') #print(expect) self.assertTrue(dictify(trie) == expect, msg="Your trie is incorrect.") self.assertEqual(any_key_stored(trie, ('cat', 'car', 'carpet')), None) t = lab.Trie() t['a'] = 1 t['an'] = 1 t['ant'] = 1 t['anteater'] = 1 t['ants'] = 1 t['a'] = 2 t['an'] = 2 t['a'] = 3 expect = read_expected('2.pickle') self.assertTrue(dictify(t) == expect, msg="Your trie is incorrect.") self.assertEqual(any_key_stored(t, ('an', 'ant', 'anteater', 'ants')), None) with self.assertRaises(TypeError): t[(1, 2, 3)] = 20 t = lab.Trie() t['man'] = 'person' t['mat'] = 'object' t['mattress'] = 'thing you sleep on' t['map'] = 'pam' t['me'] = 'you' t['met'] = 'tem' t['a'] = '?' t['map'] = -1000 expect = read_expected('3.pickle') self.assertTrue(dictify(t) == expect, msg="Your trie is incorrect.") self.assertEqual( any_key_stored( t, ('man', 'mat', 'mattress', 'map', 'me', 'met', 'map')), None) with self.assertRaises(TypeError): t['something', ] = 'pam'
def test_01_set(self): trie = lab.Trie() trie.set('cat', 'kitten') trie.set('car', 'tricycle') trie.set('carpet', 'rug') expect = read_expected('1.pickle') self.assertTrue(dictify(trie) == expect, msg="Your trie is incorrect.") self.assertEqual(any_key_stored(trie, ('cat', 'car', 'carpet')), None) t = lab.Trie() t.set('a', 1) t.set('an', 1) t.set('ant', 1) t.set('anteater', 1) t.set('ants', 1) t.set('a', 2) t.set('an', 2) t.set('a', 3) expect = read_expected('2.pickle') self.assertTrue(dictify(t) == expect, msg="Your trie is incorrect.") self.assertEqual(any_key_stored(t, ('an', 'ant', 'anteater', 'ants')), None) with self.assertRaises(TypeError): t.set((1, 2, 3), 20) t = lab.Trie() t.set('man', 'person') t.set('mat', 'object') t.set('mattress', 'thing you sleep on') t.set('map', 'pam') t.set('me', 'you') t.set('met', 'tem') t.set('a', '?') t.set('map', -1000) expect = read_expected('3.pickle') self.assertTrue(dictify(t) == expect, msg="Your trie is incorrect.") self.assertEqual( any_key_stored( t, ('man', 'mat', 'mattress', 'map', 'me', 'met', 'map')), None) with self.assertRaises(TypeError): t.set(('something', ), 'pam')
def load_words(): global trie if trie is not None: return # load json word list, insert into trie print("LOADING CORPUS") trie = lab.Trie() with open("resources/words.json", "r") as f: words = json.load(f) for w in set(words): trie.insert(w, words.count(w))
def test_05_delete(self): c = { 'make': 'Toyota', 'model': 'Corolla', 'year': 2006, 'color': 'beige' } c = {tuple(k): v for k, v in c.items()} t = from_dict(c) self.assertEqual(read_expected('tuple_car.pickle'), dictify(t)) del t[tuple('color')] self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") self.assertEqual(set(c.items()) - {(tuple('color'), 'beige')}, set(t)) t[tuple('color')] = 'silver' # new paint job self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") for i in t: if i[0] != tuple('color'): self.assertIn(i, c.items()) else: self.assertEqual('silver', i[1]) for i in (('cat', 'dog'), (), ('ferret', ), tuple('tomato')): with self.assertRaises(KeyError): del t[i] with self.assertRaises(TypeError): del t["foo"] t = lab.Trie() t[(7, 8, 9)] = 1 t[(7, 8, 9, 'hello')] = 1 t[(7, 8, 9, 'hello', (1, 2))] = 1 t[(1, )] = 1 t[(7, )] = 1 t[(7, 8, 9)] = 2 t[(-1, -2, -3)] = 2 t[(2, )] = 3 self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") l = sorted(list(t)) expected = [((-1, -2, -3), 2), ((1, ), 1), ((2, ), 3), ((7, ), 1), ((7, 8, 9), 2), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] self.assertEqual(expected, l) del t[(7, 8, 9)] self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") l = sorted(list(t)) expected = [((-1, -2, -3), 2), ((1, ), 1), ((2, ), 3), ((7, ), 1), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] self.assertEqual(expected, l)
def test_tuple_delete(): c = { 'make': 'Toyota', 'model': 'Corolla', 'year': 2006, 'color': 'beige', 'storage space': '' } c = {tuple(k): v for k, v in c.items()} t = from_dict(c) assert dictify(t) == read_expected('tuple_car.pickle') del t[tuple('color')] assert isinstance(iter(t), types.GeneratorType), "__iter__ must produce a generator" assert set(t) == set(c.items()) - {(tuple('color'), 'beige')} t[tuple('color')] = 'silver' # new paint job assert isinstance(iter(t), types.GeneratorType), "__iter__ must produce a generator" for i in t: if i[0] != tuple('color'): assert i in c.items() else: assert i[1] == 'silver' for i in (('cat', 'dog'), (), ('ferret', ), tuple('tomato')): with pytest.raises(KeyError): del t[i] with pytest.raises(TypeError): del t["foo"] t = lab.Trie(tuple) t[(7, 8, 9)] = 1 t[(7, 8, 9, 'hello')] = 1 t[(7, 8, 9, 'hello', (1, 2))] = 1 t[(1, )] = 1 t[(7, )] = 1 t[(7, 8, 9)] = 2 t[(-1, -2, -3)] = 2 t[(2, )] = 3 assert isinstance(iter(t), types.GeneratorType), "__iter__ must produce a generator" expected = [((-1, -2, -3), 2), ((1, ), 1), ((2, ), 3), ((7, ), 1), ((7, 8, 9), 2), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] assert sorted(list(t)) == expected del t[(7, 8, 9)] assert isinstance(iter(t), types.GeneratorType), "__iter__ must produce a generator" expected = [((-1, -2, -3), 2), ((1, ), 1), ((2, ), 3), ((7, ), 1), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] assert sorted(list(t)) == expected
def test_trie_set(): trie = lab.Trie(str) trie['cat'] = 'kitten' trie['car'] = 'tricycle' trie['carpet'] = 'rug' expect = read_expected('1.pickle') assert dictify(trie) == expect, "Your trie is incorrect." assert any_key_stored(trie, ('cat', 'car', 'carpet')) is None t = lab.Trie(str) t['a'] = 1 t['an'] = 1 t['ant'] = 0 t['anteater'] = 1 t['ants'] = 1 t['a'] = 2 t['an'] = 2 t['a'] = 3 expect = read_expected('2.pickle') assert dictify(t) == expect, "Your trie is incorrect." assert any_key_stored(t, ('an', 'ant', 'anteater', 'ants')) is None with pytest.raises(TypeError): t[(1, 2, 3)] = 20 t = lab.Trie(str) t['man'] = '' t['mat'] = 'object' t['mattress'] = () t['map'] = 'pam' t['me'] = 'you' t['met'] = 'tem' t['a'] = '?' t['map'] = -1000 expect = read_expected('3.pickle') assert dictify(t) == expect, "Your trie is incorrect." assert any_key_stored( t, ('man', 'mat', 'mattress', 'map', 'me', 'met', 'map')) is None with pytest.raises(TypeError): t['something', ] = 'pam'
def test_05_delete(self): c = { 'make': 'Toyota', 'model': 'Corolla', 'year': 2006, 'color': 'beige' } t = from_dict(c) self.assertEqual(read_expected('car.pickle'), dictify(t)) del t['color'] self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") with self.assertRaises(KeyError): del t['color'] # can't delete again self.assertEqual(set(t), set(c.items()) - {('color', 'beige')}) t['color'] = 'silver' # new paint job for i in t: if i[0] != 'color': self.assertIn(i, c.items()) else: self.assertEqual('silver', i[1]) for i in ('cat', 'dog', 'ferret', 'tomato'): with self.assertRaises(KeyError): del t[i] with self.assertRaises(TypeError): del t[1, 2, 3] t = lab.Trie() t['man'] = 'person' t['mat'] = 'object' t['mattress'] = 'thing you sleep on' t['map'] = 'pam' t['me'] = 'you' t['met'] = 'tem' t['a'] = '?' t['map'] = -1000 self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") l = sorted(list(t)) expected = [('a', '?'), ('man', 'person'), ('map', -1000), ('mat', 'object'), ('mattress', 'thing you sleep on'), ('me', 'you'), ('met', 'tem')] self.assertEqual(expected, l) del t['mat'] l = sorted(list(t)) expected = [('a', '?'), ('man', 'person'), ('map', -1000), ('mattress', 'thing you sleep on'), ('me', 'you'), ('met', 'tem')] self.assertEqual(expected, l)
def test_05_delete(self): c = { 'make': 'Toyota', 'model': 'Corolla', 'year': 2006, 'color': 'beige' } c = {tuple(k): v for k, v in c.items()} t = from_dict(c) self.assertEqual(read_expected('tuple_car.pickle'), dictify(t)) del t[tuple('color')] self.assertTrue( hasattr(iter(t), '__next__'), "__iter__ must either produce a generator or an iterator") self.assertEqual(set(c.items()) - {(tuple('color'), 'beige')}, set(t)) t[tuple('color')] = 'silver' # new paint job self.assertTrue( hasattr(iter(t), '__next__'), "__iter__ must either produce a generator or an iterator") for i in t: if i[0] != tuple('color'): self.assertIn(i, c.items()) else: self.assertEqual('silver', i[1]) t = lab.Trie() t[(7, 8, 9)] = 1 t[(7, 8, 9, 'hello')] = 1 t[(7, 8, 9, 'hello', (1, 2))] = 1 t[(1, )] = 1 t[(7, )] = 1 t[(7, 8, 9)] = 2 t[(-1, -2, -3)] = 2 t[(2, )] = 3 self.assertTrue( hasattr(iter(t), '__next__'), "__iter__ must either produce a generator or an iterator") l = sorted(list(t)) expected = [((-1, -2, -3), 2), ((1, ), 1), ((2, ), 3), ((7, ), 1), ((7, 8, 9), 2), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] self.assertEqual(expected, l) del t[(7, 8, 9)] self.assertTrue( hasattr(iter(t), '__next__'), "__iter__ must either produce a generator or an iterator") l = sorted(list(t)) expected = [((-1, -2, -3), 2), ((1, ), 1), ((2, ), 3), ((7, ), 1), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] self.assertEqual(expected, l)
def test_04_iter(self): t = lab.Trie() t['man'] = 'person' t['mat'] = 'object' t['mattress'] = 'thing you sleep on' t['map'] = 'pam' t['me'] = 'you' t['met'] = 'tem' t['a'] = '?' t['map'] = -1000 self.assertTrue(hasattr(iter(t), '__next__'), "__iter__ must either produce a generator or an iterator") l = sorted(list(t)) expected = [('a', '?'), ('man', 'person'), ('map', -1000), ('mat', 'object'), ('mattress', 'thing you sleep on'), ('me', 'you'), ('met', 'tem')] self.assertEqual(expected, l)
def test_tuple_set(): trie = lab.Trie(tuple) trie[(1, 2, 3)] = 'kitten' trie[(1, 2, 0)] = 'tricycle' trie[(1, 2, 0, 1)] = 'rug' expect = read_expected('4.pickle') assert dictify(trie) == expect, "Your trie is incorrect." assert any_key_stored(trie, ((1, 2, 3), (1, 2, 0), (1, 2, 0, 1))) is None t = lab.Trie(tuple) t[(7, 8, 9)] = 1 t[(7, 8, 9, 'hello')] = 1 t[(7, 8, 9, 'hello', (1, 2))] = 1 t[(1, )] = 0 t[(7, )] = 1 t[(7, 8, 9)] = 2 t[(-1, -2, -3)] = 2 t[('a', )] = 3 expect = read_expected('5.pickle') assert dictify(t) == expect, "Your trie is incorrect." res = any_key_stored(t, ((7, 8, 9), (7, 8, 9, 'hello'), (7, 8, 9, 'hello', (1, 2)), (1, ), (7, ), (-1, -2, -3), ('a', ))) assert res is None
def test_04_items(self): t = lab.Trie() t.set('man', 'person') t.set('mat', 'object') t.set('mattress', 'thing you sleep on') t.set('map', 'pam') t.set('me', 'you') t.set('met', 'tem') t.set('a', '?') t.set('map', -1000) l = sorted(t.items()) expected = [('a', '?'), ('man', 'person'), ('map', -1000), ('mat', 'object'), ('mattress', 'thing you sleep on'), ('me', 'you'), ('met', 'tem')] self.assertEqual(l, expected)
def test_04_items(self): t = lab.Trie() t.set((7, 8, 9), 1) t.set((7, 8, 9, 'hello'), 1) t.set((7, 8, 9, 'hello', (1, 2)), 1) t.set((1, ), 1) t.set((7, ), 1) t.set((7, 8, 9), 2) t.set((-1, -2, -3), 2) t.set((2, ), 3) l = sorted(t.items()) expected = [((-1, -2, -3), 2), ((1, ), 1), ((2, ), 3), ((7, ), 1), ((7, 8, 9), 2), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] self.assertEqual(l, expected)
def test_04_iter(self): t = lab.Trie() t[(7, 8, 9)] = 1 t[(7, 8, 9, 'hello')] = 1 t[(7, 8, 9, 'hello', (1, 2))] = 1 t[(1, )] = 1 t[(7, )] = 1 t[(7, 8, 9)] = 2 t[(-1, -2, -3)] = 2 t[(2, )] = 3 self.assertTrue(hasattr(iter(t), '__next__'), "__iter__ must either produce a generator or an iterator") l = sorted(list(t)) expected = [((-1, -2, -3), 2), ((1,), 1), ((2,), 3), ((7,), 1), ((7, 8, 9), 2), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] self.assertEqual(expected, l)
def test_04_iter(self): t = lab.Trie() t[(7, 8, 9)] = 1 t[(7, 8, 9, 'hello')] = 1 t[(7, 8, 9, 'hello', (1, 2))] = 1 t[(1, )] = 1 t[(7, )] = 1 t[(7, 8, 9)] = 2 t[(-1, -2, -3)] = 2 t[(2, )] = 3 self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") l = sorted(list(t)) expected = [((-1, -2, -3), 2), ((1,), 1), ((2,), 3), ((7,), 1), ((7, 8, 9), 2), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] self.assertEqual(expected, l)
def test_04_iter(self): t = lab.Trie() t['man'] = 'person' t['mat'] = 'object' t['mattress'] = 'thing you sleep on' t['map'] = 'pam' t['me'] = 'you' t['met'] = 'tem' t['a'] = '?' t['map'] = -1000 self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") l = sorted(list(t)) expected = [('a', '?'), ('man', 'person'), ('map', -1000), ('mat', 'object'), ('mattress', 'thing you sleep on'), ('me', 'you'), ('met', 'tem')] self.assertEqual(expected, l)
def test_05_delete(self): c = { 'make': 'Toyota', 'model': 'Corolla', 'year': 2006, 'color': 'beige' } c = {tuple(k): v for k, v in c.items()} t = from_dict(c) self.assertEqual(dictify(t), read_expected('tuple_car.pickle')) del t[tuple('color')] self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") for i in t: self.assertIn(i, c.items()) self.assertTrue(i[0] != tuple('color')) t[tuple('color')] = 'silver' # new paint job self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") for i in t: if i[0] != tuple('color'): self.assertIn(i, c.items()) else: self.assertEqual(i[1], 'silver') t = lab.Trie() t[(7, 8, 9)] = 1 t[(7, 8, 9, 'hello')] = 1 t[(7, 8, 9, 'hello', (1, 2))] = 1 t[(1, )] = 1 t[(7, )] = 1 t[(7, 8, 9)] = 2 t[(-1, -2, -3)] = 2 t[(2, )] = 3 self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") l = sorted(list(t)) expected = [((-1, -2, -3), 2), ((1, ), 1), ((2, ), 3), ((7, ), 1), ((7, 8, 9), 2), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] self.assertEqual(l, expected) del t[(7, 8, 9)] self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") l = sorted(list(t)) expected = [((-1, -2, -3), 2), ((1, ), 1), ((2, ), 3), ((7, ), 1), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] self.assertEqual(l, expected)
def test_trie_delete(): c = { 'make': 'Toyota', 'model': 'Corolla', 'year': 2006, 'color': 'beige', 'storage space': '' } t = from_dict(c) assert dictify(t) == read_expected('car.pickle') del t['color'] assert isinstance(iter(t), types.GeneratorType), "__iter__ must produce a generator" with pytest.raises(KeyError): del t['color'] # can't delete again assert set(t) == set(c.items()) - {('color', 'beige')} t['color'] = 'silver' # new paint job for i in t: if i[0] != 'color': assert i in c.items() else: assert i[1] == 'silver' for i in ('cat', 'dog', 'ferret', 'tomato'): with pytest.raises(KeyError): del t[i] with pytest.raises(TypeError): del t[1, 2, 3] t = lab.Trie(str) t['man'] = '' t['mat'] = 'object' t['mattress'] = () t['map'] = 'pam' t['me'] = 'you' t['met'] = 'tem' t['a'] = '?' t['map'] = -1000 assert isinstance(iter(t), types.GeneratorType), "__iter__ must produce a generator" expected = [('a', '?'), ('man', ''), ('map', -1000), ('mat', 'object'), ('mattress', ()), ('me', 'you'), ('met', 'tem')] assert sorted(list(t)) == expected del t['mat'] expected = [('a', '?'), ('man', ''), ('map', -1000), ('mattress', ()), ('me', 'you'), ('met', 'tem')] assert sorted(list(t)) == expected
def test_iter(): t = lab.Trie() t['man'] = 'person' t['mat'] = 'object' t['mattress'] = 'thing you sleep on' t['map'] = 'pam' t['me'] = 'you' t['met'] = 'tem' t['a'] = '?' t['map'] = -1000 assert isinstance(iter(t), types.GeneratorType), "__iter__ must produce a generator" expected = [('a', '?'), ('man', 'person'), ('map', -1000), ('mat', 'object'), ('mattress', 'thing you sleep on'), ('me', 'you'), ('met', 'tem')] assert sorted(list(t)) == expected
def test_tuple_iter(): t = lab.Trie(tuple) t[(7, 8, 9)] = 1 t[(7, 8, 9, 'hello')] = 1 t[(7, 8, 9, 'hello', (1, 2))] = 1 t[(1, )] = 0 t[(7, )] = 1 t[(7, 8, 9)] = 2 t[(-1, -2, -3)] = 2 t[(2, )] = 3 assert isinstance(iter(t), types.GeneratorType), "__iter__ must produce a generator" expected = [((-1, -2, -3), 2), ((1, ), 0), ((2, ), 3), ((7, ), 1), ((7, 8, 9), 2), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] assert sorted(list(t)) == expected
def test_trie_iter(): t = lab.Trie(str) t['man'] = '' t['mat'] = 'object' t['mattress'] = () t['map'] = 'pam' t['me'] = 'you' t['met'] = 'tem' t['a'] = '?' t['map'] = -1000 assert isinstance(iter(t), types.GeneratorType), "__iter__ must produce a generator" expected = [('a', '?'), ('man', ''), ('map', -1000), ('mat', 'object'), ('mattress', ()), ('me', 'you'), ('met', 'tem')] print('result', sorted(list(t)), len(list(t))) print('expected', expected, len(expected)) assert sorted(list(t)) == expected
def test_05_delete(self): c = { 'make': 'Toyota', 'model': 'Corolla', 'year': 2006, 'color': 'beige' } t = from_dict(c) self.assertEqual(dictify(t), read_expected('car.pickle')) del t['color'] self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") for i in t: self.assertIn(i, c.items()) self.assertTrue(i[0] != 'color') t['color'] = 'silver' # new paint job self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") for i in t: if i[0] != 'color': self.assertIn(i, c.items()) else: self.assertEqual(i[1], 'silver') t = lab.Trie() t['man'] = 'person' t['mat'] = 'object' t['mattress'] = 'thing you sleep on' t['map'] = 'pam' t['me'] = 'you' t['met'] = 'tem' t['a'] = '?' t['map'] = -1000 self.assertIsInstance(iter(t), types.GeneratorType, "__iter__ must produce a generator") l = sorted(list(t)) expected = [('a', '?'), ('man', 'person'), ('map', -1000), ('mat', 'object'), ('mattress', 'thing you sleep on'), ('me', 'you'), ('met', 'tem')] self.assertEqual(l, expected) del t['mat'] l = sorted(list(t)) expected = [('a', '?'), ('man', 'person'), ('map', -1000), ('mattress', 'thing you sleep on'), ('me', 'you'), ('met', 'tem')] self.assertEqual(l, expected)
def setup_trie(words=None): # build an empty tree trie = lab.Trie() # insert words from corpus or from supplied list if words == 'jules_verne': with open(os.path.join(TEST_DIRECTORY, 'testing_data', 'words.json')) as f: words = json.load(f) # pre-compute frequency to avoid a zillion # separate inserts for each word in corpus for w in set(words): trie.insert(w, words.count(w)) else: for w in words: trie.insert(w) # okay, our work here is done... return trie
def test_05_delete(self): c = { 'make': 'Toyota', 'model': 'Corolla', 'year': 2006, 'color': 'beige' } c = {tuple(k): v for k, v in c.items()} t = from_dict(c) self.assertEqual(dictify(t), read_expected('tuple_car.pickle')) t.delete(tuple('color')) self.assertEqual(set(t.items()), set(c.items()) - {(tuple('color'), 'beige')}) t.set(tuple('color'), 'silver') # new paint job for i in t.items(): if i[0] != tuple('color'): self.assertIn(i, c.items()) else: self.assertEqual(i[1], 'silver') t = lab.Trie() t.set((7, 8, 9), 1) t.set((7, 8, 9, 'hello'), 1) t.set((7, 8, 9, 'hello', (1, 2)), 1) t.set((1, ), 1) t.set((7, ), 1) t.set((7, 8, 9), 2) t.set((-1, -2, -3), 2) t.set((2, ), 3) l = sorted(t.items()) expected = [((-1, -2, -3), 2), ((1, ), 1), ((2, ), 3), ((7, ), 1), ((7, 8, 9), 2), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] self.assertEqual(l, expected) t.delete((7, 8, 9)) l = sorted(t.items()) expected = [((-1, -2, -3), 2), ((1, ), 1), ((2, ), 3), ((7, ), 1), ((7, 8, 9, 'hello'), 1), ((7, 8, 9, 'hello', (1, 2)), 1)] self.assertEqual(l, expected)
def test_05_delete(self): c = { 'make': 'Toyota', 'model': 'Corolla', 'year': 2006, 'color': 'beige' } t = from_dict(c) self.assertEqual(dictify(t), read_expected('car.pickle')) t.delete('color') self.assertEqual(set(t.items()), set(c.items()) - {('color', 'beige')}) t.set('color', 'silver') # new paint job for i in t.items(): if i[0] != 'color': self.assertIn(i, c.items()) else: self.assertEqual(i[1], 'silver') t = lab.Trie() t.set('man', 'person') t.set('mat', 'object') t.set('mattress', 'thing you sleep on') t.set('map', 'pam') t.set('me', 'you') t.set('met', 'tem') t.set('a', '?') t.set('map', -1000) l = sorted(t.items()) expected = [('a', '?'), ('man', 'person'), ('map', -1000), ('mat', 'object'), ('mattress', 'thing you sleep on'), ('me', 'you'), ('met', 'tem')] self.assertEqual(l, expected) t.delete('mat') l = sorted(t.items()) expected = [('a', '?'), ('man', 'person'), ('map', -1000), ('mattress', 'thing you sleep on'), ('me', 'you'), ('met', 'tem')] self.assertEqual(l, expected)