Home | History | Annotate | Download | only in test
      1 """Test script for the binhex C module
      2 
      3    Uses the mechanism of the python binhex module
      4    Based on an original test by Roger E. Masse.
      5 """
      6 import binhex
      7 import unittest
      8 from test import support
      9 
     10 
     11 class BinHexTestCase(unittest.TestCase):
     12 
     13     def setUp(self):
     14         self.fname1 = support.TESTFN + "1"
     15         self.fname2 = support.TESTFN + "2"
     16         self.fname3 = support.TESTFN + "very_long_filename__very_long_filename__very_long_filename__very_long_filename__"
     17 
     18     def tearDown(self):
     19         support.unlink(self.fname1)
     20         support.unlink(self.fname2)
     21         support.unlink(self.fname3)
     22 
     23     DATA = b'Jack is my hero'
     24 
     25     def test_binhex(self):
     26         f = open(self.fname1, 'wb')
     27         f.write(self.DATA)
     28         f.close()
     29 
     30         binhex.binhex(self.fname1, self.fname2)
     31 
     32         binhex.hexbin(self.fname2, self.fname1)
     33 
     34         f = open(self.fname1, 'rb')
     35         finish = f.readline()
     36         f.close()
     37 
     38         self.assertEqual(self.DATA, finish)
     39 
     40     def test_binhex_error_on_long_filename(self):
     41         """
     42         The testcase fails if no exception is raised when a filename parameter provided to binhex.binhex()
     43         is too long, or if the exception raised in binhex.binhex() is not an instance of binhex.Error.
     44         """
     45         f3 = open(self.fname3, 'wb')
     46         f3.close()
     47 
     48         self.assertRaises(binhex.Error, binhex.binhex, self.fname3, self.fname2)
     49 
     50 def test_main():
     51     support.run_unittest(BinHexTestCase)
     52 
     53 
     54 if __name__ == "__main__":
     55     test_main()
     56