| # @file | |
| # Split a file into two pieces at the request offset. | |
| # | |
| # Copyright (c) 2021, Intel Corporation. All rights reserved.<BR> | |
| # | |
| # SPDX-License-Identifier: BSD-2-Clause-Patent | |
| # | |
| ## | |
| # Import Modules | |
| import unittest | |
| import tempfile | |
| import os | |
| import shutil | |
| import Split.Split as sp | |
| import struct as st | |
| class TestSplit(unittest.TestCase): | |
| def setUp(self): | |
| self.tmpdir = tempfile.mkdtemp() | |
| self.binary_file = os.path.join(self.tmpdir, "Binary.bin") | |
| self.create_inputfile() | |
| def tearDown(self): | |
| if os.path.exists(self.tmpdir): | |
| shutil.rmtree(self.tmpdir) | |
| def test_splitFile_position(self): | |
| position = [-1, 0, 256, 512, 700, 1024, 2048] | |
| result = [(0, 1024), (0, 1024), (256, 768), | |
| (512, 512), (700, 324), (1024, 0), (1024, 0)] | |
| outputfolder = self.tmpdir | |
| for index, po in enumerate(position): | |
| try: | |
| sp.splitFile(self.binary_file, po) | |
| except Exception as e: | |
| self.assertTrue(False, msg="splitFile function error") | |
| output1 = os.path.join(outputfolder, "Binary.bin1") | |
| output2 = os.path.join(outputfolder, "Binary.bin2") | |
| with open(output1, "rb") as f1: | |
| size1 = len(f1.read()) | |
| with open(output2, "rb") as f2: | |
| size2 = len(f2.read()) | |
| ex_result = result[index] | |
| self.assertEqual(size1, ex_result[0]) | |
| self.assertEqual(size2, ex_result[1]) | |
| def create_inputfile(self): | |
| with open(self.binary_file, "wb") as fout: | |
| for i in range(512): | |
| fout.write(st.pack("<H", i)) | |
| def test_splitFile_outputfile(self): | |
| output = [ | |
| None, | |
| "Binary.bin", | |
| "Binary1.bin", | |
| r"output/Binary1.bin", | |
| os.path.abspath( r"output/Binary1.bin") | |
| ] | |
| expected_output = [ | |
| os.path.join(os.path.dirname(self.binary_file),"Binary.bin1" ), | |
| os.path.join(os.getcwd(),"Binary.bin"), | |
| os.path.join(os.getcwd(),"Binary1.bin"), | |
| os.path.join(os.getcwd(),r"output/Binary1.bin"), | |
| os.path.join(os.path.abspath( r"output/Binary1.bin")) | |
| ] | |
| for index, o in enumerate(output): | |
| try: | |
| sp.splitFile(self.binary_file, 123, outputfile1=o) | |
| except Exception as e: | |
| self.assertTrue(False, msg="splitFile function error") | |
| self.assertTrue(os.path.exists(expected_output[index])) | |
| self.create_inputfile() | |
| def test_splitFile_outputfolder(self): | |
| outputfolder = [ | |
| None, | |
| "output", | |
| r"output1/output2", | |
| os.path.abspath("output"), | |
| "output" | |
| ] | |
| output = [ | |
| None, | |
| None, | |
| "Binary1.bin", | |
| r"output/Binary1.bin", | |
| os.path.abspath( r"output_1/Binary1.bin") | |
| ] | |
| expected_output = [ | |
| os.path.join(os.path.dirname(self.binary_file),"Binary.bin1" ), | |
| os.path.join(os.getcwd(),"output", "Binary.bin1"), | |
| os.path.join(os.getcwd(), r"output1/output2" , "Binary1.bin"), | |
| os.path.join(os.getcwd(),r"output", "output/Binary1.bin"), | |
| os.path.join(os.path.abspath( r"output/Binary1.bin")) | |
| ] | |
| for index, o in enumerate(outputfolder): | |
| try: | |
| sp.splitFile(self.binary_file, 123, outputdir=o,outputfile1=output[index]) | |
| except Exception as e: | |
| self.assertTrue(False, msg="splitFile function error") | |
| self.assertTrue(os.path.exists(expected_output[index])) | |
| self.create_inputfile() | |
| if __name__ == '__main__': | |
| unittest.main() |