annotate gamelib/tests/test_lab.py @ 21:bdc6bfc34ef2

Serialise lab data.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 06 May 2012 18:34:28 +0200
parents 718d1ec382f7
children 23720d0fd9a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
967480d228b6 Some not-really-tests.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
1 from unittest import TestCase
967480d228b6 Some not-really-tests.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
2
967480d228b6 Some not-really-tests.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
3 from gamelib.lab import Lab
14
9d61abb3cfaf Better subclass handling.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
4 from gamelib import research, products
8
967480d228b6 Some not-really-tests.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
5
967480d228b6 Some not-really-tests.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
6
21
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
7 LAB_DATA = {
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
8 'science': {
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
9 'research.Robotics': 1,
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
10 'research.Rocketry': 2,
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
11 'research.Tesla': 3,
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
12 },
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
13 }
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
14
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
15
8
967480d228b6 Some not-really-tests.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
16 class TestLab(TestCase):
20
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
17 def test_new_lab(self):
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
18 all_sciences = set()
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
19 for _ in range(10):
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
20 lab = Lab()
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
21 research_areas = [r for r in lab.science
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
22 if isinstance(r, research.ResearchArea)]
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
23 self.assertEqual(3, len(research_areas))
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
24 for science in research_areas:
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
25 all_sciences.add(type(science))
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
26 self.assertTrue(len(all_sciences) > 3)
14
9d61abb3cfaf Better subclass handling.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
27
8
967480d228b6 Some not-really-tests.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
28 def test_find_new_products(self):
21
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
29 lab = Lab(LAB_DATA)
20
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
30 new_products = lab.find_new_products(None)
17
10d3db1f1e08 Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 14
diff changeset
31 self.assertTrue(products.TeslaTank in new_products)
14
9d61abb3cfaf Better subclass handling.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
32 self.assertTrue(products.DoomsdayVirus not in new_products)
8
967480d228b6 Some not-really-tests.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
33
967480d228b6 Some not-really-tests.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
34 def test_find_new_research(self):
21
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
35 lab = Lab(LAB_DATA)
20
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
36 new_research = lab.find_new_research()
17
10d3db1f1e08 Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 14
diff changeset
37 self.assertTrue(research.Space in new_research)
10d3db1f1e08 Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 14
diff changeset
38 self.assertTrue(research.ArtificialIntelligence not in new_research)
21
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
39
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
40 def test_save_data(self):
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
41 # Check that we save what we loaded.
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
42 lab = Lab(LAB_DATA)
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
43 self.assertEqual(LAB_DATA, lab.save_data())
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
44 # Add a product and check that it gets saved as well.
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
45 lab._gain_science(products.LightningGun())
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
46 new_science = dict(
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
47 LAB_DATA['science'].items() + [('products.LightningGun', 0)])
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
48 self.assertEqual({'science': new_science}, lab.save_data())