@Test public void testGetDynamicArmorSlotsForComponent_Priority() { when(mlc.upgrades.hasEndoSteel()).thenReturn(false); when(mlc.upgrades.hasFerroFibrous()).thenReturn(true); when(mlc.ra.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.rt.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.rl.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.hd.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.ct.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.ll.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.lt.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.la.getNumCriticalSlotsFree()).thenReturn(12); for (LoadoutPart part : priorityOrder) { assertEquals(expectedStructure(14), slotsOccupied(part, 14), cut.getDynamicArmorSlots(part)); } when(mlc.ra.getNumCriticalSlotsFree()).thenReturn(1); for (LoadoutPart part : priorityOrder) { assertEquals(expectedStructure(14), slotsOccupied(part, 14), cut.getDynamicArmorSlots(part)); } when(mlc.rt.getNumCriticalSlotsFree()).thenReturn(1); for (LoadoutPart part : priorityOrder) { assertEquals(expectedStructure(14), slotsOccupied(part, 14), cut.getDynamicArmorSlots(part)); } when(mlc.rl.getNumCriticalSlotsFree()).thenReturn(2); for (LoadoutPart part : priorityOrder) { assertEquals(expectedStructure(14), slotsOccupied(part, 14), cut.getDynamicArmorSlots(part)); } when(mlc.hd.getNumCriticalSlotsFree()).thenReturn(1); for (LoadoutPart part : priorityOrder) { assertEquals(expectedStructure(14), slotsOccupied(part, 14), cut.getDynamicArmorSlots(part)); } when(mlc.ct.getNumCriticalSlotsFree()).thenReturn(3); for (LoadoutPart part : priorityOrder) { assertEquals(expectedStructure(14), slotsOccupied(part, 14), cut.getDynamicArmorSlots(part)); } when(mlc.lt.getNumCriticalSlotsFree()).thenReturn(1); for (LoadoutPart part : priorityOrder) { assertEquals(expectedStructure(14), slotsOccupied(part, 14), cut.getDynamicArmorSlots(part)); } when(mlc.ll.getNumCriticalSlotsFree()).thenReturn(1); for (LoadoutPart part : priorityOrder) { assertEquals(expectedStructure(14), slotsOccupied(part, 14), cut.getDynamicArmorSlots(part)); } when(mlc.la.getNumCriticalSlotsFree()).thenReturn(1); for (LoadoutPart part : priorityOrder) { assertEquals(expectedStructure(14), slotsOccupied(part, 14), cut.getDynamicArmorSlots(part)); } // Slot overflow, fail graciously, no exceptions thrown }
@Test public void testGetDynamicStructureSlotsForComponent_NoUpgrades() { when(mlc.upgrades.hasEndoSteel()).thenReturn(false); when(mlc.upgrades.hasFerroFibrous()).thenReturn(false); when(mlc.ra.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.rt.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.rl.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.hd.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.ct.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.ll.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.lt.getNumCriticalSlotsFree()).thenReturn(12); when(mlc.la.getNumCriticalSlotsFree()).thenReturn(12); assertEquals(0, cut.getDynamicStructureSlots(mlc.ra)); assertEquals(0, cut.getDynamicStructureSlots(mlc.rt)); assertEquals(0, cut.getDynamicStructureSlots(mlc.rl)); assertEquals(0, cut.getDynamicStructureSlots(mlc.hd)); assertEquals(0, cut.getDynamicStructureSlots(mlc.ct)); assertEquals(0, cut.getDynamicStructureSlots(mlc.lt)); assertEquals(0, cut.getDynamicStructureSlots(mlc.ll)); assertEquals(0, cut.getDynamicStructureSlots(mlc.la)); assertEquals(0, cut.getDynamicArmorSlots(mlc.ra)); assertEquals(0, cut.getDynamicArmorSlots(mlc.rt)); assertEquals(0, cut.getDynamicArmorSlots(mlc.rl)); assertEquals(0, cut.getDynamicArmorSlots(mlc.hd)); assertEquals(0, cut.getDynamicArmorSlots(mlc.ct)); assertEquals(0, cut.getDynamicArmorSlots(mlc.lt)); assertEquals(0, cut.getDynamicArmorSlots(mlc.ll)); assertEquals(0, cut.getDynamicArmorSlots(mlc.la)); }
/** Dynamic armor slots are distributed before dynamic structure (arbitrary design decision). */ @Test public void testMixedArmorStructurePriority() { when(mlc.upgrades.hasEndoSteel()).thenReturn(true); when(mlc.upgrades.hasFerroFibrous()).thenReturn(true); when(mlc.ra.getNumCriticalSlotsFree()).thenReturn(4); // 4 armor when(mlc.rt.getNumCriticalSlotsFree()).thenReturn(4); when(mlc.rl.getNumCriticalSlotsFree()).thenReturn(4); when(mlc.hd.getNumCriticalSlotsFree()).thenReturn(4); // 2 armor 2 structure when(mlc.ct.getNumCriticalSlotsFree()).thenReturn(2); when(mlc.lt.getNumCriticalSlotsFree()).thenReturn(4); when(mlc.ll.getNumCriticalSlotsFree()).thenReturn(7); // 6 structure when(mlc.la.getNumCriticalSlotsFree()).thenReturn(1); // 0 structure assertEquals(0, cut.getDynamicStructureSlots(mlc.ra)); assertEquals(4, cut.getDynamicArmorSlots(mlc.ra)); assertEquals(0, cut.getDynamicStructureSlots(mlc.rt)); assertEquals(4, cut.getDynamicArmorSlots(mlc.rt)); assertEquals(0, cut.getDynamicStructureSlots(mlc.rl)); assertEquals(4, cut.getDynamicArmorSlots(mlc.rl)); assertEquals(2, cut.getDynamicStructureSlots(mlc.hd)); assertEquals(2, cut.getDynamicArmorSlots(mlc.hd)); assertEquals(2, cut.getDynamicStructureSlots(mlc.ct)); assertEquals(0, cut.getDynamicArmorSlots(mlc.ct)); assertEquals(4, cut.getDynamicStructureSlots(mlc.lt)); assertEquals(0, cut.getDynamicArmorSlots(mlc.lt)); assertEquals(6, cut.getDynamicStructureSlots(mlc.ll)); assertEquals(0, cut.getDynamicArmorSlots(mlc.ll)); assertEquals(0, cut.getDynamicStructureSlots(mlc.la)); assertEquals(0, cut.getDynamicArmorSlots(mlc.la)); }