1from PyObjCTools.TestSupport import * 2import sys 3from Foundation import * 4 5try: 6 unicode 7except NameError: 8 unicode = str 9 10 11try: 12 long 13except NameError: 14 long = int 15 16 17class TestNSObjCRuntime (TestCase): 18 def testConstants(self): 19 self.assertEqual(NSFoundationVersionNumber10_0, 397.40) 20 self.assertEqual(NSFoundationVersionNumber10_1, 425.00) 21 self.assertEqual(NSFoundationVersionNumber10_1_1, 425.00) 22 self.assertEqual(NSFoundationVersionNumber10_1_2, 425.00) 23 self.assertEqual(NSFoundationVersionNumber10_1_3, 425.00) 24 self.assertEqual(NSFoundationVersionNumber10_1_4, 425.00) 25 self.assertEqual(NSFoundationVersionNumber10_2, 462.00) 26 self.assertEqual(NSFoundationVersionNumber10_2_1, 462.00) 27 self.assertEqual(NSFoundationVersionNumber10_2_2, 462.00) 28 self.assertEqual(NSFoundationVersionNumber10_2_3, 462.00) 29 self.assertEqual(NSFoundationVersionNumber10_2_4, 462.00) 30 self.assertEqual(NSFoundationVersionNumber10_2_5, 462.00) 31 self.assertEqual(NSFoundationVersionNumber10_2_6, 462.00) 32 self.assertEqual(NSFoundationVersionNumber10_2_7, 462.70) 33 self.assertEqual(NSFoundationVersionNumber10_2_8, 462.70) 34 self.assertEqual(NSFoundationVersionNumber10_3, 500.00) 35 self.assertEqual(NSFoundationVersionNumber10_3_1, 500.00) 36 self.assertEqual(NSFoundationVersionNumber10_3_2, 500.30) 37 self.assertEqual(NSFoundationVersionNumber10_3_3, 500.54) 38 self.assertEqual(NSFoundationVersionNumber10_3_4, 500.56) 39 self.assertEqual(NSFoundationVersionNumber10_3_5, 500.56) 40 self.assertEqual(NSFoundationVersionNumber10_3_6, 500.56) 41 self.assertEqual(NSFoundationVersionNumber10_3_7, 500.56) 42 self.assertEqual(NSFoundationVersionNumber10_3_8, 500.56) 43 self.assertEqual(NSFoundationVersionNumber10_3_9, 500.58) 44 self.assertEqual(NSFoundationVersionNumber10_4, 567.00) 45 self.assertEqual(NSFoundationVersionNumber10_4_1, 567.00) 46 self.assertEqual(NSFoundationVersionNumber10_4_2, 567.12) 47 self.assertEqual(NSFoundationVersionNumber10_4_3, 567.21) 48 self.assertEqual(NSFoundationVersionNumber10_4_4_Intel, 567.23) 49 self.assertEqual(NSFoundationVersionNumber10_4_4_PowerPC, 567.21) 50 self.assertEqual(NSFoundationVersionNumber10_4_5, 567.25) 51 self.assertEqual(NSFoundationVersionNumber10_4_6, 567.26) 52 self.assertEqual(NSFoundationVersionNumber10_4_7, 567.27) 53 self.assertEqual(NSFoundationVersionNumber10_4_8, 567.28) 54 self.assertEqual(NSFoundationVersionNumber10_4_9, 567.29) 55 self.assertEqual(NSFoundationVersionNumber10_4_10, 567.29) 56 self.assertEqual(NSFoundationVersionNumber10_4_11, 567.36) 57 self.assertEqual( NSFoundationVersionNumber10_5, 677.00) 58 self.assertEqual( NSFoundationVersionNumber10_5_1, 677.10) 59 self.assertEqual( NSFoundationVersionNumber10_5_2, 677.15) 60 self.assertEqual( NSFoundationVersionNumber10_5_3, 677.19) 61 self.assertEqual( NSFoundationVersionNumber10_5_4, 677.19) 62 self.assertEqual( NSFoundationVersionNumber10_5_5, 677.21) 63 self.assertEqual( NSFoundationVersionNumber10_5_6, 677.22) 64 self.assertEqual( NSFoundationVersionNumber10_5_7, 677.24) 65 self.assertEqual( NSFoundationVersionNumber10_5_8, 677.26) 66 self.assertEqual( NSFoundationVersionNumber10_6, 751.00) 67 self.assertEqual( NSFoundationVersionNumber10_6_1, 751.00) 68 self.assertEqual( NSFoundationVersionNumber10_6_2, 751.14) 69 self.assertEqual( NSFoundationVersionNumber10_6_3, 751.21) 70 self.assertEqual( NSFoundationVersionNumber10_6_4, 751.29) 71 self.assertEqual( NSFoundationVersionNumber10_6_5, 751.42) 72 73 74 self.assertIsInstance(NSFoundationVersionNumber, float) 75 self.assertIsInstance(NSIntegerMax, (int, long)) 76 self.assertIsInstance(NSIntegerMin, (int, long)) 77 self.assertIsInstance(NSUIntegerMax, (int, long)) 78 if sys.maxsize > 2 ** 32: 79 self.assertEqual(NSIntegerMax, 2 ** 63 -1) 80 self.assertEqual(NSIntegerMin, -(2 ** 63)) 81 self.assertEqual(NSUIntegerMax, 2**64-1) 82 83 else: 84 self.assertEqual(NSIntegerMax, 2 ** 31 -1) 85 self.assertEqual(NSIntegerMin, -(2 ** 31)) 86 self.assertEqual(NSUIntegerMax, 2**32-1) 87 88 self.assertTrue(YES) 89 self.assertFalse(NO) 90 91 self.assertEqual(NSOrderedAscending, -1) 92 self.assertEqual(NSOrderedSame, 0) 93 self.assertEqual(NSOrderedDescending, 1) 94 95 self.assertEqual(NSNotFound, NSIntegerMax) 96 97 @min_os_level('10.6') 98 def testConstants10_6(self): 99 self.assertEqual(NSFoundationVersionNumber10_5, 677.00) 100 self.assertEqual(NSFoundationVersionNumber10_5_1, 677.10) 101 self.assertEqual(NSFoundationVersionNumber10_5_2, 677.15) 102 self.assertEqual(NSFoundationVersionNumber10_5_3, 677.19) 103 self.assertEqual(NSFoundationVersionNumber10_5_4, 677.19) 104 self.assertEqual(NSFoundationVersionNumber10_5_5, 677.21) 105 self.assertEqual(NSFoundationVersionNumber10_5_6, 677.22) 106 107 self.assertEqual(NSEnumerationConcurrent, 1<<0) 108 self.assertEqual(NSEnumerationReverse, 1<<1) 109 self.assertEqual(NSSortConcurrent, 1<<0) 110 self.assertEqual(NSSortStable, 1<<4) 111 112 @min_os_level('10.7') 113 def testConstants10_7(self): 114 self.assertEqual(NSFoundationVersionNumber10_7, 833.10) 115 self.assertEqual(NSFoundationVersionNumber10_7_1, 833.10) 116 self.assertEqual(NSFoundationVersionNumber10_7_2, 833.20) 117 self.assertEqual(NSFoundationVersionNumber10_7_3, 833.24) 118 self.assertEqual(NSFoundationVersionNumber10_7_4, 833.25) 119 120 def testSelectorAccess(self): 121 v = NSStringFromSelector('description') 122 self.assertIsInstance(v, unicode) 123 self.assertEqual(v, 'description') 124 125 v = NSSelectorFromString(b"description".decode('ascii')) 126 self.assertIsInstance(v, str) 127 self.assertEqual(v, 'description') 128 129 def testClassAccess(self): 130 v = NSStringFromClass(NSObject) 131 self.assertIsInstance(v, unicode) 132 self.assertEqual(v, 'NSObject') 133 134 v = NSClassFromString('NSDictionary') 135 self.assertIsInstance(v, objc.objc_class) 136 self.assertEqual(v, NSDictionary) 137 138 def testProtocolAccess(self): 139 p = NSProtocolFromString('NSObject') 140 self.assertIsInstance(p, objc.formal_protocol) 141 v = NSStringFromProtocol(p) 142 self.assertIsInstance(v, unicode) 143 self.assertEqual(v, 'NSObject') 144 145 def testTypeInfo(self): 146 rest, size, align = NSGetSizeAndAlignment(b"ii", None, None) 147 self.assertEqual(rest, b"i") 148 self.assertIsInstance(size, (int, long)) 149 self.assertIsInstance(align, (int, long)) 150 151 def testMinMax(self): 152 self.assertEqual(MAX(1, 2), 2) 153 self.assertEqual(MAX("a", "b"), "b") 154 self.assertEqual(MIN(1, 2), 1) 155 self.assertEqual(MIN("a", "b"), "a") 156 self.assertEqual(ABS(-1), 1) 157 self.assertEqual(ABS(-1.0), 1.0) 158 159 def testFunctions(self): 160 self.assertArgIsPrintf(NSLog, 0) 161 162if __name__ == "__main__": 163 main() 164