blob: 9d4c85afaa6da2049fde5066cadaa328bbe0f586 [file] [log] [blame]
Guido van Rossum7b8f1ab1999-10-19 17:48:54 +00001"""Test script for the binhex C module
Roger E. Masse2a1c8341997-01-16 16:44:09 +00002
3 Uses the mechanism of the python binhex module
Fred Drake275dfda2001-05-22 21:01:14 +00004 Based on an original test by Roger E. Masse.
Roger E. Masse2a1c8341997-01-16 16:44:09 +00005"""
6import binhex
Fred Drake275dfda2001-05-22 21:01:14 +00007import os
Fred Drake275dfda2001-05-22 21:01:14 +00008import unittest
Benjamin Petersonee8712c2008-05-20 21:35:26 +00009from test import support
Roger E. Masse2a1c8341997-01-16 16:44:09 +000010
Roger E. Masse2a1c8341997-01-16 16:44:09 +000011
Fred Drake275dfda2001-05-22 21:01:14 +000012class BinHexTestCase(unittest.TestCase):
Roger E. Masse2a1c8341997-01-16 16:44:09 +000013
Fred Drake275dfda2001-05-22 21:01:14 +000014 def setUp(self):
Benjamin Petersonee8712c2008-05-20 21:35:26 +000015 self.fname1 = support.TESTFN + "1"
16 self.fname2 = support.TESTFN + "2"
Nick Coghlanb3c728f2011-03-16 21:26:40 -040017 self.fname3 = support.TESTFN + "very_long_filename__very_long_filename__very_long_filename__very_long_filename__"
Fred Drake004d5e62000-10-23 17:22:08 +000018
Fred Drake275dfda2001-05-22 21:01:14 +000019 def tearDown(self):
Benjamin Petersonee8712c2008-05-20 21:35:26 +000020 support.unlink(self.fname1)
21 support.unlink(self.fname2)
Nick Coghlanb3c728f2011-03-16 21:26:40 -040022 support.unlink(self.fname3)
Roger E. Masse2a1c8341997-01-16 16:44:09 +000023
Guido van Rossumdcee3c02007-05-22 22:25:42 +000024 DATA = b'Jack is my hero'
Roger E. Masse2a1c8341997-01-16 16:44:09 +000025
Fred Drake275dfda2001-05-22 21:01:14 +000026 def test_binhex(self):
Guido van Rossumdcee3c02007-05-22 22:25:42 +000027 f = open(self.fname1, 'wb')
Fred Drake275dfda2001-05-22 21:01:14 +000028 f.write(self.DATA)
29 f.close()
Roger E. Masse2a1c8341997-01-16 16:44:09 +000030
Fred Drake275dfda2001-05-22 21:01:14 +000031 binhex.binhex(self.fname1, self.fname2)
32
33 binhex.hexbin(self.fname2, self.fname1)
34
Guido van Rossumdcee3c02007-05-22 22:25:42 +000035 f = open(self.fname1, 'rb')
Fred Drake275dfda2001-05-22 21:01:14 +000036 finish = f.readline()
37 f.close()
38
39 self.assertEqual(self.DATA, finish)
40
Nick Coghlanb3c728f2011-03-16 21:26:40 -040041 def test_binhex_error_on_long_filename(self):
42 """
43 The testcase fails if no exception is raised when a filename parameter provided to binhex.binhex()
44 is too long, or if the exception raised in binhex.binhex() is not an instance of binhex.Error.
45 """
46 f3 = open(self.fname3, 'wb')
47 f3.close()
48
49 self.assertRaises(binhex.Error, binhex.binhex, self.fname3, self.fname2)
Fred Drake275dfda2001-05-22 21:01:14 +000050
Fred Drake2e2be372001-09-20 21:33:42 +000051def test_main():
Benjamin Petersonee8712c2008-05-20 21:35:26 +000052 support.run_unittest(BinHexTestCase)
Fred Drake2e2be372001-09-20 21:33:42 +000053
54
55if __name__ == "__main__":
56 test_main()