Tests: Füge Bauteile in die Zonen hinzu

This commit is contained in:
2025-07-18 16:02:39 +02:00
parent 4d4c6e7794
commit ff0dc0d556
2 changed files with 135 additions and 36 deletions
+76 -23
View File
@@ -1,7 +1,8 @@
import unittest
from tokenize import group
from MechFabrik import MechFabrik
from MechFabrik.bauteile import InnerStructure, Gyroskope, AreaNames, Area, Cockpit, Reaktor, Mech
from MechFabrik.bauteile import InnerStructure, Gyroskope, AreaNames, Area, Cockpit, Item, ItemTypes, Reaktor, Mech
class TestMechBau(unittest.TestCase):
@@ -32,7 +33,25 @@ class TestMechBau(unittest.TestCase):
self.assertIsInstance(cockpit, Cockpit)
self.assertIsInstance(cockpit.tonnage, float)
self.assertEqual(3.0, cockpit.tonnage)
self._test_for_head_items(area_head)
middle_torso = self._test_middle_torso(mech)
right_torso = self._test_areas(mech=mech, parent=middle_torso, index=AreaNames.RIGHT_TORSO, children=2)
left_torso = self._test_areas(mech=mech, parent=middle_torso, index=AreaNames.LEFT_TORSO, children=2)
self.assertCountEqual([right_torso, left_torso], middle_torso.children)
right_arm = self._test_areas(mech=mech, parent=right_torso, index=AreaNames.RIGHT_ARM, children=0)
right_leg = self._test_areas(mech=mech, parent=right_torso, index=AreaNames.RIGHT_LEG, children=0)
self.assertCountEqual([right_arm, right_leg], right_torso.children)
self._test_for_arm_left_items(right_arm)
self._test_for_arm_left_items(right_leg)
left_arm = self._test_areas(mech=mech, parent=left_torso, index=AreaNames.LEFT_ARM, children=0)
left_leg = self._test_areas(mech=mech, parent=left_torso, index=AreaNames.LEFT_LEG, children=0)
self.assertCountEqual([left_arm, left_leg], left_torso.children)
self._test_for_arm_left_items(left_arm)
self._test_for_arm_left_items(left_leg)
def _test_middle_torso(self, mech) -> Area:
middle_torso = mech.inner_structure.areas.get(AreaNames.MIDDLE_TORSO)
self.assertIsInstance(middle_torso, Area)
reactor = middle_torso.reactor
@@ -43,29 +62,63 @@ class TestMechBau(unittest.TestCase):
self.assertEqual(6.0, reactor.tonnage)
self.assertIsNone(middle_torso.parent)
self.assertIsInstance(middle_torso.children, list)
right_torso = self._test_area(mech = mech, parent = middle_torso, index = AreaNames.RIGHT_TORSO)
left_torso = self._test_area(mech = mech, parent = middle_torso, index = AreaNames.LEFT_TORSO)
self.assertCountEqual([right_torso, left_torso], middle_torso.children)
return middle_torso
self._test_limbs(mech = mech, parent = right_torso, index = AreaNames.RIGHT_ARM)
self._test_limbs(mech = mech, parent = right_torso, index = AreaNames.RIGHT_LEG)
self._test_limbs(mech = mech, parent = left_torso, index = AreaNames.LEFT_ARM)
self._test_limbs(mech = mech, parent = left_torso, index = AreaNames.LEFT_LEG)
def _test_areas(self, mech: Mech, parent: Area, index: AreaNames, children: int) -> Area:
area = mech.inner_structure.areas.get(index)
self.assertIsInstance(area, Area)
self.assertIsInstance(area.parent, Area)
self.assertEqual(parent, area.parent)
self.assertIsInstance(area.children, list)
self.assertEqual(children, len(area.children))
return area
def _test_area(self, mech: Mech, parent: Area, index: AreaNames):
side_torso = mech.inner_structure.areas.get(index)
self.assertIsInstance(side_torso, Area)
self.assertIsInstance(side_torso.parent, Area)
self.assertEqual(parent, side_torso.parent)
self.assertIsInstance(side_torso.children, list)
self.assertEqual(2, len(side_torso.children))
return side_torso
def _test_for_head_items(self, area: Area):
self.__test_for_items(area, [
((1, 1), ItemTypes.SUSTAINMENT),
((1, 2), ItemTypes.SENSORS),
((1, 3), ItemTypes.COCKPIT),
((1, 5), ItemTypes.SENSORS),
((1, 6), ItemTypes.SUSTAINMENT),
]
)
self.assertIsNone(area.items[(1, 4)])
def _test_limbs(self, mech: Mech, parent: Area, index: AreaNames):
limbs_area = mech.inner_structure.areas.get(index)
self.assertIsInstance(limbs_area, Area)
self.assertIsInstance(limbs_area.parent, Area)
self.assertEqual(parent, limbs_area.parent)
self.assertIsInstance(limbs_area.children, list)
self.assertCountEqual([], limbs_area.children)
def _test_for_middle_torso_items(self, area: Area):
self.__test_for_items(area, [
((1, 1), ItemTypes.REAKTOR),
((1, 2), ItemTypes.REAKTOR),
((1, 3), ItemTypes.REAKTOR),
((1, 4), ItemTypes.GYROSKOPE),
((1, 5), ItemTypes.GYROSKOPE),
((1, 6), ItemTypes.GYROSKOPE),
((2, 1), ItemTypes.GYROSKOPE),
((2, 2), ItemTypes.GYROSKOPE),
((2, 3), ItemTypes.GYROSKOPE),
((2, 4), ItemTypes.REAKTOR),
]
)
self.assertIsNone(area.items[(2, 5)])
self.assertIsNone(area.items[(2, 6)])
def _test_for_side_torso_items(self, area: Area):
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_left_items(self, area: Area):
self.__test_for_items(area, [
((1, 1), ItemTypes.JOINT),
((1, 2), ItemTypes.ACTIVATOR),
((1, 3), ItemTypes.ACTIVATOR),
((1, 4), ItemTypes.ACTIVATOR),
]
)
self.assertIsNone(area.items[(1, 5)])
self.assertIsNone(area.items[(1, 6)])
pass
def __test_for_items(self, area: Area, should_list: list):
for (key, item_type) in should_list:
self.assertIsInstance(area.items[key], Item)
self.assertEqual(area.items[key].type, item_type)