annotate gamelib/tests/test_schematics.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 168cfac9a445
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
54
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
1 from unittest import TestCase
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
2
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
3 from gamelib.schematics import Schematic
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
4
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
5
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
6 class WaterPistol(Schematic):
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
7 NAME = "water pistol"
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
8
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
9 # Power and reliability
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
10 PROTOTYPE_RELIABILITY = 0.4
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
11 PRODUCTION_RELIABILITY = 0.8
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
12 BASE_POWER = 5
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
13 POWER_INCREMENT = 2
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
14
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
15
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
16 class TestSchematic(TestCase):
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
17 def assertNearlyEqual(self, a, b, epsilon=0.001):
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
18 if abs(a - b) > epsilon:
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
19 self.assertEqual(a, b)
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
20
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
21 def test_schematic_reliability(self):
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
22 gun = WaterPistol()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
23 self.assertNearlyEqual(0.4, gun.reliability())
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
24 gun.spend_point()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
25 self.assertNearlyEqual(0.8, gun.reliability())
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
26 gun.spend_point()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
27 self.assertNearlyEqual(0.91, gun.reliability())
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
28 gun.spend_point()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
29 self.assertNearlyEqual(0.96, gun.reliability())
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
30
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
31 def test_schematic_power(self):
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
32 gun = WaterPistol()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
33 self.assertEqual(5, gun.power())
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
34 gun.spend_point()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
35 self.assertEqual(7, gun.power())
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
36 gun.spend_point()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
37 self.assertEqual(9, gun.power())
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
38 gun.spend_point()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
39 self.assertEqual(11, gun.power())
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
40
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
41 def test_schematic_power_none(self):
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
42 gun = WaterPistol()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
43 gun.BASE_POWER = None
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
44 self.assertEqual(None, gun.power())
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
45 gun.spend_point()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
46 self.assertEqual(None, gun.power())
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
47
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
48 def test_schematic_power_static(self):
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
49 gun = WaterPistol()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
50 gun.POWER_INCREMENT = None
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
51 self.assertEqual(5, gun.power())
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
52 gun.spend_point()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
53 self.assertEqual(5, gun.power())
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
54 gun.spend_point()
168cfac9a445 Power and reliability.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
55 self.assertEqual(5, gun.power())