n64/tests/testcases/rsp/generate.py
2020-09-23 00:59:27 -04:00

65 lines
1.7 KiB
Python
Executable file

#!/usr/bin/env python3
from typing import List
import os
import toml
import glob
cmakelists = open("CMakeLists.txt", "w")
cmakelists.write("# This file generated by the python script `generate.py` - it should not be edited by hand.\n")
def get_data_size(input_desc: List[str]) -> int:
size = 0
for elem in input_desc:
t, n = elem.split(":")
if t == "v128":
size += 16
elif t == "u32":
size += 4
else:
print("Unknown type: %s" % t)
exit(1)
return size
def get_just_filename(path: str):
base = os.path.basename(path)
name, ext = os.path.splitext(base)
return name
for filename in glob.glob("./input/*.toml"):
test_name = get_just_filename(filename)
cmakelists.write("configure_file(%s.golden %s.golden COPYONLY)\n" % (test_name, test_name))
cmakelists.write("configure_file(%s.rsp %s.rsp COPYONLY)\n" % (test_name, test_name))
cmakelists.write("configure_file(%s.input %s.input COPYONLY)\n" % (test_name, test_name))
test_data = toml.load(filename)
input_size = get_data_size(test_data["input_desc"])
output_size = get_data_size(test_data["output_desc"])
input_data = open("./%s.input" % test_name, "wb")
test_names = []
for test in test_data["test"]:
test_names.append(test["name"])
for val in test["input"]:
data = val.to_bytes(4, 'little')
input_data.write(data)
input_data.close()
addtest_line = "add_test(NAME test_rsp_%s COMMAND test_rsp %s %d %d" % (test_name, test_name, input_size, output_size)
for name in test_names:
addtest_line += " " + name
addtest_line += ")\n"
cmakelists.write(addtest_line)
cmakelists.close()