From 94ceb5af667121bfd54af97d94516fcce5e61616 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20L=C3=BCcke?= Date: Sun, 31 Aug 2025 12:32:57 +0200 Subject: [PATCH] =?UTF-8?q?Tests:=20nutze=20richtige=20R=C3=BCstung=20in?= =?UTF-8?q?=20den=20einzelnen=20Zonen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MechFabrik/Uml/Mech.puml | 8 +++++ MechFabrik/__init__.py | 15 +++++++++ MechFabrik/bauteile/__init__.py | 3 ++ tests/test_mech_bau.py | 60 +++++++++++++++++++++++++++++++-- 4 files changed, 84 insertions(+), 2 deletions(-) diff --git a/MechFabrik/Uml/Mech.puml b/MechFabrik/Uml/Mech.puml index d7bfb94..cafbfda 100644 --- a/MechFabrik/Uml/Mech.puml +++ b/MechFabrik/Uml/Mech.puml @@ -10,36 +10,44 @@ object Sustainment object Sensors object Head <> { item_lines: 6 + inner_armor: # amor: # } object Cockpit <> object Reaktor <> object TorsoMiddle <> { item_lines: 12 + inner_armor: # amor: # } object TorsoLeft <> { item_lines: 12 + inner_armor: # amor: # } object ArmLeft <> { item_lines: 12 + inner_armor: # amor: # } object LegLeft <> { item_lines: 6 + inner_armor: # amor: # } object TorsoRight <> { item_lines: 12 + inner_armor: # amor: # } object ArmRight <> { item_lines: 12 + inner_armor: # amor: # } object LegRight <> { item_lines: 6 + inner_armor: # amor: # } object JointAL as "Joint" diff --git a/MechFabrik/__init__.py b/MechFabrik/__init__.py index f40ae17..2efdc5d 100755 --- a/MechFabrik/__init__.py +++ b/MechFabrik/__init__.py @@ -101,3 +101,18 @@ class MechFabrik(object): def auslieferung(self) -> Mech: return self._mech + + def setHeadAmore(self, param): + pass + + def setMidleTorsoAmore(self, param): + pass + + def setSideTorsoAmore(self, param): + pass + + def setArmAmore(self, param): + pass + + def setLegAmore(self, param): + pass diff --git a/MechFabrik/bauteile/__init__.py b/MechFabrik/bauteile/__init__.py index d1dcaaa..ccfcaec 100755 --- a/MechFabrik/bauteile/__init__.py +++ b/MechFabrik/bauteile/__init__.py @@ -153,3 +153,6 @@ class Mech(object): def set_item(self, key: tuple, item: Item): pass + + def strike(self, area_name, param): + pass diff --git a/tests/test_mech_bau.py b/tests/test_mech_bau.py index 6dad8d3..fe53b89 100755 --- a/tests/test_mech_bau.py +++ b/tests/test_mech_bau.py @@ -1,9 +1,30 @@ import unittest -from tokenize import group from MechFabrik import MechFabrik from MechFabrik.bauteile import InnerStructure, Gyroskope, AreaNames, Area, Cockpit, Item, ItemTypes, Reaktor, Mech +INNER_AMOR = { + AreaNames.HEAD: 3, + AreaNames.MIDDLE_TORSO: 6, + AreaNames.LEFT_TORSO: 5, + AreaNames.RIGHT_TORSO: 5, + AreaNames.LEFT_ARM: 3, + AreaNames.RIGHT_ARM: 3, + AreaNames.LEFT_LEG: 4, + AreaNames.RIGHT_LEG: 4, + } + +OUTER_AMOR = { + AreaNames.HEAD: 6, + AreaNames.MIDDLE_TORSO: 9, + AreaNames.LEFT_TORSO: 8, + AreaNames.RIGHT_TORSO: 8, + AreaNames.LEFT_ARM: 5, + AreaNames.RIGHT_ARM: 5, + AreaNames.LEFT_LEG: 7, + AreaNames.RIGHT_LEG: 7, + } + class TestMechBau(unittest.TestCase): @@ -18,6 +39,12 @@ class TestMechBau(unittest.TestCase): self.assertIsInstance(mech.movement_rate, int) self.assertEqual(8, mech.movement_rate) + for ara_name in AreaNames: + area = mech.inner_structure.areas.get(ara_name) + should_inner_amor = INNER_AMOR[ara_name] + self.assertEqual(should_inner_amor, area.inner_armor) + self.assertEqual(0, area.armor) + self.assertIsInstance(mech.inner_structure, InnerStructure) self.assertIsInstance(mech.inner_structure.tonnage, float) self.assertEqual(2.0, mech.inner_structure.tonnage) @@ -106,7 +133,7 @@ class TestMechBau(unittest.TestCase): def _test_for_side_torso_items(self, area: Area): self.assertEqual(12, len(area.items)) - for (group, key) in ((group, key + 1) for group in [1,2] for key in range(6)): + for (group, key) in ((group, key + 1) for group in [1, 2] for key in range(6)): self.assertIsNone(area.items[key]) def _test_for_arm_items(self, area: Area): @@ -137,3 +164,32 @@ class TestMechBau(unittest.TestCase): for (key, item_type) in should_list: self.assertIsInstance(area.items[key], Item) self.assertEqual(area.items[key].type, item_type) + + +class TextMechAmor(unittest.TestCase): + + def setUp(self): + fabrik = MechFabrik('Heuschrecke', 20.0, 8) + + fabrik.setHeadAmore(OUTER_AMOR[AreaNames.HEAD]) + fabrik.setMidleTorsoAmore(OUTER_AMOR[AreaNames.MIDDLE_TORSO]) + fabrik.setSideTorsoAmore(OUTER_AMOR[AreaNames.LEFT_TORSO]) + fabrik.setArmAmore(OUTER_AMOR[AreaNames.LEFT_ARM]) + fabrik.setLegAmore(OUTER_AMOR[AreaNames.LEFT_LEG]) + + self.mech = fabrik.auslieferung() + + def test_build(self): + + for area_name in AreaNames: + area = self.mech.inner_structure.areas.get(area_name) + should_outer_amor = OUTER_AMOR[area_name] + self.assertEqual(should_outer_amor, area.armor) + + def test_process(self): + for area_name in AreaNames: + self.mech.strike(area_name, 3) + self.assertEqual(OUTER_AMOR[area_name] - 3, self.mech.inner_structure.areas.get(area_name).armor) + self.mech.strike(area_name, OUTER_AMOR[area_name] - 2) + self.assertEqual(0, self.mech.inner_structure.areas.get(area_name).armor) + self.assertEqual(2, self.mech.inner_structure.areas.get(area_name).inner_armor)