annotate gamelib/tests/test_lab.py @ 247:594c45f0f685

Don't reward science or schematics when we know everything
author Neil Muller <drnlmuller@gmail.com>
date Sun, 13 May 2012 00:50:18 +0200
parents 5b58e2150a4f
children
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
152
5b58e2150a4f Whoops, unused import.
Jeremy Thurgood <firxen@gmail.com>
parents: 151
diff changeset
3 from gamelib.lab import Lab
49
373c57ab4140 Product -> Schematic.
Jeremy Thurgood <firxen@gmail.com>
parents: 36
diff changeset
4 from gamelib import research, schematics
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': {
115
ef63532cac13 Rearrange SCIENCE a bit.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
9 'research.Physics': 5,
21
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
10 'research.Rocketry': 2,
115
ef63532cac13 Rearrange SCIENCE a bit.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
11 'research.Electrickery': 3,
151
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
12 'schematic.MachineGun': 1,
21
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
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
16
8
967480d228b6 Some not-really-tests.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
17 class TestLab(TestCase):
20
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
18 def test_new_lab(self):
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
19 all_sciences = set()
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
20 for _ in range(10):
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
21 lab = Lab()
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
22 research_areas = [r for r in lab.science
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
23 if isinstance(r, research.ResearchArea)]
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
24 self.assertEqual(3, len(research_areas))
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
25 for science in research_areas:
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
26 all_sciences.add(type(science))
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
27 self.assertTrue(len(all_sciences) > 3)
14
9d61abb3cfaf Better subclass handling.
Jeremy Thurgood <firxen@gmail.com>
parents: 8
diff changeset
28
49
373c57ab4140 Product -> Schematic.
Jeremy Thurgood <firxen@gmail.com>
parents: 36
diff changeset
29 def test_find_new_schematics(self):
21
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
30 lab = Lab(LAB_DATA)
49
373c57ab4140 Product -> Schematic.
Jeremy Thurgood <firxen@gmail.com>
parents: 36
diff changeset
31 new_schematics = lab.find_new_schematics()
148
3abb05f7e720 More science juggling.
Jeremy Thurgood <firxen@gmail.com>
parents: 115
diff changeset
32 self.assertTrue(schematics.LightningGun in new_schematics)
49
373c57ab4140 Product -> Schematic.
Jeremy Thurgood <firxen@gmail.com>
parents: 36
diff changeset
33 self.assertTrue(schematics.DoomsdayVirus not in new_schematics)
8
967480d228b6 Some not-really-tests.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
34
967480d228b6 Some not-really-tests.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
35 def test_find_new_research(self):
21
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
36 lab = Lab(LAB_DATA)
20
718d1ec382f7 Deserialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 17
diff changeset
37 new_research = lab.find_new_research()
115
ef63532cac13 Rearrange SCIENCE a bit.
Jeremy Thurgood <firxen@gmail.com>
parents: 49
diff changeset
38 self.assertTrue(research.Lasers in new_research)
17
10d3db1f1e08 Set up initial research and rework breakthroughs.
Jeremy Thurgood <firxen@gmail.com>
parents: 14
diff changeset
39 self.assertTrue(research.ArtificialIntelligence not in new_research)
21
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
40
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
41 def test_save_data(self):
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
42 # Check that we save what we loaded.
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
43 lab = Lab(LAB_DATA)
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
44 self.assertEqual(LAB_DATA, lab.save_data())
49
373c57ab4140 Product -> Schematic.
Jeremy Thurgood <firxen@gmail.com>
parents: 36
diff changeset
45 # Add a schematic and check that it gets saved as well.
373c57ab4140 Product -> Schematic.
Jeremy Thurgood <firxen@gmail.com>
parents: 36
diff changeset
46 lab._gain_science(schematics.LightningGun())
21
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
47 new_science = dict(
49
373c57ab4140 Product -> Schematic.
Jeremy Thurgood <firxen@gmail.com>
parents: 36
diff changeset
48 LAB_DATA['science'].items() + [('schematic.LightningGun', 0)])
21
bdc6bfc34ef2 Serialise lab data.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
49 self.assertEqual({'science': new_science}, lab.save_data())
151
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
50
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
51 def test_science_graph(self):
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
52 lab = Lab(LAB_DATA)
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
53 self.assertEqual((True, [research.Electrickery, research.Physics]),
372d886f9e70 New suggest_research() method on Lab.
Jeremy Thurgood <firxen@gmail.com>
parents: 148
diff changeset
54 lab.suggest_research())