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()