1""" 2test.test_dictview from python2.7 adapted 3for testing NSMutableDictionary 4""" 5from PyObjCTools.TestSupport import * 6 7import objc 8NSDictionary = objc.lookUpClass('NSDictionary') 9NSMutableDictionary = objc.lookUpClass('NSMutableDictionary') 10 11 12import unittest 13 14class DictSetTest(TestCase): 15 16 def test_constructors_not_callable(self): pass 17 18 def test_dict_keys(self): 19 d = NSMutableDictionary({1: 10, "a": "ABC"}) 20 keys = d.viewkeys() 21 self.assertEqual(len(keys), 2) 22 self.assertEqual(set(keys), set([1, "a"])) 23 self.assertEqual(keys, set([1, "a"])) 24 self.assertNotEqual(keys, set([1, "a", "b"])) 25 self.assertNotEqual(keys, set([1, "b"])) 26 self.assertNotEqual(keys, set([1])) 27 self.assertNotEqual(keys, 42) 28 self.assertIn(1, keys) 29 self.assertIn("a", keys) 30 self.assertNotIn(10, keys) 31 self.assertNotIn("Z", keys) 32 self.assertEqual(d.viewkeys(), d.viewkeys()) 33 e = NSMutableDictionary({1: 11, "a": "def"}) 34 self.assertEqual(d.viewkeys(), e.viewkeys()) 35 del e["a"] 36 self.assertNotEqual(d.viewkeys(), e.viewkeys()) 37 38 def test_dict_items(self): 39 d = NSMutableDictionary({1: 10, "a": "ABC"}) 40 items = d.viewitems() 41 self.assertEqual(len(items), 2) 42 self.assertEqual(set(items), set([(1, 10), ("a", "ABC")])) 43 self.assertEqual(items, set([(1, 10), ("a", "ABC")])) 44 self.assertNotEqual(items, set([(1, 10), ("a", "ABC"), "junk"])) 45 self.assertNotEqual(items, set([(1, 10), ("a", "def")])) 46 self.assertNotEqual(items, set([(1, 10)])) 47 self.assertNotEqual(items, 42) 48 self.assertIn((1, 10), items) 49 self.assertIn(("a", "ABC"), items) 50 self.assertNotIn((1, 11), items) 51 self.assertNotIn(1, items) 52 self.assertNotIn((), items) 53 self.assertNotIn((1,), items) 54 self.assertNotIn((1, 2, 3), items) 55 self.assertEqual(d.viewitems(), d.viewitems()) 56 e = d.mutableCopy() 57 self.assertEqual(d.viewitems(), e.viewitems()) 58 e["a"] = "def" 59 self.assertNotEqual(d.viewitems(), e.viewitems()) 60 61 def test_dict_mixed_keys_items(self): 62 d = NSMutableDictionary({(1, 1): 11, (2, 2): 22}) 63 e = NSMutableDictionary({1: 1, 2: 2}) 64 self.assertEqual(d.viewkeys(), e.viewitems()) 65 self.assertNotEqual(d.viewitems(), e.viewkeys()) 66 67 def test_dict_values(self): 68 d = NSMutableDictionary({1: 10, "a": "ABC"}) 69 values = d.viewvalues() 70 self.assertEqual(set(values), set([10, "ABC"])) 71 self.assertEqual(len(values), 2) 72 73 def test_dict_repr(self): pass 74 75 def test_keys_set_operations(self): 76 d1 = NSMutableDictionary({u'a': 1, u'b': 2}) 77 d2 = NSMutableDictionary({u'b': 3, u'c': 2}) 78 d3 = NSMutableDictionary({u'd': 4, u'e': 5}) 79 self.assertEqual(d1.viewkeys() & d1.viewkeys(), set((u'a', u'b'))) 80 self.assertEqual(d1.viewkeys() & d2.viewkeys(), set((u'b'))) 81 self.assertEqual(d1.viewkeys() & d3.viewkeys(), set()) 82 self.assertEqual(d1.viewkeys() & set(d1.viewkeys()), set((u'a', u'b'))) 83 self.assertEqual(d1.viewkeys() & set(d2.viewkeys()), set((u'b'))) 84 self.assertEqual(d1.viewkeys() & set(d3.viewkeys()), set()) 85 86 self.assertEqual(d1.viewkeys() | d1.viewkeys(), set((u'a', u'b'))) 87 self.assertEqual(d1.viewkeys() | d2.viewkeys(), set((u'a', u'b', u'c'))) 88 self.assertEqual(d1.viewkeys() | d3.viewkeys(), set((u'a', u'b', u'd', u'e'))) 89 self.assertEqual(d1.viewkeys() | set(d1.viewkeys()), set((u'a', u'b'))) 90 self.assertEqual(d1.viewkeys() | set(d2.viewkeys()), set((u'a', u'b', u'c'))) 91 self.assertEqual(d1.viewkeys() | set(d3.viewkeys()), 92 set((u'a', u'b', u'd', u'e'))) 93 94 self.assertEqual(d1.viewkeys() ^ d1.viewkeys(), set()) 95 self.assertEqual(d1.viewkeys() ^ d2.viewkeys(), set((u'a', u'c'))) 96 self.assertEqual(d1.viewkeys() ^ d3.viewkeys(), set((u'a', u'b', u'd', u'e'))) 97 self.assertEqual(d1.viewkeys() ^ set(d1.viewkeys()), set()) 98 self.assertEqual(d1.viewkeys() ^ set(d2.viewkeys()), set((u'a', u'c'))) 99 self.assertEqual(d1.viewkeys() ^ set(d3.viewkeys()), 100 set((u'a', u'b', u'd', u'e'))) 101 102 def test_items_set_operations(self): 103 d1 = NSMutableDictionary({u'a': 1, u'b': 2}) 104 d2 = NSMutableDictionary({u'a': 2, u'b': 2}) 105 d3 = NSMutableDictionary({u'd': 4, u'e': 5}) 106 self.assertEqual( 107 d1.viewitems() & d1.viewitems(), set(((u'a', 1), (u'b', 2)))) 108 self.assertEqual(d1.viewitems() & d2.viewitems(), set(((u'b', 2),))) 109 self.assertEqual(d1.viewitems() & d3.viewitems(), set()) 110 self.assertEqual(d1.viewitems() & set(d1.viewitems()), 111 set(((u'a', 1), (u'b', 2)))) 112 self.assertEqual(d1.viewitems() & set(d2.viewitems()), set(((u'b', 2),))) 113 self.assertEqual(d1.viewitems() & set(d3.viewitems()), set()) 114 115 self.assertEqual(d1.viewitems() | d1.viewitems(), 116 set(((u'a', 1), (u'b', 2)))) 117 self.assertEqual(d1.viewitems() | d2.viewitems(), 118 set(((u'a', 1), (u'a', 2), (u'b', 2)))) 119 self.assertEqual(d1.viewitems() | d3.viewitems(), 120 set(((u'a', 1), (u'b', 2), (u'd', 4), (u'e', 5)))) 121 self.assertEqual(d1.viewitems() | set(d1.viewitems()), 122 set(((u'a', 1), (u'b', 2)))) 123 self.assertEqual(d1.viewitems() | set(d2.viewitems()), 124 set(((u'a', 1), (u'a', 2), (u'b', 2)))) 125 self.assertEqual(d1.viewitems() | set(d3.viewitems()), 126 set(((u'a', 1), (u'b', 2), (u'd', 4), (u'e', 5)))) 127 128 self.assertEqual(d1.viewitems() ^ d1.viewitems(), set()) 129 self.assertEqual(d1.viewitems() ^ d2.viewitems(), 130 set(((u'a', 1), (u'a', 2)))) 131 self.assertEqual(d1.viewitems() ^ d3.viewitems(), 132 set(((u'a', 1), (u'b', 2), (u'd', 4), (u'e', 5)))) 133 134 135 136 137if __name__ == "__main__": 138 main() 139