import sys; sys.path.insert(0, "src") from buddy_fusion.fallback import fallback_genome, fuse_fallback from buddy_fusion.genome import Genome, ARCHETYPES def test_roll_is_deterministic_for_seed(): assert fallback_genome(7) == fallback_genome(7) def test_roll_varies_by_seed(): assert fallback_genome(1) != fallback_genome(2) def test_roll_always_has_valid_archetype(): for s in range(20): assert fallback_genome(s).archetype in ARCHETYPES def test_fuse_is_deterministic(): a, b = fallback_genome(1), fallback_genome(2) assert fuse_fallback(a, b, 5) == fuse_fallback(a, b, 5) def test_fuse_inherits_archetype_and_mutates(): a, b = fallback_genome(1), fallback_genome(2) child = fuse_fallback(a, b, 5) assert child.archetype in (a.archetype, b.archetype) # body plan from a parent assert child.traits # mutation trait present assert child.story # lineage flavor present