blacken sources
This commit is contained in:
66
test/test_assemble.py
Normal file
66
test/test_assemble.py
Normal file
@@ -0,0 +1,66 @@
|
||||
from gbasm.gbasm import assemble
|
||||
|
||||
from pathlib import Path
|
||||
import os
|
||||
import yaml
|
||||
import pytest
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.basicConfig(format="")
|
||||
logging.getLogger().setLevel(logging.INFO)
|
||||
|
||||
|
||||
class AssembleCase(object):
|
||||
def __init__(self, name: str, program: str, expected: bytes):
|
||||
self.name = name
|
||||
self.program = program
|
||||
self.expected = expected
|
||||
|
||||
|
||||
def find_case_files(subdir: str):
|
||||
test_root = Path(os.path.dirname(os.path.abspath(__file__)))
|
||||
case_root = test_root / "cases" / subdir
|
||||
return case_root.glob("**/*.yaml")
|
||||
|
||||
|
||||
def get_test_cases(subdir: str):
|
||||
cases = []
|
||||
files = find_case_files(subdir)
|
||||
for f in files:
|
||||
index = 0
|
||||
with open(str(f), "r") as yaml_file:
|
||||
test_descs = yaml.safe_load_all(yaml_file)
|
||||
for desc in test_descs:
|
||||
try:
|
||||
case = AssembleCase(
|
||||
desc["name"], desc["program"], bytes(desc["expected"])
|
||||
)
|
||||
except TypeError:
|
||||
logger.exception("Failed to parse yaml: %s", desc)
|
||||
cases.append(case)
|
||||
return cases
|
||||
|
||||
|
||||
instruction_cases = get_test_cases("instructions")
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"case", instruction_cases, ids=[case.name for case in instruction_cases]
|
||||
)
|
||||
def test_assemble_instruction(case):
|
||||
lines = case.program.split("\n")
|
||||
assembled = assemble(lines)
|
||||
assert assembled == case.expected
|
||||
|
||||
|
||||
format_cases = get_test_cases("format")
|
||||
|
||||
|
||||
@pytest.mark.parametrize("case", format_cases, ids=[case.name for case in format_cases])
|
||||
def test_format_instruction(case):
|
||||
lines = case.program.split("\n")
|
||||
assembled = assemble(lines)
|
||||
assert assembled == case.expected
|
||||
Reference in New Issue
Block a user