1# This just tests the definitions in the NSKeyedArchiver header 2from PyObjCTools.TestSupport import * 3from Foundation import * 4 5try: 6 unicode 7except NameError: 8 unicode = str 9 10 11class TestNSKeyedArchiver (TestCase): 12 def testConstants(self): 13 self.assertIsInstance(NSInvalidArchiveOperationException, unicode) 14 self.assertIsInstance(NSInvalidUnarchiveOperationException, unicode) 15 16 def testOutput(self): 17 o = NSKeyedUnarchiver.alloc().initForReadingWithData_( 18 NSKeyedArchiver.archivedDataWithRootObject_(b"foobar".decode('ascii'))) 19 self.assertIsInstance(o, NSKeyedUnarchiver) 20 m = o.decodeBytesForKey_returnedLength_.__metadata__() 21 self.assertEqual(m['retval']['type'], b'^v') 22 self.assertTrue(m['arguments'][3]['type'].startswith(b'o^')) 23 24 data = NSMutableData.alloc().init() 25 o = NSArchiver.alloc().initForWritingWithMutableData_(data) 26 m = o.encodeBytes_length_forKey_.__metadata__() 27 self.assertEqual(m['arguments'][2]['type'], b'n^v') 28 29 def testMethods(self): 30 self.assertResultIsBOOL(NSKeyedArchiver.archiveRootObject_toFile_) 31 self.assertArgIsBOOL(NSKeyedArchiver.encodeBool_forKey_, 0) 32 self.assertArgHasType(NSKeyedArchiver.encodeBytes_length_forKey_, 0, b'n^v') 33 self.assertArgSizeInArg(NSKeyedArchiver.encodeBytes_length_forKey_, 0, 1) 34 35 self.assertResultIsBOOL(NSKeyedUnarchiver.containsValueForKey_) 36 self.assertResultIsBOOL(NSKeyedUnarchiver.decodeBoolForKey_) 37 38 self.assertResultHasType(NSKeyedUnarchiver.decodeBytesForKey_returnedLength_, b'^v') 39 self.assertResultSizeInArg(NSKeyedUnarchiver.decodeBytesForKey_returnedLength_, 1) 40 self.assertArgIsOut(NSKeyedUnarchiver.decodeBytesForKey_returnedLength_, 1) 41 42 self.assertArgHasType(NSCoder.encodePoint_forKey_, 0, NSPoint.__typestr__) 43 self.assertArgHasType(NSCoder.encodeSize_forKey_, 0, NSSize.__typestr__) 44 self.assertArgHasType(NSCoder.encodeRect_forKey_, 0, NSRect.__typestr__) 45 self.assertResultHasType(NSCoder.decodePointForKey_, NSPoint.__typestr__) 46 self.assertResultHasType(NSCoder.decodeSizeForKey_, NSSize.__typestr__) 47 self.assertResultHasType(NSCoder.decodeRectForKey_, NSRect.__typestr__) 48 49 50if __name__ == "__main__": 51 main() 52