1# NOTE: This file only contains basic tests of the keyvalue coding header definitions, 2# test_keyvalue contains tests for the actualy KVC/KVO mechanisms. 3from PyObjCTools.TestSupport import * 4 5from Foundation import * 6 7try: 8 unicode 9except NameError: 10 unicode = str 11 12class TestNSKeyValueCodingHelper (NSObject): 13 def validateValue_forKey_error_(self, a, b, c): return 1 14 def validateValue_forKeyPath_error_(self, a, b, c): return 1 15 def useStoredAccessor(self): return 1 16 17 18class TestNSKeyValueCoding (TestCase): 19 def testConstants(self): 20 self.assertIsInstance(NSUndefinedKeyException, unicode) 21 self.assertIsInstance(NSAverageKeyValueOperator, unicode) 22 self.assertIsInstance(NSCountKeyValueOperator, unicode) 23 self.assertIsInstance(NSDistinctUnionOfArraysKeyValueOperator, unicode) 24 self.assertIsInstance(NSDistinctUnionOfObjectsKeyValueOperator, unicode) 25 self.assertIsInstance(NSDistinctUnionOfSetsKeyValueOperator, unicode) 26 self.assertIsInstance(NSMaximumKeyValueOperator, unicode) 27 self.assertIsInstance(NSMinimumKeyValueOperator, unicode) 28 self.assertIsInstance(NSSumKeyValueOperator, unicode) 29 self.assertIsInstance(NSUnionOfArraysKeyValueOperator, unicode) 30 self.assertIsInstance(NSUnionOfObjectsKeyValueOperator, unicode) 31 self.assertIsInstance(NSUnionOfSetsKeyValueOperator, unicode) 32 33 def testDefineValidation(self): 34 o = NSObject.alloc().init() 35 36 m = o.validateValue_forKey_error_.__metadata__() 37 self.assertEqual( m['arguments'][4]['type'], b'o^@' ) 38 39 m = o.validateValue_forKeyPath_error_.__metadata__() 40 self.assertEqual( m['arguments'][4]['type'], b'o^@' ) 41 42 43 def testMethods(self): 44 self.assertResultIsBOOL(NSObject.accessInstanceVariablesDirectly) 45 46 self.assertResultIsBOOL(TestNSKeyValueCodingHelper.validateValue_forKey_error_) 47 self.assertArgIsOut(TestNSKeyValueCodingHelper.validateValue_forKey_error_, 2) 48 self.assertResultIsBOOL(TestNSKeyValueCodingHelper.validateValue_forKeyPath_error_) 49 50 self.assertArgIsInOut(TestNSKeyValueCodingHelper.validateValue_forKeyPath_error_, 0) 51 self.assertArgIsOut(TestNSKeyValueCodingHelper.validateValue_forKeyPath_error_, 2) 52 self.assertResultIsBOOL(TestNSKeyValueCodingHelper.useStoredAccessor) 53 54if __name__ == "__main__": 55 main() 56