from subprocess import run, PIPE import filecmp from unittest import TestCase, main import os import math class BinTestCase(TestCase): BASE_DIR = "test_data" def test_no_subcommand(self): result = run(["cargo", "run", "--", "rotate"], stderr=PIPE, stdout=PIPE) self.assertEqual(result.returncode, 2) def test_combine_no_args(self): result = run( ["cargo", "run", "--", "rotate", "combine"], stderr=PIPE, stdout=PIPE ) self.assertEqual(result.returncode, 2) def test_combine_one(self): input_files = ["test_data/first.egsphsp1"] output_file = "test_data/test_combined_output.egsphsp1" result = run( ["cargo", "run", "--", "combine"] + input_files + ["-o", output_file], stderr=PIPE, stdout=PIPE, ) self.assertEqual(result.returncode, 0) self.assertTrue( filecmp.cmp(output_file, "test_data/first.egsphsp1", shallow=False) ) def test_combine_two(self): input_files = ["test_data/first.egsphsp1", "test_data/second.egsphsp1"] output_file = "test_data/test_combined_output.egsphsp1" result = run( ["cargo", "run", "--", "combine"] + input_files + ["-o", output_file], stderr=PIPE, stdout=PIPE, ) self.assertEqual(result.returncode, 0) self.assertTrue( filecmp.cmp(output_file, "test_data/combined.egsphsp1", shallow=False) ) os.remove(output_file) def test_translate(self): input_file = "test_data/first.egsphsp1" output_file = "test_data/test_translate.egsphsp1" result = run( ["cargo", "run", "--", "translate", input_file, output_file, "-x", "10"] ) self.assertEqual(result.returncode, 0) result = run( ["cargo", "run", "--", "translate", "-i", output_file, "-x", "-10"] ) self.assertEqual(result.returncode, 0) result = run( ["cargo", "run", "--", "compare", input_file, output_file], stderr=PIPE, stdout=PIPE, ) self.assertEqual(result.returncode, 0) os.remove(output_file) def test_rotate(self): input_file = "test_data/first.egsphsp1" output_file = "test_data/test_rotate.egsphsp1" result = run( [ "cargo", "run", "--", "rotate", input_file, output_file, "-a", str(math.pi), ] ) self.assertEqual(result.returncode, 0) result = run( ["cargo", "run", "--", "rotate", "-i", output_file, "-a", str(math.pi)] ) self.assertEqual(result.returncode, 0) result = run( ["cargo", "run", "--", "compare", input_file, output_file], stderr=PIPE, stdout=PIPE, ) self.assertEqual(result.returncode, 0) os.remove(output_file) def test_reflect(self): input_file = "test_data/first.egsphsp1" output_file = "test_data/test_reflect.egsphsp1" result = run( ["cargo", "run", "--", "reflect", input_file, output_file, "-x", "1"] ) self.assertEqual(result.returncode, 0) result = run(["cargo", "run", "--", "reflect", "-i", output_file, "-x", "-1"]) self.assertEqual(result.returncode, 0) result = run( ["cargo", "run", "--", "compare", input_file, output_file], stderr=PIPE, stdout=PIPE, ) self.assertEqual(result.returncode, 0) os.remove(output_file) def _test_reweight(self): input_file = "test_data/first.egsphsp1" output_file = "test_data/test_reweight.egsphsp1" result = run( [ "cargo", "run", "--", "reweight", input_file, "-o", output_file, "-r", "100", "-c", "1", ] ) self.assertEqual(result.returncode, 0) result = run( ["cargo", "run", "--", "compare", input_file, output_file], stderr=PIPE, stdout=PIPE, ) self.assertEqual(result.returncode, 0) os.remove(output_file) if __name__ == "__main__": main()