owenrusk.dev

casebench

test cases straight onto the board.

git clone https://owenrusk.dev/casebench.git

casebench / tests/test_list_pull.py -rw-r--r-- · 2749 bytes

 1 import unittest
 2 
 3 from casebench.memstore import MemStore
 4 
 5 from .helpers import UMBRELLA, run
 6 
 7 
 8 class ListTest(unittest.TestCase):
 9     def setUp(self):
10         self.store = MemStore(("owen", "tess"))
11         self.owen = self.store.player("owen")
12         self.store.runtime_case(self.owen, "case-x", "A real case")
13         self.store.runtime_case(self.owen, "case-y", "Another real case")
14         run(self.store, "put", str(UMBRELLA), "--player", "owen")
15 
16     def test_bench_cases_and_bench_locks_only(self):
17         run(self.store, "lock", "case-y", "--answer", "a", "--player", "owen")
18         run(self.store, "note", "test-lost-umbrella", "one", "--player", "owen")
19         run(self.store, "note", "test-lost-umbrella", "two", "--item", "log", "--player", "owen")
20         code, out, _ = run(self.store, "list")
21         self.assertEqual(code, 0)
22         self.assertEqual(
23             out.splitlines(),
24             [
25                 "owen\tcase-y\tAnother real case\truntime, locked",
26                 "owen\ttest-lost-umbrella\tThe lost umbrella\tbench, 2 notes",
27             ],
28         )
29 
30     def test_one_player(self):
31         run(self.store, "put", str(UMBRELLA), "--player", "tess")
32         _, out, _ = run(self.store, "list", "--player", "tess")
33         self.assertEqual(out, "tess\ttest-lost-umbrella\tThe lost umbrella\tbench\n")
34 
35 
36 class PullTest(unittest.TestCase):
37     def setUp(self):
38         self.store = MemStore(("owen", "tess"))
39         self.owen = self.store.player("owen")
40         run(self.store, "put", str(UMBRELLA), "--all")
41 
42     def test_pull(self):
43         run(self.store, "lock", "test-lost-umbrella", "--answer", "a", "--player", "owen")
44         code, out, _ = run(self.store, "pull", "test-lost-umbrella", "--player", "owen")
45         self.assertEqual((code, out), (0, "owen: pulled test-lost-umbrella\n"))
46         self.assertIsNone(self.store.placed(self.owen, "test-lost-umbrella"))
47         self.assertIsNotNone(self.store.placed(self.store.player("tess"), "test-lost-umbrella"))
48 
49     def test_pull_everywhere(self):
50         run(self.store, "pull", "test-lost-umbrella", "--all")
51         self.assertEqual(self.store.cases, {})
52 
53     def test_never_a_runtime_case(self):
54         self.store.runtime_case(self.owen, "case-x", "A real case")
55         code, _, err = run(self.store, "pull", "case-x", "--player", "owen")
56         self.assertEqual(code, 1)
57         self.assertIn("came from the runtime", err)
58         self.assertIsNotNone(self.store.placed(self.owen, "case-x"))
59 
60     def test_not_on_the_board(self):
61         code, _, err = run(self.store, "pull", "test-other", "--player", "owen")
62         self.assertEqual(code, 1)
63         self.assertIn("doesn't have test-other", err)
64 
65 
66 if __name__ == "__main__":
67     unittest.main()