def testFailExcess(self): # Check that excessive number of drones results # in failure, even when character is assigned to # fit and max number attribute is available fit = Fit() item = self.ch.type_(typeId=1) holder1 = IndependentItem(item) holder1.state = State.online fit.drones.add(holder1) holder2 = IndependentItem(item) holder2.state = State.online fit.drones.add(holder2) char = IndependentItem(self.ch.type_(typeId=2)) char.attributes[Attribute.maxActiveDrones] = 1 fit.character = char restrictionError1 = fit.getRestrictionError(holder1, Restriction.launchedDrone) self.assertIsNotNone(restrictionError1) self.assertEqual(restrictionError1.maxLaunchedDrones, 1) self.assertEqual(restrictionError1.launchedDrones, 2) restrictionError2 = fit.getRestrictionError(holder2, Restriction.launchedDrone) self.assertIsNotNone(restrictionError2) self.assertEqual(restrictionError2.maxLaunchedDrones, 1) self.assertEqual(restrictionError2.launchedDrones, 2) fit.drones.remove(holder1) fit.drones.remove(holder2) self.assertEqual(len(self.log), 0) self.assertBuffersEmpty(fit)
def testFailExcessModified(self): # Check that modified attribute value is taken, not original fit = Fit() item = self.ch.type_(typeId=1) holder1 = IndependentItem(item) holder1.state = State.online fit.drones.add(holder1) holder2 = IndependentItem(item) holder2.state = State.online fit.drones.add(holder2) char = IndependentItem(self.ch.type_(typeId=2, attributes={Attribute.maxActiveDrones: 3})) char.attributes[Attribute.maxActiveDrones] = 1 fit.character = char restrictionError1 = fit.getRestrictionError(holder1, Restriction.launchedDrone) self.assertIsNotNone(restrictionError1) self.assertEqual(restrictionError1.maxLaunchedDrones, 1) self.assertEqual(restrictionError1.launchedDrones, 2) restrictionError2 = fit.getRestrictionError(holder2, Restriction.launchedDrone) self.assertIsNotNone(restrictionError2) self.assertEqual(restrictionError2.maxLaunchedDrones, 1) self.assertEqual(restrictionError2.launchedDrones, 2) fit.drones.remove(holder1) fit.drones.remove(holder2) self.assertEqual(len(self.log), 0) self.assertBuffersEmpty(fit)
def testFailNoAttr(self): # Check that any positive number of drones # results in error when character is assigned # to fit, but no restriction attribute available fit = Fit() item = self.ch.type_(typeId=1) holder1 = IndependentItem(item) holder1.state = State.online fit.drones.add(holder1) holder2 = IndependentItem(item) holder2.state = State.online fit.drones.add(holder2) char = IndependentItem(self.ch.type_(typeId=2)) char.attributes[Attribute.maxActiveDrones] = 1 fit.character = char restrictionError1 = fit.getRestrictionError(holder1, Restriction.launchedDrone) self.assertIsNotNone(restrictionError1) self.assertEqual(restrictionError1.maxLaunchedDrones, 1) self.assertEqual(restrictionError1.launchedDrones, 2) restrictionError2 = fit.getRestrictionError(holder2, Restriction.launchedDrone) self.assertIsNotNone(restrictionError2) self.assertEqual(restrictionError2.maxLaunchedDrones, 1) self.assertEqual(restrictionError2.launchedDrones, 2) fit.drones.remove(holder1) fit.drones.remove(holder2) self.assertEqual(len(self.log), 0) self.assertBuffersEmpty(fit)
def testFailExcess(self): # Check that excessive number of drones results # in failure, even when character is assigned to # fit and max number attribute is available fit = Fit() item = self.ch.type_(typeId=1) holder1 = IndependentItem(item) holder1.state = State.online fit.drones.add(holder1) holder2 = IndependentItem(item) holder2.state = State.online fit.drones.add(holder2) char = IndependentItem(self.ch.type_(typeId=2)) char.attributes[Attribute.maxActiveDrones] = 1 fit.character = char restrictionError1 = fit.getRestrictionError(holder1, Restriction.launchedDrone) self.assertIsNotNone(restrictionError1) self.assertEqual(restrictionError1.maxLaunchedDrones, 1) self.assertEqual(restrictionError1.launchedDrones, 2) restrictionError2 = fit.getRestrictionError(holder2, Restriction.launchedDrone) self.assertIsNotNone(restrictionError2) self.assertEqual(restrictionError2.maxLaunchedDrones, 1) self.assertEqual(restrictionError2.launchedDrones, 2) fit.drones.remove(holder1) fit.drones.remove(holder2) self.assertEqual(len(self.log), 0) self.assertRestrictionBuffersEmpty(fit)
def testFailExcessModified(self): # Check that modified attribute value is taken, not original fit = Fit() item = self.ch.type_(typeId=1) holder1 = IndependentItem(item) holder1.state = State.online fit.drones.add(holder1) holder2 = IndependentItem(item) holder2.state = State.online fit.drones.add(holder2) char = IndependentItem( self.ch.type_(typeId=2, attributes={Attribute.maxActiveDrones: 3})) char.attributes[Attribute.maxActiveDrones] = 1 fit.character = char restrictionError1 = fit.getRestrictionError(holder1, Restriction.launchedDrone) self.assertIsNotNone(restrictionError1) self.assertEqual(restrictionError1.maxLaunchedDrones, 1) self.assertEqual(restrictionError1.launchedDrones, 2) restrictionError2 = fit.getRestrictionError(holder2, Restriction.launchedDrone) self.assertIsNotNone(restrictionError2) self.assertEqual(restrictionError2.maxLaunchedDrones, 1) self.assertEqual(restrictionError2.launchedDrones, 2) fit.drones.remove(holder1) fit.drones.remove(holder2) self.assertEqual(len(self.log), 0) self.assertRestrictionBuffersEmpty(fit)
def testPassState(self): # Check excessive number of drones, which are # not 'launched' fit = Fit() item = self.ch.type_(typeId=1) holder1 = IndependentItem(item) fit.drones.append(holder1) holder2 = IndependentItem(item) fit.drones.append(holder2) char = IndependentItem(self.ch.type_(typeId=2)) char.attributes[Attribute.maxActiveDrones] = 1 fit.character = char restrictionError1 = fit.getRestrictionError(holder1, Restriction.launchedDrone) self.assertIsNone(restrictionError1) restrictionError2 = fit.getRestrictionError(holder2, Restriction.launchedDrone) self.assertIsNone(restrictionError2) fit.drones.remove(holder1) fit.drones.remove(holder2) self.assertBuffersEmpty(fit)
def testPassNonDrone(self): # Check excessive number of non-drone items fit = Fit() item = self.ch.type_(typeId=1) holder1 = IndependentItem(item) holder1.state = State.online fit.items.add(holder1) holder2 = IndependentItem(item) holder2.state = State.online fit.items.add(holder2) char = IndependentItem(self.ch.type_(typeId=2)) char.attributes[Attribute.maxActiveDrones] = 1 fit.character = char restrictionError1 = fit.getRestrictionError(holder1, Restriction.launchedDrone) self.assertIsNone(restrictionError1) restrictionError2 = fit.getRestrictionError(holder2, Restriction.launchedDrone) self.assertIsNone(restrictionError2) fit.items.remove(holder1) fit.items.remove(holder2) self.assertEqual(len(self.log), 0) self.assertBuffersEmpty(fit)
def testPassState(self): # Check excessive number of drones, which are # not 'launched' fit = Fit() item = self.ch.type_(typeId=1) holder1 = IndependentItem(item) fit.drones.add(holder1) holder2 = IndependentItem(item) fit.drones.add(holder2) char = IndependentItem(self.ch.type_(typeId=2)) char.attributes[Attribute.maxActiveDrones] = 1 fit.character = char restrictionError1 = fit.getRestrictionError(holder1, Restriction.launchedDrone) self.assertIsNone(restrictionError1) restrictionError2 = fit.getRestrictionError(holder2, Restriction.launchedDrone) self.assertIsNone(restrictionError2) fit.drones.remove(holder1) fit.drones.remove(holder2) self.assertEqual(len(self.log), 0) self.assertRestrictionBuffersEmpty(fit)