38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
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()
|