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
+57 -11
View File
@@ -1,6 +1,4 @@
import csv
import enum
import os
from typing import Any
@@ -15,26 +13,70 @@ class AreaNames(enum.Enum):
LEFT_ARM = 'Linker Arm'
class ItemTypes(enum.Enum):
COCKPIT = 1
REAKTOR = 2
GYROSKOPE = 3
ACTIVATOR = 4
JOINT = 5
SENSORS = 6
SUSTAINMENT = 7
class Item(object):
def __init__(self, type: ItemTypes):
self._type = type
@property
def type(self):
return self._type
class BigItem(Item):
def __init__(self, type: ItemTypes, tonnage: float):
super().__init__(type)
self._tonnage = tonnage
class Cockpit:
@property
def tonnage(self) -> float:
return 3.0
return self._tonnage
class Reaktor:
class Cockpit(BigItem):
def __init__(self):
super().__init__(ItemTypes.COCKPIT, 3.0)
class Reaktor(BigItem):
def __init__(self, value: int, tonnage: float):
self._tonnage = tonnage
super().__init__(ItemTypes.REAKTOR, tonnage)
self._value = value
@property
def value(self):
return self._value
@property
def tonnage(self):
return self._tonnage
class Activator(Item):
def __init__(self):
super().__init__(ItemTypes.ACTIVATOR)
class Joint(Item):
def __init__(self):
super().__init__(ItemTypes.JOINT)
class Sensors(Item):
def __init__(self):
super().__init__(ItemTypes.SENSORS)
class Sustainment(Item):
def __init__(self):
super().__init__(ItemTypes.SUSTAINMENT)
class Area:
@@ -42,7 +84,8 @@ class Area:
def __init__(self):
self.__dict__['_content'] = {
'children': []
'children': [],
'items': {}
}
def __setattr__(self, key, value):
@@ -80,7 +123,7 @@ class InnerStructure:
def areas(self) -> dict:
return self._areas
def add_area(self,index: AreaNames, area: Area):
def add_area(self, index: AreaNames, area: Area):
self._areas[index] = area
@@ -107,3 +150,6 @@ class Mech(object):
@property
def movement_rate(self) -> int:
return self._movement_rate
def set_item(self, key: tuple, item: Item):
pass
+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)