summaryrefslogtreecommitdiff
path: root/tools/tests
diff options
context:
space:
mode:
authorcirakg <cirakg@cirakg.xyz>2026-10-20 01:51:05 +0200
committercirakg <cirakg@cirakg.xyz>2026-10-20 01:51:05 +0200
commit42f9331e693f5058fcfcd7aef5a92cabc04c20ee (patch)
treef3dab2657eb592ee468e6cebc9b47d9da7e08683 /tools/tests
parentd537f4e154a40075405b0ab2fed14fbe2eeaac81 (diff)
test(import): cover parsers, importer and a seeded fuzz corpus; import 100 entries in the UI flow
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tools/tests')
-rw-r--r--tools/tests/test_gen_fuzz_corpus.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/tools/tests/test_gen_fuzz_corpus.py b/tools/tests/test_gen_fuzz_corpus.py
new file mode 100644
index 0000000..5ce8c99
--- /dev/null
+++ b/tools/tests/test_gen_fuzz_corpus.py
@@ -0,0 +1,41 @@
+# Author: cirakg & claude ai
+# Summary: Tests for the fuzz corpus generator: determinism, mutation, valid Monkey C output, and the committed corpus.
+from __future__ import annotations
+
+import random
+from pathlib import Path
+
+import gen_fuzz_corpus
+
+ROOT = Path(__file__).resolve().parents[2]
+
+
+def test_same_seed_gives_the_same_corpus() -> None:
+ assert gen_fuzz_corpus.corpus(7, 10, 10) == gen_fuzz_corpus.corpus(7, 10, 10)
+ assert gen_fuzz_corpus.corpus(7, 10, 10) != gen_fuzz_corpus.corpus(8, 10, 10)
+
+
+def test_corpus_starts_with_the_valid_seeds() -> None:
+ jsons, uris = gen_fuzz_corpus.corpus(1, 5, 5)
+ assert jsons[0] == gen_fuzz_corpus.AEGIS_SEED.encode()
+ assert uris[: len(gen_fuzz_corpus.URI_SEEDS)] == [u.encode() for u in gen_fuzz_corpus.URI_SEEDS]
+ assert len(jsons) == 5 and len(uris) == 5
+
+
+def test_mutate_changes_the_input() -> None:
+ rng = random.Random(3)
+ base = gen_fuzz_corpus.AEGIS_SEED.encode()
+ assert sum(gen_fuzz_corpus.mutate(base, rng) != base for _ in range(20)) >= 19
+
+
+def test_render_puts_commas_outside_the_comments() -> None:
+ text = gen_fuzz_corpus.render([b"{}", b"[]"], [b"x"], 1)
+ assert '"7b7d", // lint: allow-literal' in text
+ assert '"5b5d" // lint: allow-literal' in text
+ assert text.startswith("// Author: cirakg & claude ai\n// Summary:")
+
+
+def test_committed_corpus_matches_the_generator() -> None:
+ jsons, uris = gen_fuzz_corpus.corpus(4242, 50, 50)
+ committed = (ROOT / "test" / "data" / "FuzzCorpus.mc").read_text(encoding="utf-8")
+ assert committed == gen_fuzz_corpus.render(jsons, uris, 4242)