예제 #1
0
class TestTrie(unittest.TestCase):

    def setUp(self):
        self.corpus = ['black',
                       'blue',
                       'orange',
                       'orangered',
                       'green',
                       'aqua marine']
        self.fixture = Trie()
        for i in self.corpus:
            self.fixture[i] = True

    def test_len(self):
        assert len(self.fixture) == len(self.corpus)

    def test_path_exists(self):
        for i in self.corpus:
            assert self.fixture._path_exists(i)

        assert not self.fixture._path_exists('not a color')

    def test_delitem(self):
        key = self.corpus[0]
        assert self.fixture[key] == True
        del self.fixture[key]
        self.assertRaises(KeyError, self.fixture.__getitem__, key)

        assert not self.fixture._path_exists(key[:-1])

    def test_getitem(self):
        for i in self.corpus:
            assert self.fixture[i] == True
        self.assertRaises(KeyError, self.fixture.__getitem__, 'not a color')
    
    def test_setitem(self):
        self.assertRaises(KeyError, self.fixture.__setitem__, '', None)

    def test_contains(self):
        for i in self.corpus:
            assert i in self.fixture

        assert 'not a color' not in self.fixture

    def test_iterator(self):
        collected_keys = set([k for k in self.fixture])
        assert collected_keys == set(self.corpus)

        for k in self.fixture:
            assert self.fixture[k] == True

    def test_iterkeys(self):
        keys = set()
        for i in self.fixture.iterkeys():
            keys.add(i)
        assert keys == set(self.corpus)