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()