def test_workforce(self): orga = Organization() orga.add_layer(1, size=2, efficiency_weight=1.0) orga.add_layer(2, size=3, efficiency_weight=1.0) orga.add_layer(3, size=5, efficiency_weight=1.0) self.assertEquals(10, orga.workforce())
def test_maximum_efficiency(self): orga = Organization() orga.add_layer(1, size=2, efficiency_weight=1.0) orga.add_layer(2, size=3, efficiency_weight=0.6) orga.add_layer(3, size=5, efficiency_weight=0.2) self.assertEquals((2*10*1.0 + 3*10*0.6 + 5*10*0.2) / 10, orga.maximum_efficiency())
def test_global_efficiency(self): orga = Organization() orga.add_layer(1, size=2, efficiency_weight=1.0) orga.add_layer(2, size=3, efficiency_weight=0.6) orga.add_layer(3, size=5, efficiency_weight=0.2) orga.layers[1].employees = [emp(25, 8.0), emp(25, 9.0)] orga.layers[2].employees = [emp(25, 7.0), emp(25, 2.0), emp(25, 7.0)] orga.layers[3].employees = [emp(25, 6.0), emp(25, 5.5), emp(25, 10.0), None, emp(25, 7.0)] self.assertEquals(100 * ((8.0 + 9.0) * 1.0 + (7.0 + 2.0 + 7.0) * 0.6 + (6.0 + 5.5 + 10.0 + 7.0) * 0.2) / (orga.workforce() * orga.maximum_efficiency()), orga.global_efficiency())
def test_promote(self): hypothesis = MockHypothesis() orga = Organization() orga.set_strategies(hypothesis=hypothesis, strategy=BestStrategy()) orga.add_layer(1, size=1, efficiency_weight=1.0) orga.add_layer(2, size=3, efficiency_weight=1.0) best_employee = emp(38, 7.5) worst_employee = emp(25, 3.0) average_employee = emp(49, 6.3) # layer 1 has a vacancy orga.layers[2].employees = [worst_employee, best_employee, average_employee] orga.promote(origin=orga.layers[2], destination=orga.layers[1]) self.assertEquals([best_employee], orga.layers[1].employees) self.assertEquals([worst_employee, None, average_employee], orga.layers[2].employees) self.assertTrue(hypothesis.called) self.assertEquals(7.5, orga.layers[1].employees[0].competence)