from stimulus_synthesis.spaces import Candidate, PromptSearchSpace def test_prompt_space_decode_mutate_and_crossover(): space = PromptSearchSpace( prompt_banks={ "subject": ["person", "face"], "action": ["running", "walking"], } ) cand = Candidate((0, 1)) assert space.decode(cand) == "person walking" assert len(space.mutate(cand, mutation_rate=1.0).genes) == 2 child_a, child_b = space.crossover(Candidate((0, 0)), Candidate((1, 1)), crossover_rate=1.0) assert len(child_a.genes) == 2 assert len(child_b.genes) == 2