1 2from PyObjCTools.TestSupport import * 3from PyObjCTest.test_object_property import OCObserve 4import objc 5 6NSObject = objc.lookUpClass('NSObject') 7 8class TestDictPropertyHelper (NSObject): 9 aDict = objc.dict_property() 10 11class TestDictProperty (TestCase): 12 # objc.dict_property is currently just an object_property with a default value 13 14 def testDefault(self): 15 observer = OCObserve.alloc().init() 16 17 o = TestDictPropertyHelper.alloc().init() 18 observer.register(o, 'aDict') 19 try: 20 self.assertEquals(len(o.aDict), 0) 21 self.assertEquals(o.aDict, {}) 22 self.assertEquals(len(observer.values), 0) 23 24 o.aDict['key'] = 42 25 self.assertEquals(len(observer.values), 0) 26 27 observer.register(o, 'aDict.key') 28 29 o.aDict['key'] = 43 30 self.assertEquals(len(observer.values), 1) 31 32 self.assertNotIn('indexes', observer.values[-1][-1]) 33 self.assertEquals(observer.values[-1][-1]['old'], 42) 34 self.assertEquals(observer.values[-1][-1]['new'], 43) 35 36 del o.aDict['key'] 37 38 self.assertEquals(len(observer.values), 2) 39 self.assertNotIn('indexes', observer.values[-1][-1]) 40 self.assertEquals(observer.values[-1][-1]['old'], 43) 41 self.assertEquals(observer.values[-1][-1]['new'], None) 42 43 finally: 44 observer.unregister(o, 'aDict') 45 observer.unregister(o, 'aDict.key') 46 47if __name__ == "__main__": 48 main() 49