def test_unsigned_long_long(self): self.assertEquals(0, pyObjCPy(objc._C_ULNG_LNG, 0)) self.assertEquals(ULLONG_MAX, pyObjCPy(objc._C_ULNG_LNG, ULLONG_MAX)) self.assertEquals(0, pyObjCPy(objc._C_ULNG_LNG, long(0))) self.assertEquals(ULLONG_MAX, pyObjCPy(objc._C_ULNG_LNG, long(ULLONG_MAX))) self.assertEquals(0, pyObjCPy(objc._C_ULNG_LNG, float(0))) self.assertRaises(ValueError, pyObjCPy, objc._C_ULNG_LNG, LLONG_MIN) self.assertRaises(ValueError, pyObjCPy, objc._C_ULNG_LNG, LLONG_MIN - 1) self.assertRaises(ValueError, pyObjCPy, objc._C_ULNG_LNG, "1")
def test_long_long(self): self.assertEquals(0, pyObjCPy(objc._C_LNG_LNG, 0)) if sys.maxint < 2 ** 32: self.assertEquals(LONG_MAX, pyObjCPy(objc._C_LNG_LNG, float(LONG_MAX))) self.assertEquals(LLONG_MAX, pyObjCPy(objc._C_LNG_LNG, LLONG_MAX)) self.assertEquals(LLONG_MIN, pyObjCPy(objc._C_LNG_LNG, LLONG_MIN)) self.assertRaises(ValueError, pyObjCPy, objc._C_LNG_LNG, LLONG_MAX + 1) self.assertRaises(ValueError, pyObjCPy, objc._C_LNG_LNG, LLONG_MIN - 1) self.assertRaises(ValueError, pyObjCPy, objc._C_LNG_LNG, "1")
def test_long_long(self): self.assertEquals(0, pyObjCPy(objc._C_LNG_LNG, 0)) if sys.maxint < 2 ** 32: self.assertEquals(LONG_MAX, pyObjCPy(objc._C_LNG_LNG, float(LONG_MAX))) self.assertEquals(LLONG_MAX, pyObjCPy(objc._C_LNG_LNG, LLONG_MAX)) self.assertEquals(LLONG_MIN, pyObjCPy(objc._C_LNG_LNG, LLONG_MIN)) self.assertRaises(ValueError, pyObjCPy, objc._C_LNG_LNG, LLONG_MAX + 1) self.assertRaises(ValueError, pyObjCPy, objc._C_LNG_LNG, LLONG_MIN - 1) self.assertRaises(ValueError, pyObjCPy, objc._C_LNG_LNG, "1") self.assertRaises(ValueError, pyObjCPy, objc._C_LNG_LNG, b"1")
def testSimple(self): # struct Foo { # int; # int; # }; signature = b"{Foo=ii}" inval = (1, 2) self.assertEquals(inval, pyObjCPy(signature, inval)) self.assertEquals(inval, pyObjCPy(signature, list(inval))) self.assertEquals(inval, pyObjCPy(signature, iter(inval))) self.assertEquals(inval, pyObjCPy(signature, iter(list(inval))))
def test_simple(self): signature = b"[10i]" value = tuple(range(10)) self.assertEquals(value, tuple(pyObjCPy(signature, value))) self.assertEquals(value, tuple(pyObjCPy(signature, list(value)))) self.assertEquals(value, tuple(pyObjCPy(signature, iter(value)))) self.assertEquals(value, tuple(pyObjCPy(signature, iter(list(value))))) self.assertRaises(ValueError, pyObjCPy, signature, value + value[:1]) self.assertRaises(ValueError, pyObjCPy, signature, value[:9]) self.assertRaises(ValueError, pyObjCPy, signature, iter(value + value[:1])) self.assertRaises(ValueError, pyObjCPy, signature, iter(value[:9])) self.assertRaises(TypeError, pyObjCPy, signature, None)
def test_unsigned_char(self): self.assertEquals(0, pyObjCPy(objc._C_UCHR, 0)) self.assertEquals(0, pyObjCPy(objc._C_UCHR, b'\0')) self.assertEquals(0, pyObjCPy(objc._C_UCHR, long(0))) self.assertEquals(0, pyObjCPy(objc._C_UCHR, float(0))) self.assertEquals(UCHAR_MAX, pyObjCPy(objc._C_UCHR, UCHAR_MAX)) if sys.version_info[0] == 2: self.assertEquals(UCHAR_MAX, pyObjCPy(objc._C_UCHR, chr(UCHAR_MAX))) else: self.assertEquals(UCHAR_MAX, pyObjCPy(objc._C_UCHR, bytes([UCHAR_MAX]))) self.assertEquals(UCHAR_MAX, pyObjCPy(objc._C_UCHR, bytearray([UCHAR_MAX]))) self.assertEquals(UCHAR_MAX, pyObjCPy(objc._C_UCHR, long(UCHAR_MAX))) self.assertEquals(UCHAR_MAX, pyObjCPy(objc._C_UCHR, float(UCHAR_MAX))) self.assertRaises((IndexError, ValueError), pyObjCPy, objc._C_UCHR, SCHAR_MIN) self.assertRaises((IndexError, ValueError), pyObjCPy, objc._C_UCHR, SCHAR_MIN - 1)
def testHoles(self): # This struct usually contains holes # # struct Foo { # short; # int; # short; # double; # short; # }; signature = b"{Foo=sisds}" inval = (1, 2, 3, 4.0, 5) self.assertEquals(inval, pyObjCPy(signature, inval)) self.assertEquals(inval, pyObjCPy(signature, list(inval))) self.assertEquals(inval, pyObjCPy(signature, iter(inval))) self.assertEquals(inval, pyObjCPy(signature, iter(list(inval))))
def test_short(self): self.assertEquals(0, pyObjCPy(objc._C_SHT, 0)) self.assertEquals(SHRT_MAX, pyObjCPy(objc._C_SHT, SHRT_MAX)) self.assertEquals(SHRT_MIN, pyObjCPy(objc._C_SHT, SHRT_MIN)) self.assertEquals(0, pyObjCPy(objc._C_SHT, long(0))) self.assertEquals(SHRT_MAX, pyObjCPy(objc._C_SHT, long(SHRT_MAX))) self.assertEquals(SHRT_MIN, pyObjCPy(objc._C_SHT, long(SHRT_MIN))) self.assertEquals(0, pyObjCPy(objc._C_SHT, float(0))) self.assertEquals(SHRT_MAX, pyObjCPy(objc._C_SHT, float(SHRT_MAX))) self.assertEquals(SHRT_MIN, pyObjCPy(objc._C_SHT, float(SHRT_MIN))) self.assertRaises(ValueError, pyObjCPy, objc._C_SHT, SHRT_MAX + 1) self.assertRaises(ValueError, pyObjCPy, objc._C_SHT, SHRT_MIN - 1) self.assertRaises(ValueError, pyObjCPy, objc._C_SHT, "1")
def test_int(self): self.assertEquals(0, pyObjCPy(objc._C_INT, 0)) self.assertEquals(INT_MAX, pyObjCPy(objc._C_INT, INT_MAX)) self.assertEquals(INT_MIN, pyObjCPy(objc._C_INT, INT_MIN)) self.assertEquals(0, pyObjCPy(objc._C_INT, long(0))) self.assertEquals(INT_MAX, pyObjCPy(objc._C_INT, long(INT_MAX))) self.assertEquals(INT_MIN, pyObjCPy(objc._C_INT, long(INT_MIN))) self.assertEquals(0, pyObjCPy(objc._C_INT, float(0))) self.assertEquals(INT_MAX, pyObjCPy(objc._C_INT, float(INT_MAX))) self.assertEquals(INT_MIN, pyObjCPy(objc._C_INT, float(INT_MIN))) self.assertRaises(ValueError, pyObjCPy, objc._C_INT, INT_MAX + 1) self.assertRaises(ValueError, pyObjCPy, objc._C_INT, INT_MIN - 1) # Check implicit conversion self.assertRaises(ValueError, pyObjCPy, objc._C_INT, "1")
def test_double(self): self.assertEquals(0, pyObjCPy(objc._C_DBL, 0)) self.assertEquals(float(INT_MAX), pyObjCPy(objc._C_DBL, INT_MAX)) self.assertEquals(DBL_MAX, pyObjCPy(objc._C_DBL, DBL_MAX)) self.assertEquals(DBL_MIN, pyObjCPy(objc._C_DBL, DBL_MIN)) self.assertEquals(-DBL_MAX, pyObjCPy(objc._C_DBL, -DBL_MAX)) self.assertEquals(-DBL_MIN, pyObjCPy(objc._C_DBL, -DBL_MIN)) self.assertEquals(DBL_EPSILON, pyObjCPy(objc._C_DBL, DBL_EPSILON)) self.assertEquals(-DBL_EPSILON, pyObjCPy(objc._C_DBL, -DBL_EPSILON)) self.assertRaises(ValueError, pyObjCPy, objc._C_DBL, 1L << 10000) self.assertRaises(ValueError, pyObjCPy, objc._C_DBL, "1")
def test_unsigned_char(self): self.assertEquals(0, pyObjCPy(objc._C_UCHR, 0)) self.assertEquals(0, pyObjCPy(objc._C_UCHR, '\0')) self.assertEquals(0, pyObjCPy(objc._C_UCHR, long(0))) self.assertEquals(0, pyObjCPy(objc._C_UCHR, float(0))) self.assertEquals(UCHAR_MAX, pyObjCPy(objc._C_UCHR, UCHAR_MAX)) self.assertEquals(UCHAR_MAX, pyObjCPy(objc._C_UCHR, chr(UCHAR_MAX))) self.assertEquals(UCHAR_MAX, pyObjCPy(objc._C_UCHR, long(UCHAR_MAX))) self.assertEquals(UCHAR_MAX, pyObjCPy(objc._C_UCHR, float(UCHAR_MAX))) self.assertRaises(ValueError, pyObjCPy, objc._C_UCHR, SCHAR_MIN) self.assertRaises(ValueError, pyObjCPy, objc._C_UCHR, SCHAR_MIN - 1)
def test_float(self): self.assertEquals(0, pyObjCPy(objc._C_FLT, 0)) self.assertEquals(float(SHRT_MAX), pyObjCPy(objc._C_FLT, SHRT_MAX)) self.assertEquals(FLT_MAX, pyObjCPy(objc._C_FLT, FLT_MAX)) self.assertEquals(FLT_MIN, pyObjCPy(objc._C_FLT, FLT_MIN)) self.assertEquals(-FLT_MAX, pyObjCPy(objc._C_FLT, -FLT_MAX)) self.assertEquals(-FLT_MIN, pyObjCPy(objc._C_FLT, -FLT_MIN)) self.assertEquals(FLT_EPSILON, pyObjCPy(objc._C_FLT, FLT_EPSILON)) self.assertEquals(-FLT_EPSILON, pyObjCPy(objc._C_FLT, -FLT_EPSILON)) # Just in cause we do something stupid and convert to double instead # of float self.assertNotEquals(DBL_MAX, pyObjCPy(objc._C_FLT, DBL_MAX)) self.assertRaises(ValueError, pyObjCPy, objc._C_FLT, 1L << 10000) self.assertRaises(ValueError, pyObjCPy, objc._C_FLT, "1")
def test_unsigned_int(self): self.assertEquals(0, pyObjCPy(objc._C_UINT, 0)) self.assertEquals(UINT_MAX, pyObjCPy(objc._C_UINT, UINT_MAX)) self.assertEquals(0, pyObjCPy(objc._C_UINT, long(0))) self.assertEquals(UINT_MAX, pyObjCPy(objc._C_UINT, long(UINT_MAX))) self.assertEquals(0, pyObjCPy(objc._C_UINT, float(0))) self.assertEquals(UINT_MAX, pyObjCPy(objc._C_UINT, float(UINT_MAX))) self.assertRaises(ValueError, pyObjCPy, objc._C_UINT, INT_MIN) self.assertRaises(ValueError, pyObjCPy, objc._C_UINT, INT_MIN - 1) self.assertRaises(ValueError, pyObjCPy, objc._C_UINT, "1")
def test_unsigned_short(self): self.assertEquals(0, pyObjCPy(objc._C_USHT, 0)) self.assertEquals(USHRT_MAX, pyObjCPy(objc._C_USHT, USHRT_MAX)) self.assertEquals(0, pyObjCPy(objc._C_USHT, long(0))) self.assertEquals(USHRT_MAX, pyObjCPy(objc._C_USHT, long(USHRT_MAX))) self.assertEquals(0, pyObjCPy(objc._C_USHT, float(0))) self.assertEquals(USHRT_MAX, pyObjCPy(objc._C_USHT, float(USHRT_MAX))) self.assertRaises(ValueError, pyObjCPy, objc._C_USHT, SHRT_MIN) self.assertRaises(ValueError, pyObjCPy, objc._C_USHT, SHRT_MIN - 1) self.assertRaises(ValueError, pyObjCPy, objc._C_USHT, "1") self.assertRaises(ValueError, pyObjCPy, objc._C_USHT, b"1")
def test_unsigned_long(self): self.assertEquals(0, pyObjCPy(objc._C_ULNG, 0)) self.assertEquals(ULONG_MAX, pyObjCPy(objc._C_ULNG, ULONG_MAX)) self.assertEquals(0, pyObjCPy(objc._C_ULNG, long(0))) self.assertEquals(ULONG_MAX, pyObjCPy(objc._C_ULNG, long(ULONG_MAX))) self.assertEquals(0, pyObjCPy(objc._C_ULNG, float(0))) if sys.maxint < 2 ** 32: self.assertEquals(ULONG_MAX, pyObjCPy(objc._C_ULNG, float(ULONG_MAX))) self.assertRaises(ValueError, pyObjCPy, objc._C_ULNG, LONG_MIN) self.assertRaises(ValueError, pyObjCPy, objc._C_ULNG, LONG_MIN - 1) self.assertRaises(ValueError, pyObjCPy, objc._C_ULNG, "1") self.assertRaises(ValueError, pyObjCPy, objc._C_ULNG, b"1")
def test_char(self): self.assertEquals(0, pyObjCPy(objc._C_CHR, 0)) self.assertEquals(0, pyObjCPy(objc._C_CHR, b'\x00')) self.assertEquals(0, pyObjCPy(objc._C_CHR, long(0))) self.assertEquals(CHAR_MAX, pyObjCPy(objc._C_CHR, CHAR_MAX)) if sys.version_info[0] == 2: self.assertEquals(CHAR_MAX, pyObjCPy(objc._C_CHR, chr(CHAR_MAX))) else: self.assertEquals(CHAR_MAX, pyObjCPy(objc._C_CHR, bytes([CHAR_MAX]))) self.assertEquals(CHAR_MAX, pyObjCPy(objc._C_CHR, bytearray([CHAR_MAX]))) self.assertEquals(CHAR_MIN, pyObjCPy(objc._C_CHR, CHAR_MIN)) self.assertEquals(CHAR_MAX, pyObjCPy(objc._C_CHR, long(CHAR_MAX))) self.assertEquals(CHAR_MIN, pyObjCPy(objc._C_CHR, long(CHAR_MIN))) self.assertEquals(CHAR_MAX, pyObjCPy(objc._C_CHR, float(CHAR_MAX))) self.assertEquals(CHAR_MIN, pyObjCPy(objc._C_CHR, float(CHAR_MIN))) # XXX: Is this right, chr(-1) raises an exception, and is not # equivalent to '\xff'. Should (char)-1 be converted to '\xff'/255 ? self.assertEquals(-1, pyObjCPy(objc._C_CHR, b'\xff')) self.assertRaises(ValueError, pyObjCPy, objc._C_CHR, CHAR_MAX + 1) self.assertRaises(ValueError, pyObjCPy, objc._C_CHR, CHAR_MIN - 1)
def test_char(self): self.assertEquals(0, pyObjCPy(objc._C_CHR, 0)) self.assertEquals(0, pyObjCPy(objc._C_CHR, chr(0))) self.assertEquals(0, pyObjCPy(objc._C_CHR, long(0))) self.assertEquals(CHAR_MAX, pyObjCPy(objc._C_CHR, CHAR_MAX)) self.assertEquals(CHAR_MAX, pyObjCPy(objc._C_CHR, chr(CHAR_MAX))) self.assertEquals(CHAR_MIN, pyObjCPy(objc._C_CHR, CHAR_MIN)) self.assertEquals(CHAR_MAX, pyObjCPy(objc._C_CHR, long(CHAR_MAX))) self.assertEquals(CHAR_MIN, pyObjCPy(objc._C_CHR, long(CHAR_MIN))) self.assertEquals(CHAR_MAX, pyObjCPy(objc._C_CHR, float(CHAR_MAX))) self.assertEquals(CHAR_MIN, pyObjCPy(objc._C_CHR, float(CHAR_MIN))) # XXX: Is the right, chr(-1) raises an exception, and is not # equivalent to '\xff'. Should (char)-1 be converted to '\xff'/255 ? self.assertEquals(-1, pyObjCPy(objc._C_CHR, '\xff')) self.assertRaises(ValueError, pyObjCPy, objc._C_CHR, CHAR_MAX + 1) self.assertRaises(ValueError, pyObjCPy, objc._C_CHR, CHAR_MIN - 1)