Home | History | Annotate | Download | only in test
      1 # Copyright (C) 2003 Python Software Foundation
      2 
      3 import unittest
      4 import os
      5 from test import test_support
      6 import struct
      7 
      8 MacOS = test_support.import_module('MacOS')
      9 # The following should exist if MacOS does.
     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 
     17 applesingledata = struct.pack(">ll16sh", AS_MAGIC, AS_VERSION, "foo", 2) + \
     18     struct.pack(">llllll", 1, 50, len(dataforkdata),
     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)
     57 
     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()
     72