1""" 2Helper module for KeyValue tests 3""" 4from PyObjCTest.testbndl import PyObjCTest_KVBaseClass, PyObjCTest_KVPathClass 5import objc 6 7NSObject = objc.lookUpClass('NSObject') 8 9DirectString = u'Direct String' 10IndirectString = u'Indirect String' 11DirectNumber = 42 12IndirectNumber = 84 13 14class KVPyBase: 15 def __init__(self): 16 self.directString = DirectString 17 self._indirectString = IndirectString 18 self.directNumber = DirectNumber 19 self._indirectNumber = IndirectNumber 20 21 def get_indirectString(self): 22 return self._indirectString 23 24 def set_indirectString(self, aString): 25 self._indirectString = aString 26 27 def getIndirectNumber(self): 28 return self._indirectNumber 29 30 def setIndirectNumber(self, aNumber): 31 self._indirectNumber = aNumber 32 33class KVPyPath: 34 def __init__(self): 35 self.directHead = KVPyBase() 36 self._indirectHead = KVPyBase() 37 38 def indirectHead(self): 39 return self._indirectHead 40 41 def setIndirectHead(self, aHead): 42 self._indirectHead = aHead 43 44class KVPySubObjCBase (PyObjCTest_KVBaseClass): 45 pass 46 47class KVPySubObjCPath (PyObjCTest_KVPathClass): 48 pass 49 50class KVPySubOverObjCBase (PyObjCTest_KVBaseClass): 51 def init(self): 52 self = super(KVPySubOverObjCBase, self).init() 53 if not self: 54 return self 55 56 self.overDirectString = DirectString 57 self._overIndirectString = IndirectString 58 return self 59 60 def getOverIndirectString(self): 61 return self._overIndirectString 62 63 def setOverIndirectString_(self, aString): 64 self._overIndirectString = aString 65 66class KVPySubOverObjCPath(PyObjCTest_KVPathClass): 67 def init(self): 68 self = super(KVPySubOverObjCPath, self).init() 69 self.overDirectHead = KVPySubOverObjCBase.new() 70 self._overIndirectHead = KVPySubOverObjCBase.new() 71 return self 72 73 def overIndirectHead(self): 74 return self._overIndirectHead 75 76 def setOverIndirectHead_(self, aHead): 77 self._overIndirectHead = aHead 78 79class PyObjCTestObserver (NSObject): 80 def init(self): 81 self = super(PyObjCTestObserver, self).init() 82 if self is not None: 83 self.observed = [] 84 self.willChange = [] 85 return self 86 87 def observeValueForKeyPath_ofObject_change_context_(self, keyPath, obj, change, context): 88 self.observed.append( (keyPath, obj, change, context) ) 89 90 def willChangeValueForKey_(self, key): 91 self.willChange.append(key) 92