import unittest from logicbench.skeletons import generate_skeletons, resolve_length class SkeletonTests(unittest.TestCase): def test_short_means_two_proof_bearing_operations(self): skeletons = generate_skeletons(count=3, length="short", seed=42) self.assertEqual([item.complexity for item in skeletons], [2, 2, 2]) self.assertEqual([item.family for item in skeletons], [ "transitive_order", "membership_inheritance", "sequential_state_update", ]) self.assertTrue(all(len(item.proof) == 2 for item in skeletons)) def test_generation_is_deterministic(self): first = [item.to_dict() for item in generate_skeletons(6, 4, seed=7)] second = [item.to_dict() for item in generate_skeletons(6, 4, seed=7)] self.assertEqual(first, second) def test_renderer_never_receives_gold_or_proof(self): skeleton = generate_skeletons(1, "short", seed=1)[0] payload = skeleton.renderer_payload() self.assertNotIn("gold_answer", payload) self.assertNotIn("proof", payload) self.assertIn("answer_options", payload) def test_length_validation(self): self.assertEqual(resolve_length("medium"), 4) self.assertEqual(resolve_length("5"), 5) with self.assertRaises(ValueError): resolve_length("huge") if __name__ == "__main__": unittest.main()