3 # © Copyright 2021-2022, Scott Gasch
5 """dict_utils unittest."""
9 import dict_utils as du
10 import unittest_utils # Needed for --unittests_ignore_perf flag
13 class TestDictUtils(unittest.TestCase):
14 def test_init_or_inc(self):
16 du.init_or_inc(d, 'a')
17 du.init_or_inc(d, 'b')
18 du.init_or_inc(d, 'a')
19 du.init_or_inc(d, 'b')
20 du.init_or_inc(d, 'c')
21 du.init_or_inc(d, 'c')
22 du.init_or_inc(d, 'd')
23 du.init_or_inc(d, 'e')
24 du.init_or_inc(d, 'a')
25 du.init_or_inc(d, 'b')
26 e = {'a': 3, 'b': 3, 'c': 2, 'd': 1, 'e': 1}
27 self.assertEqual(d, e)
29 def test_shard_coalesce(self):
30 d = {'a': 3, 'b': 3, 'c': 2, 'd': 1, 'e': 1}
31 shards = du.shard(d, 2)
32 merged = du.coalesce(shards)
33 self.assertEqual(d, merged)
35 def test_item_with_max_value(self):
36 d = {'a': 4, 'b': 3, 'c': 2, 'd': 1, 'e': 1}
37 self.assertEqual('a', du.item_with_max_value(d)[0])
38 self.assertEqual(4, du.item_with_max_value(d)[1])
39 self.assertEqual('a', du.key_with_max_value(d))
40 self.assertEqual(4, du.max_value(d))
42 def test_item_with_min_value(self):
43 d = {'a': 4, 'b': 3, 'c': 2, 'd': 1, 'e': 0}
44 self.assertEqual('e', du.item_with_min_value(d)[0])
45 self.assertEqual(0, du.item_with_min_value(d)[1])
46 self.assertEqual('e', du.key_with_min_value(d))
47 self.assertEqual(0, du.min_value(d))
49 def test_min_max_key(self):
50 d = {'a': 4, 'b': 3, 'c': 2, 'd': 1, 'e': 0}
51 self.assertEqual('a', du.min_key(d))
52 self.assertEqual('e', du.max_key(d))
55 if __name__ == '__main__':