Persistent state
[python_utils.git] / tests / dict_utils_test.py
1 #!/usr/bin/env python3
2
3 import unittest
4
5 import dict_utils as du
6
7
8 class TestDictUtils(unittest.TestCase):
9
10     def test_init_or_inc(self):
11         d = {}
12         du.init_or_inc(d, 'a')
13         du.init_or_inc(d, 'b')
14         du.init_or_inc(d, 'a')
15         du.init_or_inc(d, 'b')
16         du.init_or_inc(d, 'c')
17         du.init_or_inc(d, 'c')
18         du.init_or_inc(d, 'd')
19         du.init_or_inc(d, 'e')
20         du.init_or_inc(d, 'a')
21         du.init_or_inc(d, 'b')
22         e = {
23             'a': 3, 'b': 3, 'c': 2, 'd': 1, 'e': 1
24         }
25         self.assertEqual(d, e)
26
27     def test_shard_coalesce(self):
28         d = {
29             'a': 3, 'b': 3, 'c': 2, 'd': 1, 'e': 1
30         }
31         shards = du.shard(d, 2)
32         merged = du.coalesce(shards)
33         self.assertEqual(d, merged)
34
35     def test_item_with_max_value(self):
36         d = {
37             'a': 4, 'b': 3, 'c': 2, 'd': 1, 'e': 1
38         }
39         self.assertEqual('a', du.item_with_max_value(d)[0])
40         self.assertEqual(4, du.item_with_max_value(d)[1])
41         self.assertEqual('a', du.key_with_max_value(d))
42         self.assertEqual(4, du.max_value(d))
43
44     def test_item_with_min_value(self):
45         d = {
46             'a': 4, 'b': 3, 'c': 2, 'd': 1, 'e': 0
47         }
48         self.assertEqual('e', du.item_with_min_value(d)[0])
49         self.assertEqual(0, du.item_with_min_value(d)[1])
50         self.assertEqual('e', du.key_with_min_value(d))
51         self.assertEqual(0, du.min_value(d))
52
53     def test_min_max_key(self):
54         d = {
55             'a': 4, 'b': 3, 'c': 2, 'd': 1, 'e': 0
56         }
57         self.assertEqual('a', du.min_key(d))
58         self.assertEqual('e', du.max_key(d))
59
60
61 if __name__ == '__main__':
62     unittest.main()