"""Behavioral tests. Author: Sandeep Belgavi.""" import unittest from pattern_01 import Decision, run, demo_adapter class BoundedTests(unittest.TestCase): def test_completion_requires_read(self): self.assertEqual(run(demo_adapter, {"latency": "high"})["status"], "complete") def test_unfounded_finish(self): self.assertEqual(run(lambda _: Decision("finish"), {})["status"], "unsupported") def test_write_denied(self): self.assertEqual(run(lambda _: Decision("restart"), {})["status"], "denied") def test_limit(self): self.assertEqual(run(demo_adapter, {"latency": "high"}, 1)["status"], "exhausted") def test_repeated_read(self): self.assertEqual(run(lambda _: Decision("read", "x"), {"x": 1})["status"], "repeated") def test_invalid_adapter(self): self.assertEqual(run(lambda _: "finish", {})["status"], "invalid") self.assertEqual(run(lambda _: Decision("read", []), {})["status"], "invalid") def test_adapter_error(self): def fail(_): raise RuntimeError("synthetic") self.assertEqual(run(fail, {})["status"], "adapter_error") def test_invalid_budget(self): for n in (0, -1, True, 101): with self.assertRaises(ValueError): run(demo_adapter, {}, n) if __name__ == "__main__": unittest.main()