def testDoubleConversions(self): v = 75.5 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 75) self.assertEqual(OC_TestNumber.numberAsShort_(v), 75) self.assertEqual(OC_TestNumber.numberAsInt_(v), 75) self.assertEqual(OC_TestNumber.numberAsLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsFloat_(v), 75.5) self.assertEqual(OC_TestNumber.numberAsDouble_(v), 75.5) # Negative values v = -127.6 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), -127) self.assertEqual(OC_TestNumber.numberAsShort_(v), -127) self.assertEqual(OC_TestNumber.numberAsInt_(v), -127) self.assertEqual(OC_TestNumber.numberAsLong_(v), -127) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), -127) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 129) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65409) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 4294967169) if sys.maxsize == (2 ** 31) -1: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 4294967169) else: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 18446744073709551489) if sys.byteorder == 'big': self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 4294967169) else: self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 18446744073709551489) self.assertEqual(OC_TestNumber.numberAsDouble_(v), -127.6) # Overflow v = float(2**64 + 99) self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) if sys.byteorder == 'big': self.assertEqual(OC_TestNumber.numberAsChar_(v), -1) self.assertEqual(OC_TestNumber.numberAsShort_(v), -1) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 255) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65535) else: self.assertEqual(OC_TestNumber.numberAsChar_(v), 0) self.assertEqual(OC_TestNumber.numberAsShort_(v), 0) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 0) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 0)
def testPythonIntConversions(self): # Conversions to other values. Note that values are converted # using C casts, without any exceptions when converting a # negative value to an unsigned one and without exceptions for # overflow. v = 42 self.assertEquals(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEquals(OC_TestNumber.numberAsChar_(v), 42) self.assertEquals(OC_TestNumber.numberAsShort_(v), 42) self.assertEquals(OC_TestNumber.numberAsInt_(v), 42) self.assertEquals(OC_TestNumber.numberAsLong_(v), 42) self.assertEquals(OC_TestNumber.numberAsLongLong_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedChar_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedShort_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedInt_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedLong_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEquals(OC_TestNumber.numberAsFloat_(v), 42.0) self.assertEquals(OC_TestNumber.numberAsDouble_(v), 42.0) # Negative values v = -42 self.assertEquals(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEquals(OC_TestNumber.numberAsChar_(v), -42) self.assertEquals(OC_TestNumber.numberAsShort_(v), -42) self.assertEquals(OC_TestNumber.numberAsInt_(v), -42) self.assertEquals(OC_TestNumber.numberAsLong_(v), -42) self.assertEquals(OC_TestNumber.numberAsLongLong_(v), -42) self.assertEquals(OC_TestNumber.numberAsUnsignedChar_(v), 214) self.assertEquals(OC_TestNumber.numberAsUnsignedShort_(v), 65494) self.assertEquals(OC_TestNumber.numberAsUnsignedInt_(v), 4294967254) if sys.maxint == (2**31) - 1: self.assertEquals(OC_TestNumber.numberAsUnsignedLong_(v), 4294967254) else: self.assertEquals(OC_TestNumber.numberAsUnsignedLong_(v), 18446744073709551574) self.assertEquals(OC_TestNumber.numberAsUnsignedLongLong_(v), 18446744073709551574) self.assertEquals(OC_TestNumber.numberAsFloat_(v), -42.0) self.assertEquals(OC_TestNumber.numberAsDouble_(v), -42.0) # Overflow v = 892455 self.assertEquals(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEquals(OC_TestNumber.numberAsChar_(v), 39) self.assertEquals(OC_TestNumber.numberAsShort_(v), -25049) self.assertEquals(OC_TestNumber.numberAsUnsignedChar_(v), 39) self.assertEquals(OC_TestNumber.numberAsUnsignedShort_(v), 40487)
def testIntConversions(self): v = NSNumber.numberWithInt_(42) self.assertEqual(v.stringValue(), "42") self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 42) self.assertEqual(OC_TestNumber.numberAsShort_(v), 42) self.assertEqual(OC_TestNumber.numberAsInt_(v), 42) self.assertEqual(OC_TestNumber.numberAsLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsFloat_(v), 42.0) self.assertEqual(OC_TestNumber.numberAsDouble_(v), 42.0) # Negative values v = NSNumber.numberWithInt_(-42) self.assertEqual(v.stringValue(), "-42") self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), -42) self.assertEqual(OC_TestNumber.numberAsShort_(v), -42) self.assertEqual(OC_TestNumber.numberAsInt_(v), -42) self.assertEqual(OC_TestNumber.numberAsLong_(v), -42) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), -42) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 214) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65494) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 4_294_967_254) if sys.maxsize == (2 ** 31) - 1: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 4_294_967_254) else: self.assertEqual( OC_TestNumber.numberAsUnsignedLong_(v), 18_446_744_073_709_551_574 ) self.assertEqual( OC_TestNumber.numberAsUnsignedLongLong_(v), 18_446_744_073_709_551_574 ) self.assertEqual(OC_TestNumber.numberAsFloat_(v), -42.0) self.assertEqual(OC_TestNumber.numberAsDouble_(v), -42.0) # Overflow v = NSNumber.numberWithInt_(892_455) self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 39) self.assertEqual(OC_TestNumber.numberAsShort_(v), -25049) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 39) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 40487)
def testPythonIntConversions(self): # Conversions to other values. Note that values are converted # using C casts, without any exceptions when converting a # negative value to an unsigned one and without exceptions for # overflow. v = 42 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 42) self.assertEqual(OC_TestNumber.numberAsShort_(v), 42) self.assertEqual(OC_TestNumber.numberAsInt_(v), 42) self.assertEqual(OC_TestNumber.numberAsLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsFloat_(v), 42.0) self.assertEqual(OC_TestNumber.numberAsDouble_(v), 42.0) # Negative values v = -42 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), -42) self.assertEqual(OC_TestNumber.numberAsShort_(v), -42) self.assertEqual(OC_TestNumber.numberAsInt_(v), -42) self.assertEqual(OC_TestNumber.numberAsLong_(v), -42) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), -42) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 214) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65494) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 4294967254) if sys.maxsize == (2 ** 31) -1: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 4294967254) else: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 18446744073709551574) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 18446744073709551574) self.assertEqual(OC_TestNumber.numberAsFloat_(v), -42.0) self.assertEqual(OC_TestNumber.numberAsDouble_(v), -42.0) # Overflow v = 892455 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 39) self.assertEqual(OC_TestNumber.numberAsShort_(v), -25049) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 39) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 40487)
def testIntConversions(self): v = NSNumber.numberWithInt_(42) self.assertEqual(v.stringValue(), '42') self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 42) self.assertEqual(OC_TestNumber.numberAsShort_(v), 42) self.assertEqual(OC_TestNumber.numberAsInt_(v), 42) self.assertEqual(OC_TestNumber.numberAsLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsFloat_(v), 42.0) self.assertEqual(OC_TestNumber.numberAsDouble_(v), 42.0) # Negative values v = NSNumber.numberWithInt_(-42) self.assertEqual(v.stringValue(), '-42') self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), -42) self.assertEqual(OC_TestNumber.numberAsShort_(v), -42) self.assertEqual(OC_TestNumber.numberAsInt_(v), -42) self.assertEqual(OC_TestNumber.numberAsLong_(v), -42) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), -42) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 214) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65494) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 4294967254) if sys.maxsize == (2 ** 31) -1: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 4294967254) else: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 18446744073709551574) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 18446744073709551574) self.assertEqual(OC_TestNumber.numberAsFloat_(v), -42.0) self.assertEqual(OC_TestNumber.numberAsDouble_(v), -42.0) # Overflow v = NSNumber.numberWithInt_(892455) self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 39) self.assertEqual(OC_TestNumber.numberAsShort_(v), -25049) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 39) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 40487)
def testIntConversions(self): v = NSNumber.numberWithInt_(42) self.assertEquals(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEquals(OC_TestNumber.numberAsChar_(v), 42) self.assertEquals(OC_TestNumber.numberAsShort_(v), 42) self.assertEquals(OC_TestNumber.numberAsInt_(v), 42) self.assertEquals(OC_TestNumber.numberAsLong_(v), 42) self.assertEquals(OC_TestNumber.numberAsLongLong_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedChar_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedShort_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedInt_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedLong_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEquals(OC_TestNumber.numberAsFloat_(v), 42.0) self.assertEquals(OC_TestNumber.numberAsDouble_(v), 42.0) # Negative values v = NSNumber.numberWithInt_(-42) self.assertEquals(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEquals(OC_TestNumber.numberAsChar_(v), -42) self.assertEquals(OC_TestNumber.numberAsShort_(v), -42) self.assertEquals(OC_TestNumber.numberAsInt_(v), -42) self.assertEquals(OC_TestNumber.numberAsLong_(v), -42) self.assertEquals(OC_TestNumber.numberAsLongLong_(v), -42) self.assertEquals(OC_TestNumber.numberAsUnsignedChar_(v), 214) self.assertEquals(OC_TestNumber.numberAsUnsignedShort_(v), 65494) self.assertEquals(OC_TestNumber.numberAsUnsignedInt_(v), 4294967254) if sys.maxint == (2**31) - 1: self.assertEquals(OC_TestNumber.numberAsUnsignedLong_(v), 4294967254) else: self.assertEquals(OC_TestNumber.numberAsUnsignedLong_(v), 18446744073709551574) self.assertEquals(OC_TestNumber.numberAsUnsignedLongLong_(v), 18446744073709551574) self.assertEquals(OC_TestNumber.numberAsFloat_(v), -42.0) self.assertEquals(OC_TestNumber.numberAsDouble_(v), -42.0) # Overflow v = NSNumber.numberWithInt_(892455) self.assertEquals(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEquals(OC_TestNumber.numberAsChar_(v), 39) self.assertEquals(OC_TestNumber.numberAsShort_(v), -25049) self.assertEquals(OC_TestNumber.numberAsUnsignedChar_(v), 39) self.assertEquals(OC_TestNumber.numberAsUnsignedShort_(v), 40487)
def testShortConversions(self): v = NSNumber.numberWithShort_(42) self.assertEquals(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEquals(OC_TestNumber.numberAsChar_(v), 42) self.assertEquals(OC_TestNumber.numberAsShort_(v), 42) self.assertEquals(OC_TestNumber.numberAsInt_(v), 42) self.assertEquals(OC_TestNumber.numberAsLong_(v), 42) self.assertEquals(OC_TestNumber.numberAsLongLong_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedChar_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedShort_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedInt_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedLong_(v), 42) self.assertEquals(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEquals(OC_TestNumber.numberAsFloat_(v), 42.0) self.assertEquals(OC_TestNumber.numberAsDouble_(v), 42.0)
def testPythonLongConversions(self): if sys.version_info[0] == 2: v = long(42) self.assertIsInstance(v, long) else: v = 42 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 42) self.assertEqual(OC_TestNumber.numberAsShort_(v), 42) self.assertEqual(OC_TestNumber.numberAsInt_(v), 42) self.assertEqual(OC_TestNumber.numberAsLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsFloat_(v), 42.0) self.assertEqual(OC_TestNumber.numberAsDouble_(v), 42.0) # Negative values if sys.version_info[0] == 2: v = long(-42) self.assertIsInstance(v, long) else: v = -42 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), -42) self.assertEqual(OC_TestNumber.numberAsShort_(v), -42) self.assertEqual(OC_TestNumber.numberAsInt_(v), -42) self.assertEqual(OC_TestNumber.numberAsLong_(v), -42) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), -42) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 214) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65494) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 4294967254) if sys.maxsize == (2 ** 31) -1: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 4294967254) else: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 18446744073709551574) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 18446744073709551574) self.assertEqual(OC_TestNumber.numberAsFloat_(v), -42.0) self.assertEqual(OC_TestNumber.numberAsDouble_(v), -42.0) # Overflow if sys.version_info[0] == 2: v = long(892455) self.assertIsInstance(v, long) else: v = 892455 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 39) self.assertEqual(OC_TestNumber.numberAsShort_(v), -25049) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 39) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 40487) # Very much overflow v = 2 ** 64 + 1 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 1) self.assertEqual(OC_TestNumber.numberAsShort_(v), 1) self.assertEqual(OC_TestNumber.numberAsInt_(v), 1) self.assertEqual(OC_TestNumber.numberAsLong_(v), 1) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 1)
def testDoubleConversions(self): v = NSNumber.numberWithDouble_(75.5) self.assertEqual(v.stringValue(), '75.5') self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 75) self.assertEqual(OC_TestNumber.numberAsShort_(v), 75) self.assertEqual(OC_TestNumber.numberAsInt_(v), 75) self.assertEqual(OC_TestNumber.numberAsLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsFloat_(v), 75.5) self.assertEqual(OC_TestNumber.numberAsDouble_(v), 75.5) # Negative values v = NSNumber.numberWithDouble_(-127.6) self.assertEqual(v.stringValue(), '-127.6') self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), -127) self.assertEqual(OC_TestNumber.numberAsShort_(v), -127) self.assertEqual(OC_TestNumber.numberAsInt_(v), -127) self.assertEqual(OC_TestNumber.numberAsLong_(v), -127) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), -127) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 129) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65409) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 4294967169) if sys.maxsize == (2 ** 31) -1: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 4294967169) else: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 18446744073709551488) # The first entry in the tuple below is incorrect, that happens to be what # is returned by NSNumber on some platforms (in particular, any Python where # the python framework itself is linked against the 10.4 SDK) # # double v = -127.6; # unsigned long long lv = v; # printf("%llu\n", lv); # self.assertIn( OC_TestNumber.numberAsUnsignedLongLong_(v), (18446744073709551489, 18446744073709551488)) self.assertEqual(OC_TestNumber.numberAsDouble_(v), -127.6) # Overflow v = NSNumber.numberWithDouble_(float(2**64 + 99)) self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) if sys.byteorder == 'big': self.assertEqual(OC_TestNumber.numberAsChar_(v), -1) self.assertEqual(OC_TestNumber.numberAsShort_(v), -1) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 255) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65535) else: self.assertEqual(OC_TestNumber.numberAsChar_(v), 0) self.assertEqual(OC_TestNumber.numberAsShort_(v), 0) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 0) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 0)
def testPythonLongConversions(self): if sys.version_info[0] == 2: v = long(42) self.assertIsInstance(v, long) else: v = 42 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 42) self.assertEqual(OC_TestNumber.numberAsShort_(v), 42) self.assertEqual(OC_TestNumber.numberAsInt_(v), 42) self.assertEqual(OC_TestNumber.numberAsLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsFloat_(v), 42.0) self.assertEqual(OC_TestNumber.numberAsDouble_(v), 42.0) # Negative values if sys.version_info[0] == 2: v = long(-42) self.assertIsInstance(v, long) else: v = -42 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), -42) self.assertEqual(OC_TestNumber.numberAsShort_(v), -42) self.assertEqual(OC_TestNumber.numberAsInt_(v), -42) self.assertEqual(OC_TestNumber.numberAsLong_(v), -42) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), -42) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 214) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65494) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 4294967254) if sys.maxsize == (2**31) - 1: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 4294967254) else: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 18446744073709551574) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 18446744073709551574) self.assertEqual(OC_TestNumber.numberAsFloat_(v), -42.0) self.assertEqual(OC_TestNumber.numberAsDouble_(v), -42.0) # Overflow if sys.version_info[0] == 2: v = long(892455) self.assertIsInstance(v, long) else: v = 892455 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 39) self.assertEqual(OC_TestNumber.numberAsShort_(v), -25049) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 39) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 40487) # Very much overflow v = 2**64 + 1 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 1) self.assertEqual(OC_TestNumber.numberAsShort_(v), 1) self.assertEqual(OC_TestNumber.numberAsInt_(v), 1) self.assertEqual(OC_TestNumber.numberAsLong_(v), 1) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 1)
def testDoubleConversions(self): v = NSNumber.numberWithDouble_(75.5) self.assertEqual(v.stringValue(), '75.5') self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 75) self.assertEqual(OC_TestNumber.numberAsShort_(v), 75) self.assertEqual(OC_TestNumber.numberAsInt_(v), 75) self.assertEqual(OC_TestNumber.numberAsLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsFloat_(v), 75.5) self.assertEqual(OC_TestNumber.numberAsDouble_(v), 75.5) # Negative values v = NSNumber.numberWithDouble_(-127.6) self.assertEqual(v.stringValue(), '-127.6') self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), -127) self.assertEqual(OC_TestNumber.numberAsShort_(v), -127) self.assertEqual(OC_TestNumber.numberAsInt_(v), -127) self.assertEqual(OC_TestNumber.numberAsLong_(v), -127) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), -127) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 129) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65409) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 4294967169) if sys.maxsize == (2**31) - 1: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 4294967169) else: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 18446744073709551488) # The first entry in the tuple below is incorrect, that happens to be what # is returned by NSNumber on some platforms (in particular, any Python where # the python framework itself is linked against the 10.4 SDK) # # double v = -127.6; # unsigned long long lv = v; # printf("%llu\n", lv); # self.assertIn(OC_TestNumber.numberAsUnsignedLongLong_(v), (18446744073709551489, 18446744073709551488)) self.assertEqual(OC_TestNumber.numberAsDouble_(v), -127.6) # Overflow v = NSNumber.numberWithDouble_(float(2**64 + 99)) self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) if sys.byteorder == 'big': self.assertEqual(OC_TestNumber.numberAsChar_(v), -1) self.assertEqual(OC_TestNumber.numberAsShort_(v), -1) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 255) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65535) else: self.assertEqual(OC_TestNumber.numberAsChar_(v), 0) self.assertEqual(OC_TestNumber.numberAsShort_(v), 0) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 0) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 0)
def testPythonLongConversions(self): v = 42 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 42) self.assertEqual(OC_TestNumber.numberAsShort_(v), 42) self.assertEqual(OC_TestNumber.numberAsInt_(v), 42) self.assertEqual(OC_TestNumber.numberAsLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 42) self.assertEqual(OC_TestNumber.numberAsFloat_(v), 42.0) self.assertEqual(OC_TestNumber.numberAsDouble_(v), 42.0) # Negative values v = -42 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), -42) self.assertEqual(OC_TestNumber.numberAsShort_(v), -42) self.assertEqual(OC_TestNumber.numberAsInt_(v), -42) self.assertEqual(OC_TestNumber.numberAsLong_(v), -42) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), -42) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 214) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65494) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 4_294_967_254) if sys.maxsize == (2**31) - 1: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 4_294_967_254) else: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 18_446_744_073_709_551_574) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 18_446_744_073_709_551_574) self.assertEqual(OC_TestNumber.numberAsFloat_(v), -42.0) self.assertEqual(OC_TestNumber.numberAsDouble_(v), -42.0) # Overflow v = 892_455 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 39) self.assertEqual(OC_TestNumber.numberAsShort_(v), -25049) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 39) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 40487) # Very much overflow v = 2**64 + 1 self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 1) self.assertEqual(OC_TestNumber.numberAsShort_(v), 1) self.assertEqual(OC_TestNumber.numberAsInt_(v), 1) self.assertEqual(OC_TestNumber.numberAsLong_(v), 1) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 1) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 1)
def testDoubleConversions(self): v = NSNumber.numberWithDouble_(75.5) self.assertEqual(v.stringValue(), "75.5") self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), 75) self.assertEqual(OC_TestNumber.numberAsShort_(v), 75) self.assertEqual(OC_TestNumber.numberAsInt_(v), 75) self.assertEqual(OC_TestNumber.numberAsLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsUnsignedLongLong_(v), 75) self.assertEqual(OC_TestNumber.numberAsFloat_(v), 75.5) self.assertEqual(OC_TestNumber.numberAsDouble_(v), 75.5) # Negative values v = NSNumber.numberWithDouble_(-127.6) self.assertEqual(v.stringValue(), "-127.6") self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) self.assertEqual(OC_TestNumber.numberAsChar_(v), -127) self.assertEqual(OC_TestNumber.numberAsShort_(v), -127) self.assertEqual(OC_TestNumber.numberAsInt_(v), -127) self.assertEqual(OC_TestNumber.numberAsLong_(v), -127) self.assertEqual(OC_TestNumber.numberAsLongLong_(v), -127) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 129) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65409) self.assertEqual(OC_TestNumber.numberAsUnsignedInt_(v), 4_294_967_169) # NOTE: The expected values in the test below were determined by running # the equivalent ObjC code. if objc.arch == "arm64": self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 18_446_744_073_709_551_615) else: self.assertEqual(OC_TestNumber.numberAsUnsignedLong_(v), 18_446_744_073_709_551_488) # The first entry in the tuple below is incorrect, that happens to be what # is returned by NSNumber on some platforms (in particular, any Python where # the python framework itself is linked against the 10.4 SDK) # # double v = -127.6; # unsigned long long lv = v; # printf("%llu\n", lv); # self.assertIn( OC_TestNumber.numberAsUnsignedLongLong_(v), ( 18_446_744_073_709_551_489, 18_446_744_073_709_551_488, 18_446_744_073_709_551_615, ), ) self.assertEqual(OC_TestNumber.numberAsDouble_(v), -127.6) # Overflow v = NSNumber.numberWithDouble_(float(2**64 + 99)) self.assertEqual(OC_TestNumber.numberAsBOOL_(v), 1) if objc.arch == "arm64": self.assertEqual(OC_TestNumber.numberAsChar_(v), -1) self.assertEqual(OC_TestNumber.numberAsShort_(v), -1) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 255) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 65535) else: self.assertEqual(OC_TestNumber.numberAsChar_(v), 0) self.assertEqual(OC_TestNumber.numberAsShort_(v), 0) self.assertEqual(OC_TestNumber.numberAsUnsignedChar_(v), 0) self.assertEqual(OC_TestNumber.numberAsUnsignedShort_(v), 0)