-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathinterface_test.py
More file actions
39 lines (28 loc) · 1.24 KB
/
interface_test.py
File metadata and controls
39 lines (28 loc) · 1.24 KB
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
import unittest
from dict32_reimplementation import PyDictReimplementation
from hash_chapter3_class_impl import AlmostPythonDictImplementationRecycling, AlmostPythonDictImplementationNoRecycling
from js_reimplementation_interface import Dict32JsImpl, AlmostPythonDictRecyclingJsImpl, AlmostPythonDictNoRecyclingJsImpl
class Interface(unittest.TestCase):
def test_all(self):
self.do_simple_test_single_class(PyDictReimplementation)
self.do_simple_test_single_class(AlmostPythonDictImplementationRecycling)
self.do_simple_test_single_class(AlmostPythonDictImplementationNoRecycling)
self.do_simple_test_single_class(Dict32JsImpl)
self.do_simple_test_single_class(AlmostPythonDictRecyclingJsImpl)
self.do_simple_test_single_class(AlmostPythonDictNoRecyclingJsImpl)
def do_simple_test_single_class(self, klass):
d = klass()
for i in range(100):
d[i] = i
self.assertEqual(d[i], i)
for i in range(50):
del d[i]
with self.assertRaises(KeyError):
d[i]
for i in range(200):
d[i] = i + 1
self.assertEqual(d[i], i + 1)
def main():
unittest.main()
if __name__ == "__main__":
main()