@Override
  @Before
  public void setup() {
    super.setup();

    engine = Mockito.mock(Engine.class);
    Mockito.when(engine.getFaction()).thenReturn(faction);
    Mockito.when(engine.getHardpointType()).thenReturn(HardPointType.NONE);
    Mockito.when(engine.getRating()).thenReturn(250);
    Mockito.when(engine.getType()).thenReturn(EngineType.XL);
    Mockito.when(engine.isCompatible(Matchers.any(Upgrades.class))).thenReturn(true);

    structureType = Mockito.mock(StructureUpgrade.class);
    armorType = Mockito.mock(ArmorUpgrade.class);
    heatSinkType = Mockito.mock(HeatSinkUpgrade.class);

    items = new HashMap<>();
    components = new ComponentOmniMech[Location.values().length];
    for (Location location : Location.values()) {
      items.put(location, new ArrayList<Item>());
      components[location.ordinal()] = Mockito.mock(ComponentOmniMech.class);
      Mockito.when(components[location.ordinal()].isAllowed(Matchers.any(Item.class)))
          .thenReturn(true);
      Mockito.when(
              components[location.ordinal()].isAllowed(
                  Matchers.any(Item.class), Matchers.any(Engine.class)))
          .thenReturn(true);
      Mockito.when(components[location.ordinal()].getFixedItems()).thenReturn(items.get(location));
    }
    componentBases = components;

    items.get(Location.CenterTorso).add(engine);

    // Mockito.when(components[Location.Head.ordinal()].getArmorMax()).thenReturn(18);
    // Mockito.when(components[Location.LeftArm.ordinal()].getArmorMax()).thenReturn(48);
    // Mockito.when(components[Location.LeftTorso.ordinal()].getArmorMax()).thenReturn(64);
    // Mockito.when(components[Location.LeftLeg.ordinal()].getArmorMax()).thenReturn(64);
    // Mockito.when(components[Location.CenterTorso.ordinal()].getArmorMax()).thenReturn(92);
    // Mockito.when(components[Location.RightArm.ordinal()].getArmorMax()).thenReturn(48);
    // Mockito.when(components[Location.RightTorso.ordinal()].getArmorMax()).thenReturn(64);
    // Mockito.when(components[Location.RightLeg.ordinal()].getArmorMax()).thenReturn(64);

    Mockito.when(components[Location.Head.ordinal()].getDynamicArmorSlots()).thenReturn(1);
    Mockito.when(components[Location.CenterTorso.ordinal()].getDynamicArmorSlots()).thenReturn(1);
    Mockito.when(components[Location.LeftTorso.ordinal()].getDynamicArmorSlots()).thenReturn(3);
    Mockito.when(components[Location.RightArm.ordinal()].getDynamicArmorSlots()).thenReturn(2);

    Mockito.when(components[Location.LeftLeg.ordinal()].getDynamicStructureSlots()).thenReturn(1);
    Mockito.when(components[Location.RightTorso.ordinal()].getDynamicStructureSlots())
        .thenReturn(1);
    Mockito.when(components[Location.LeftArm.ordinal()].getDynamicStructureSlots()).thenReturn(3);
    Mockito.when(components[Location.RightLeg.ordinal()].getDynamicStructureSlots()).thenReturn(2);

    Mockito.when(structureType.getExtraSlots()).thenReturn(7);
    Mockito.when(armorType.getExtraSlots()).thenReturn(7);
  }
 @Test(expected = IllegalArgumentException.class)
 public final void testCtor_BadDynStructure() {
   Mockito.when(components[Location.Head.ordinal()].getDynamicStructureSlots()).thenReturn(13);
   new ChassisOmniMech(
       mwoID,
       mwoName,
       series,
       name,
       shortName,
       maxTons,
       variant,
       baseVariant,
       movementProfile,
       faction,
       components,
       maxPilotModules,
       maxConsumableModules,
       maxWeaponModules,
       structureType,
       armorType,
       heatSinkType);
 }