import unittest from mech_factory import InnerStructure, Reaktor from mech_factory.store import ComponentStore, ItemStore, InnerArmorStore from mech_factory.component_storage.items import Gyroskope, Item, BigItem, DurableItem, ItemStatus, ItemTypes class TestComponentStore(unittest.TestCase): def setUp(self): # reactor_value = 165 self._store = ComponentStore(tonnage=55.0, movement_rate=3) def test_build_inner_structure(self): item = self._store.get_inner_structure() self.assertIsInstance(item, InnerStructure) self.assertIsInstance(item.gyroskope, Gyroskope) self.assertEqual(item.tonnage, 5.5) self.assertIsInstance(item.areas, dict) self.assertCountEqual(item.areas, {}) self.assertIsInstance(item.zones, dict) self.assertCountEqual(item.zones, {}) def test_build_gyroscope(self): item = self._store.get_gyroskope() self.assertIsInstance(item, Item) self.assertEqual(item.state, ItemStatus.FINE) self.assertIsInstance(item, BigItem) self.assertEqual(item.tonnage, 2.0) self.assertEqual(item.type, ItemTypes.GYROSKOPE) self.assertIsInstance(item, DurableItem) self.assertEqual(item.max_strike, 2) def test_build_reaktor(self): item = self._store.get_reaktor() self.assertIsInstance(item, Reaktor) self.assertIsInstance(item, Item) self.assertEqual(item.state, ItemStatus.FINE) self.assertIsInstance(item, BigItem) self.assertEqual(item.tonnage, 6.0) self.assertEqual(item.type, ItemTypes.REAKTOR) self.assertIsInstance(item, DurableItem) self.assertEqual(item.max_strike, 3) class TestItemsStore(unittest.TestCase): def setUp(self): self._store = ItemStore() def test_build_cockpit(self): item = self._store.get_cockpit() self.assertIsInstance(item, Item) self.assertEqual(item.state, ItemStatus.FINE) self.assertIsInstance(item, BigItem) self.assertEqual(item.type, ItemTypes.COCKPIT) self.assertEqual(item.tonnage, 3.0) def test_build_sustainment(self): item = self._store.get_sustainment() self.assertIsInstance(item, Item) self.assertEqual(item.state, ItemStatus.FINE) self.assertEqual(item.type, ItemTypes.SUSTAINMENT) def test_build_sensors(self): item = self._store.get_sensors() self.assertIsInstance(item, Item) self.assertEqual(item.state, ItemStatus.FINE) self.assertEqual(item.type, ItemTypes.SENSORS) self.assertIsInstance(item, DurableItem) self.assertEqual(item.max_strike, 2) def test_build_joint(self): item = self._store.get_joint() self.assertIsInstance(item, Item) self.assertEqual(item.state, ItemStatus.FINE) self.assertEqual(item.type, ItemTypes.JOINT) def test_build_activator(self): item = self._store.get_activator() self.assertIsInstance(item, Item) self.assertEqual(item.state, ItemStatus.FINE) self.assertEqual(item.type, ItemTypes.ACTIVATOR) class TestInnerAmorForTonnageAndArea(unittest.TestCase): def setUp(self): self._store = InnerArmorStore(tonnage=55.0) def test_build_inner_structure(self): self.assertEqual(self._store.get_head_amor(), 3) self.assertEqual(self._store.get_middle_torso_amor(), 18) self.assertEqual(self._store.get_side_torso_amor(), 13) self.assertEqual(self._store.get_arm_amore(), 9) self.assertEqual(self._store.get_leg_amore(), 13)