Exemplo n.º 1
0
class TestBasicTable(unittest.TestCase):
    """Basic-coverage tests."""

    def setUp(self):
        self.stmap = SortedTableMap()

    def test_init(self):
        self.assertIsInstance(self.stmap, SortedTableMap)

    def test_len(self):
        self.assertEqual(len(self.stmap), 0)
        for i in range(5):
            self.stmap[i] = i
        self.assertEqual(len(self.stmap), 5)

    def test_setitem_getitem(self):
        test_key = "key"
        test_value = "value"
        with self.assertRaises(KeyError):
            returned = self.stmap[test_key] # not in the table yet
        self.stmap[test_key] = test_value
        self.assertEqual(self.stmap[test_key], test_value)
        # cover the overwrite-existing case in __setitem__:
        updated_value = "updated value"
        self.stmap[test_key] = updated_value
        self.assertEqual(self.stmap[test_key], updated_value)

    def test_delitem(self):
        test_key = "key"
        test_value = "value"
        # Should raise key error if not in table
        with self.assertRaises(KeyError):
            del self.stmap[test_key]
        self.stmap[test_key] = test_value
        del self.stmap[test_key]
        self.assertEqual(len(self.stmap), 0)

    def test_iter(self):
        for i in range(5):
            self.stmap[i] = f"value for key {i}"
        assert len(self.stmap) == 5
        i = 0
        for key in self.stmap.keys():
            self.assertEqual(key, i)
            i += 1

    def test_reversed(self):
        for i in range(4, -1, -1):
            self.stmap[i] = f"value for key {i}"
        assert len(self.stmap) == 5
        i = 4
        for key in reversed(self.stmap):
            self.assertEqual(key, i)
            i -= 1