| Jack Jansen | c0b2b72 | 2003-11-18 22:36:12 +0000 | [diff] [blame] | 1 | # Copyright (C) 2003 Python Software Foundation | 
 | 2 |  | 
 | 3 | import unittest | 
| Jack Jansen | c0b2b72 | 2003-11-18 22:36:12 +0000 | [diff] [blame] | 4 | import os | 
| Jack Jansen | c0b2b72 | 2003-11-18 22:36:12 +0000 | [diff] [blame] | 5 | from test import test_support | 
 | 6 | import struct | 
| R. David Murray | 59beec3 | 2009-03-30 19:04:00 +0000 | [diff] [blame] | 7 |  | 
 | 8 | MacOS = test_support.import_module('MacOS') | 
 | 9 | # The following should exist if MacOS does. | 
| Jack Jansen | c0b2b72 | 2003-11-18 22:36:12 +0000 | [diff] [blame] | 10 | import applesingle | 
 | 11 |  | 
 | 12 | AS_MAGIC=0x00051600 | 
 | 13 | AS_VERSION=0x00020000 | 
 | 14 | dataforkdata = 'hello\r\0world\n' | 
 | 15 | resourceforkdata = 'goodbye\ncruel\0world\r' | 
 | 16 |  | 
| Ronald Oussoren | 6c10748 | 2006-04-17 13:40:08 +0000 | [diff] [blame] | 17 | applesingledata = struct.pack(">ll16sh", AS_MAGIC, AS_VERSION, "foo", 2) + \ | 
 | 18 |     struct.pack(">llllll", 1, 50, len(dataforkdata), | 
| Jack Jansen | c0b2b72 | 2003-11-18 22:36:12 +0000 | [diff] [blame] | 19 |         2, 50+len(dataforkdata), len(resourceforkdata)) + \ | 
 | 20 |     dataforkdata + \ | 
 | 21 |     resourceforkdata | 
 | 22 | TESTFN2 = test_support.TESTFN + '2' | 
 | 23 |  | 
 | 24 | class TestApplesingle(unittest.TestCase): | 
 | 25 |  | 
 | 26 |     def setUp(self): | 
 | 27 |         fp = open(test_support.TESTFN, 'w') | 
 | 28 |         fp.write(applesingledata) | 
 | 29 |         fp.close() | 
 | 30 |  | 
 | 31 |     def tearDown(self): | 
 | 32 |         try: | 
 | 33 |             os.unlink(test_support.TESTFN) | 
 | 34 |         except: | 
 | 35 |             pass | 
 | 36 |         try: | 
 | 37 |             os.unlink(TESTFN2) | 
 | 38 |         except: | 
 | 39 |             pass | 
 | 40 |  | 
 | 41 |     def compareData(self, isrf, data): | 
 | 42 |         if isrf: | 
 | 43 |             fp = MacOS.openrf(TESTFN2, '*rb') | 
 | 44 |         else: | 
 | 45 |             fp = open(TESTFN2, 'rb') | 
 | 46 |         filedata = fp.read(1000) | 
 | 47 |         self.assertEqual(data, filedata) | 
 | 48 |  | 
 | 49 |     def test_applesingle(self): | 
 | 50 |         try: | 
 | 51 |             os.unlink(TESTFN2) | 
 | 52 |         except: | 
 | 53 |             pass | 
 | 54 |         applesingle.decode(test_support.TESTFN, TESTFN2) | 
 | 55 |         self.compareData(False, dataforkdata) | 
 | 56 |         self.compareData(True, resourceforkdata) | 
| Tim Peters | 58eb11c | 2004-01-18 20:29:55 +0000 | [diff] [blame] | 57 |  | 
| Jack Jansen | c0b2b72 | 2003-11-18 22:36:12 +0000 | [diff] [blame] | 58 |     def test_applesingle_resonly(self): | 
 | 59 |         try: | 
 | 60 |             os.unlink(TESTFN2) | 
 | 61 |         except: | 
 | 62 |             pass | 
 | 63 |         applesingle.decode(test_support.TESTFN, TESTFN2, resonly=True) | 
 | 64 |         self.compareData(False, resourceforkdata) | 
 | 65 |  | 
 | 66 | def test_main(): | 
 | 67 |     test_support.run_unittest(TestApplesingle) | 
 | 68 |  | 
 | 69 |  | 
 | 70 | if __name__ == '__main__': | 
 | 71 |     test_main() |