-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathtest_dict_interface.py
101 lines (82 loc) · 2.92 KB
/
test_dict_interface.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import pysos
import unittest
class TestDictMethods(unittest.TestCase):
def setUp(self):
self.db = pysos.Dict("temp/dict-interface.sos")
self.db.clear()
def tearDown(self):
self.db.close()
def test_list_of_keys(self):
self.db["key1"] = "value1"
self.db["key2"] = "value2"
assert set(list(self.db)) == {"key1", "key2"}
assert set(self.db.keys()) == {"key1", "key2"}
def test_length_is_the_number_of_elements(self):
assert len(self.db) == 0
self.db["key1"] = "value1"
assert len(self.db) == 1
self.db["key2"] = "value2"
assert len(self.db) == 2
self.db.clear()
assert len(self.db) == 0
def test_values_can_be_set_and_get(self):
self.db["key"] = "value"
assert self.db["key"] == "value"
with self.assertRaises(KeyError):
self.db["missing"]
def test_delete_element_from_dict(self):
self.db["key"] = "value"
del self.db["key"]
with self.assertRaises(KeyError):
self.db["key"]
def test_in_operator(self):
self.db["key"] = "value"
assert "key" in self.db
assert "missing" not in self.db
def test_iter_function(self):
self.db["key1"] = "value1"
self.db["key2"] = "value2"
assert {"key1", "key2"} == set(iter(self.db))
def test_empty_dict_is_falsy(self):
assert not self.db
self.db["key"] = "value"
assert self.db
def test_clear_method(self):
self.db["key"] = "value"
assert self.db
self.db.clear()
assert not self.db
def test_get_method(self):
self.db["key"] = "value"
assert self.db.get("key", "missing") == "value"
assert self.db.get("key2", "missing") == "missing"
def test_items_method(self):
self.db["key1"] = "value1"
self.db["key2"] = "value2"
other_dict = {}
for key, value in self.db.items():
other_dict[key] = value
assert other_dict == self.db
def test_pop_method(self):
self.db["key"] = "value"
assert self.db.pop("key") == "value"
assert "key" not in self.db
assert self.db.pop("key", "default") == "default"
with self.assertRaises(KeyError):
self.db.pop("key")
def test_setdefault_method(self):
self.db.setdefault("key", "default")
assert self.db["key"] == "default"
self.db["key2"] = "value"
self.db.setdefault("key2", "default")
assert self.db["key2"] == "value"
def test_update_method(self):
reference_dict = {"key1": "value1", "key2": "value2"}
self.db.update(reference_dict)
assert self.db == reference_dict
def test_values_method(self):
self.db["key1"] = "value1"
self.db["key2"] = "value2"
assert set(self.db.values()) == {"value1", "value2"}
if __name__ == "__main__":
unittest.main()