tests: verbessere die Verantwortung der Trefferpunkte-Verarbeitung
This commit is contained in:
+74
-21
@@ -1,32 +1,85 @@
|
||||
import unittest
|
||||
|
||||
from test_mech import AbstractTestMechAmor, INNER_ARMOR, OUTER_ARMOR
|
||||
from MechFabrik.bauteile import AreaNames, AreaStatus
|
||||
from test_mech import AbstractTestMechAmor, INNER_ARMOR, NEXT_OUTER_ZONE, OUTER_ARMOR
|
||||
from MechFabrik.bauteile import Area, AreaStatus, OuterAmor, StrikeEvent, ZoneNames
|
||||
|
||||
|
||||
class TestMechAmor(AbstractTestMechAmor):
|
||||
|
||||
def test_process(self):
|
||||
for area_name in AreaNames:
|
||||
area = self.mech.inner_structure.areas.get(area_name)
|
||||
start_armor = OUTER_ARMOR[area_name]
|
||||
start_inner_armor = INNER_ARMOR[area_name]
|
||||
for zone_name in ZoneNames:
|
||||
with self.subTest(msg=zone_name.value):
|
||||
zone = self.mech.inner_structure.zones.get(zone_name)
|
||||
area = zone.area
|
||||
start_outer_armor = OUTER_ARMOR[zone_name]
|
||||
start_inner_armor = INNER_ARMOR[NEXT_OUTER_ZONE[zone_name]]
|
||||
|
||||
self.assertEqual(start_armor, area.armor)
|
||||
self.assertEqual(start_inner_armor, area.inner_armor)
|
||||
self.assertEqual(AreaStatus.FINE, area.state)
|
||||
self.assertEqual(start_outer_armor, zone.armor)
|
||||
self.assertEqual(area, zone.parent)
|
||||
self.assertEqual(start_inner_armor, area.armor)
|
||||
self.assertEqual(AreaStatus.FINE, zone.state)
|
||||
self.assertEqual(AreaStatus.FINE, area.state)
|
||||
|
||||
self.mech.strike(area_name, start_armor - 3)
|
||||
self.assertEqual(3, area.armor)
|
||||
self.assertEqual(start_inner_armor, area.inner_armor)
|
||||
self.assertEqual(AreaStatus.FINE, area.state)
|
||||
event = self.mech.strike(zone_name, 10)
|
||||
self.assertEqual(start_outer_armor, zone.armor)
|
||||
self.assertEqual(start_inner_armor, area.armor)
|
||||
self.assertEqual(AreaStatus.FINE, zone.state)
|
||||
self.assertEqual(AreaStatus.FINE, area.state)
|
||||
self.assertIsInstance(event, StrikeEvent)
|
||||
self.assertEqual(zone, event.zone)
|
||||
self.assertEqual(10, event.hits)
|
||||
self.assertEqual(area, event.zone.parent)
|
||||
|
||||
self.mech.strike(area_name, 4)
|
||||
self.assertEqual(0, area.armor)
|
||||
self.assertEqual(start_inner_armor - 1, area.inner_armor)
|
||||
self.assertEqual(AreaStatus.CRITICAL_STRIKE, area.state)
|
||||
def test_strike(self):
|
||||
start_outer_armor = 11
|
||||
start_area_armor = 5
|
||||
start_parent_armor = 3
|
||||
parent = Area()
|
||||
parent.armor = start_parent_armor
|
||||
area = Area()
|
||||
area.armor = start_area_armor
|
||||
area.parent = parent
|
||||
zone = OuterAmor(area)
|
||||
zone.armor = start_outer_armor
|
||||
|
||||
self.mech.strike(area_name, start_inner_armor - 1)
|
||||
self.assertEqual(0, area.armor)
|
||||
self.assertEqual(0, area.inner_armor)
|
||||
self.assertEqual(AreaStatus.DESTROYED, area.state)
|
||||
self.assertEqual(start_outer_armor, zone.armor)
|
||||
self.assertEqual(start_area_armor, area.armor)
|
||||
self.assertEqual(AreaStatus.FINE, zone.state)
|
||||
self.assertEqual(AreaStatus.FINE, area.state)
|
||||
|
||||
event = StrikeEvent(zone, start_outer_armor - 3).process_event()
|
||||
self.assertEqual(3, zone.armor)
|
||||
self.assertEqual(start_area_armor, area.armor)
|
||||
self.assertEqual(AreaStatus.DAMAGED, zone.state)
|
||||
self.assertEqual(AreaStatus.FINE, area.state)
|
||||
self.assertIsInstance(event, StrikeEvent)
|
||||
self.assertEqual(zone, event.zone)
|
||||
self.assertEqual(0, event.hits)
|
||||
|
||||
event = StrikeEvent(zone, 4).process_event()
|
||||
self.assertEqual(0, zone.armor)
|
||||
self.assertEqual(start_area_armor - 1, area.armor)
|
||||
self.assertEqual(AreaStatus.DESTROYED, zone.state)
|
||||
self.assertEqual(AreaStatus.DAMAGED, area.state)
|
||||
self.assertIsInstance(event, StrikeEvent)
|
||||
self.assertEqual(area, event.zone)
|
||||
self.assertEqual(0, event.hits)
|
||||
|
||||
event = StrikeEvent(zone, start_area_armor - 1).process_event()
|
||||
self.assertEqual(0, zone.armor)
|
||||
self.assertEqual(0, area.armor)
|
||||
self.assertEqual(AreaStatus.DESTROYED, zone.state)
|
||||
self.assertEqual(AreaStatus.DESTROYED, area.state)
|
||||
self.assertIsInstance(event, StrikeEvent)
|
||||
self.assertEqual(area, event.zone)
|
||||
self.assertEqual(0, event.hits)
|
||||
|
||||
event = StrikeEvent(zone, 1).process_event()
|
||||
self.assertEqual(0, zone.armor)
|
||||
self.assertEqual(0, area.armor)
|
||||
self.assertEqual(AreaStatus.DESTROYED, zone.state)
|
||||
self.assertEqual(AreaStatus.DESTROYED, area.state)
|
||||
self.assertIsInstance(event, StrikeEvent)
|
||||
self.assertNotEqual(area, event.zone)
|
||||
self.assertEqual(area.parent, event.zone)
|
||||
self.assertEqual(0, event.hits)
|
||||
|
||||
Reference in New Issue
Block a user