10a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoimport unittest 20a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 30a8c90248264a8b26970b4473770bcc3df8515fJosh Gaofrom ctypes import * 40a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoimport _ctypes_test 50a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 60a8c90248264a8b26970b4473770bcc3df8515fJosh Gaolib = CDLL(_ctypes_test.__file__) 70a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 80a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass LibTest(unittest.TestCase): 90a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_sqrt(self): 100a8c90248264a8b26970b4473770bcc3df8515fJosh Gao lib.my_sqrt.argtypes = c_double, 110a8c90248264a8b26970b4473770bcc3df8515fJosh Gao lib.my_sqrt.restype = c_double 120a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(lib.my_sqrt(4.0), 2.0) 130a8c90248264a8b26970b4473770bcc3df8515fJosh Gao import math 140a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(lib.my_sqrt(2.0), math.sqrt(2.0)) 150a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 160a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_qsort(self): 170a8c90248264a8b26970b4473770bcc3df8515fJosh Gao comparefunc = CFUNCTYPE(c_int, POINTER(c_char), POINTER(c_char)) 180a8c90248264a8b26970b4473770bcc3df8515fJosh Gao lib.my_qsort.argtypes = c_void_p, c_size_t, c_size_t, comparefunc 190a8c90248264a8b26970b4473770bcc3df8515fJosh Gao lib.my_qsort.restype = None 200a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 210a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def sort(a, b): 220a8c90248264a8b26970b4473770bcc3df8515fJosh Gao return cmp(a[0], b[0]) 230a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 240a8c90248264a8b26970b4473770bcc3df8515fJosh Gao chars = create_string_buffer("spam, spam, and spam") 250a8c90248264a8b26970b4473770bcc3df8515fJosh Gao lib.my_qsort(chars, len(chars)-1, sizeof(c_char), comparefunc(sort)) 260a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(chars.raw, " ,,aaaadmmmnpppsss\x00") 270a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 280a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoif __name__ == "__main__": 290a8c90248264a8b26970b4473770bcc3df8515fJosh Gao unittest.main() 30