Adds optional code coverage reporting to run_tests.sh.
[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 import unittest_utils    # Needed for --unittests_ignore_perf flag
7
8
9 class TestDictUtils(unittest.TestCase):
10
11     def test_init_or_inc(self):
12         d = {}
13         du.init_or_inc(d, 'a')
14         du.init_or_inc(d, 'b')
15         du.init_or_inc(d, 'a')
16         du.init_or_inc(d, 'b')
17         du.init_or_inc(d, 'c')
18         du.init_or_inc(d, 'c')
19         du.init_or_inc(d, 'd')
20         du.init_or_inc(d, 'e')
21         du.init_or_inc(d, 'a')
22         du.init_or_inc(d, 'b')
23         e = {
24             'a': 3, 'b': 3, 'c': 2, 'd': 1, 'e': 1
25         }
26         self.assertEqual(d, e)
27
28     def test_shard_coalesce(self):
29         d = {
30             'a': 3, 'b': 3, 'c': 2, 'd': 1, 'e': 1
31         }
32         shards = du.shard(d, 2)
33         merged = du.coalesce(shards)
34         self.assertEqual(d, merged)
35
36     def test_item_with_max_value(self):
37         d = {
38             'a': 4, 'b': 3, 'c': 2, 'd': 1, 'e': 1
39         }
40         self.assertEqual('a', du.item_with_max_value(d)[0])
41         self.assertEqual(4, du.item_with_max_value(d)[1])
42         self.assertEqual('a', du.key_with_max_value(d))
43         self.assertEqual(4, du.max_value(d))
44
45     def test_item_with_min_value(self):
46         d = {
47             'a': 4, 'b': 3, 'c': 2, 'd': 1, 'e': 0
48         }
49         self.assertEqual('e', du.item_with_min_value(d)[0])
50         self.assertEqual(0, du.item_with_min_value(d)[1])
51         self.assertEqual('e', du.key_with_min_value(d))
52         self.assertEqual(0, du.min_value(d))
53
54     def test_min_max_key(self):
55         d = {
56             'a': 4, 'b': 3, 'c': 2, 'd': 1, 'e': 0
57         }
58         self.assertEqual('a', du.min_key(d))
59         self.assertEqual('e', du.max_key(d))
60
61
62 if __name__ == '__main__':
63     unittest.main()