14710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm# Copyright (C) 2003 Python Software Foundation 24710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 34710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport unittest 44710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport os 54710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom test import test_support 64710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport struct 74710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 84710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmMacOS = test_support.import_module('MacOS') 94710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm# The following should exist if MacOS does. 104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport applesingle 114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmAS_MAGIC=0x00051600 134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmAS_VERSION=0x00020000 144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmdataforkdata = 'hello\r\0world\n' 154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmresourceforkdata = 'goodbye\ncruel\0world\r' 164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmapplesingledata = struct.pack(">ll16sh", AS_MAGIC, AS_VERSION, "foo", 2) + \ 184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm struct.pack(">llllll", 1, 50, len(dataforkdata), 194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 2, 50+len(dataforkdata), len(resourceforkdata)) + \ 204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm dataforkdata + \ 214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm resourceforkdata 224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmTESTFN2 = test_support.TESTFN + '2' 234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmclass TestApplesingle(unittest.TestCase): 254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def setUp(self): 274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm fp = open(test_support.TESTFN, 'w') 284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm fp.write(applesingledata) 294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm fp.close() 304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def tearDown(self): 324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm try: 334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm os.unlink(test_support.TESTFN) 344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm except: 354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm pass 364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm try: 374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm os.unlink(TESTFN2) 384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm except: 394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm pass 404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def compareData(self, isrf, data): 424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm if isrf: 434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm fp = MacOS.openrf(TESTFN2, '*rb') 444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm else: 454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm fp = open(TESTFN2, 'rb') 464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm filedata = fp.read(1000) 474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(data, filedata) 484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_applesingle(self): 504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm try: 514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm os.unlink(TESTFN2) 524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm except: 534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm pass 544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm applesingle.decode(test_support.TESTFN, TESTFN2) 554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.compareData(False, dataforkdata) 564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.compareData(True, resourceforkdata) 574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_applesingle_resonly(self): 594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm try: 604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm os.unlink(TESTFN2) 614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm except: 624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm pass 634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm applesingle.decode(test_support.TESTFN, TESTFN2, resonly=True) 644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.compareData(False, resourceforkdata) 654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmdef test_main(): 674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm test_support.run_unittest(TestApplesingle) 684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmif __name__ == '__main__': 714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm test_main() 72