decompile-verify / tests /test_examples.py
ejschwartz's picture
Add three Faultless completeness examples
52a9362
Raw History Blame Contribute Delete
1.61 kB
from pathlib import Path
from demo import examples
def test_examples_prepare_from_core_checkout(tmp_path):
rows = examples.prepare_examples(tmp_path)
assert len(rows) == len(examples.EXAMPLE_NAMES) == 63
assert len(examples.GHIDRA_EXAMPLE_NAMES) == 21
assert all(Path(row[0]).is_file() for row in rows)
assert all(Path(row[0]).is_relative_to(tmp_path) for row in rows)
assert all(row[2] for row in rows)
assert len(examples.reference_sources()) == len(rows)
def test_example_groups_cover_catalog_once():
members = [name for _, names in examples.EXAMPLE_GROUPS for name in names]
assert len(members) == len(set(members)) == len(examples.EXAMPLE_NAMES)
assert set(members) == set(examples.EXAMPLE_NAMES)
groups = examples.example_groups(examples.EXAMPLE_NAMES)
assert [len(indices) for _, indices in groups] == [6, 7, 8, 3, 18, 21]
for _, indices in groups:
assert list(indices) == sorted(indices)
def test_example_groups_filter_subsets_and_omit_empty_sections():
names = ("ghidra-identical", "tail-call", "identical")
assert examples.example_groups(names) == (
("Basics", (2,)), ("Calls and memory", (1,)), ("Ghidra exports", (0,)))
assert examples.example_groups(()) == ()
assert examples.example_groups(examples.GHIDRA_EXAMPLE_NAMES) == (
("Ghidra exports", tuple(range(21))),)
original = examples.example_groups(examples.ORIGINAL_EXAMPLE_NAMES)
assert all(label != "Ghidra exports" for label, _ in original)
assert sum(len(indices) for _, indices in original) == len(examples.ORIGINAL_EXAMPLE_NAMES)