Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
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())
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
    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'
Ejemplo n.º 8
0
    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')
Ejemplo n.º 9
0
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))
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
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
Ejemplo n.º 12
0
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'
Ejemplo n.º 13
0
    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)
Ejemplo n.º 14
0
    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)
Ejemplo n.º 15
0
 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)
Ejemplo n.º 16
0
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
Ejemplo n.º 17
0
 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)
Ejemplo n.º 18
0
 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)
Ejemplo n.º 19
0
 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)
Ejemplo n.º 20
0
 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)
Ejemplo n.º 21
0
 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)
Ejemplo n.º 22
0
    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)
Ejemplo n.º 23
0
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
Ejemplo n.º 24
0
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
Ejemplo n.º 25
0
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
Ejemplo n.º 26
0
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
Ejemplo n.º 27
0
    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)
Ejemplo n.º 28
0
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
Ejemplo n.º 29
0
    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)
Ejemplo n.º 30
0
    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)