Gen 3: test lineage-aware genome and prompt coherence

This commit is contained in:
Lord Lethris
2026-09-24 16:38:40 +01:00
parent 9d6593c9b7
commit 160ea25c0d
+94
View File
@@ -35,6 +35,8 @@ from _rpg_characters_test.gen3.nodes.dna_pipe import RPGCharacterDNAPipe
from _rpg_characters_test.gen3.nodes.dna_assembler import RPGCharacterDNAAssembler
from _rpg_characters_test.gen3.nodes.dna_prompt_builder import RPGCharacterDNAPromptBuilder
from _rpg_characters_test.gen3.dna.face_data import FACE_LOCUS_DATA
from _rpg_characters_test.gen3.dna.lineage_data import get_lineage
from _rpg_characters_test.gen3.dna.genome import make_genome
class TestGen3DNA(unittest.TestCase):
@@ -703,5 +705,97 @@ class TestGen3DNA(unittest.TestCase):
self.assertEqual(result["loci"][0]["selected"], "White")
self.assertEqual(result["loci"][0]["weights"]["1"], 0.75)
def test_gen3_genome_is_deterministic_and_persistent(self):
lineage = get_lineage("Dragon")
genome_a = make_genome(
seed=1234,
lineage="Dragon",
heritage="British",
gender="Male",
age="Elder",
lineage_data=lineage,
heritage_data={"phenotype_prompt": "human features"},
)
genome_b = make_genome(
seed=1234,
lineage="Dragon",
heritage="British",
gender="Male",
age="Elder",
lineage_data=lineage,
heritage_data={"phenotype_prompt": "human features"},
)
self.assertEqual(genome_a, genome_b)
self.assertEqual(genome_a["identity"]["lineage"], "Dragon")
self.assertFalse(genome_a["identity"]["heritage_compatible"])
self.assertTrue(genome_a["species_traits"]["horns"]["present"])
self.assertTrue(genome_a["species_traits"]["tail"]["present"])
self.assertTrue(genome_a["species_traits"]["wings"]["present"])
self.assertTrue(genome_a["species_traits"]["scales"]["present"])
def test_gen3_dragon_prompt_does_not_inherit_human_heritage_morphology(self):
inputs = RPGCharacterGen3.INPUT_TYPES()["required"]
values = {
name: options[0][0]
for name, options in inputs.items()
if isinstance(options, tuple) and isinstance(options[0], list)
}
values["race"] = "Dragon"
values["ethnicity"] = "British"
values["gender"] = "Male"
values["age"] = "Elder"
values["dna_seed"] = 1234
dna = RPGCharacterGen3().create_character(**values)[0]
positive, negative = RPGCharacterDNAPromptBuilder().build(dna)
self.assertIn("sapient dragon", positive)
self.assertIn("with horns", positive)
self.assertIn("with tail", positive)
self.assertIn("with wings", positive)
self.assertIn("with scales", positive)
self.assertNotIn("light to medium skin tone", positive)
self.assertNotIn("varied features", positive)
self.assertNotIn("heart-shaped face", positive)
self.assertNotIn("Pure Human/Fantasy Form", positive)
self.assertIn("human face", negative)
def test_gen3_tiefling_genome_requires_horns_and_tail(self):
inputs = RPGCharacterGen3.INPUT_TYPES()["required"]
values = {
name: options[0][0]
for name, options in inputs.items()
if isinstance(options, tuple) and isinstance(options[0], list)
}
values["race"] = "Tiefling"
values["dna_seed"] = 9876
dna = RPGCharacterGen3().create_character(**values)[0]
genome = dna["genome"]
self.assertEqual(genome["identity"]["lineage"], "Tiefling")
self.assertTrue(genome["species_traits"]["horns"]["present"])
self.assertTrue(genome["species_traits"]["tail"]["present"])
self.assertTrue(genome["species_traits"]["horn_type"])
self.assertTrue(genome["species_traits"]["tail_type"])
def test_gen3_incompatible_heritage_is_cultural_only(self):
inputs = RPGCharacterGen3.INPUT_TYPES()["required"]
values = {
name: options[0][0]
for name, options in inputs.items()
if isinstance(options, tuple) and isinstance(options[0], list)
}
values["race"] = "Dragon"
values["ethnicity"] = "Japanese"
values["dna_seed"] = 2222
dna = RPGCharacterGen3().create_character(**values)[0]
genome = dna["genome"]
self.assertFalse(genome["identity"]["heritage_compatible"])
self.assertEqual(genome["phenotype"]["heritage"], "")
if __name__ == "__main__":
unittest.main()