class TestRootClass(test.TestCase): fixtures = ["basic_fixture_resources_and_employees2.json"] def setUp(self): self.city = City.objects.latest("id") self.user = User.objects.latest('id') Market.objects.create(profile=self.user.profile) self.RC = RootClass(city=City.objects.latest("id"), user=self.user) def test_keys_in_dataset(self): for x in self.RC.datasets_for_turn_calculation(): self.assertIn("allocated_resource", x.keys()) self.assertIn("list_of_source", x.keys()) self.assertIn("list_without_source", x.keys()) def test_get_subclasses(self): self.assertEqual( self.RC.get_subclasses(abstract_class=PowerPlant, app_label="city_engine"), [WindPlant, RopePlant, CoalPlant], ) self.assertEqual( self.RC.get_subclasses(abstract_class=Waterworks, app_label="city_engine"), [WaterTower], )
def test_energy_allocation_with_default_settings(self): rc = RootClass(self.city, self.user) self.assertEqual( len(rc.datasets_for_turn_calculation()[0]["list_without_source"]), 5) self.assertEqual( len(rc.datasets_for_turn_calculation()[0]["list_of_source"]), 2) ResourceAllocation(self.city, rc).run() test_buildings = list(rc.list_of_buildings.values()) self.assertEqual(test_buildings[3].energy, test_buildings[3].energy_required) self.assertEqual(test_buildings[4].energy, test_buildings[4].energy_required) self.assertEqual(test_buildings[5].energy, test_buildings[5].energy_required) self.assertEqual(test_buildings[6].energy, test_buildings[6].energy_required) self.assertEqual( rc.datasets_for_turn_calculation()[0]["list_of_source"] [0].energy_allocated, 84) self.assertEqual( rc.datasets_for_turn_calculation()[0]["list_of_source"] [1].energy_allocated, 0) self.assertEqual( rc.datasets_for_turn_calculation()[0]["list_of_source"] [0]._get_total_production(), 200) self.assertEqual( rc.datasets_for_turn_calculation()[0]["list_of_source"] [1]._get_total_production(), 200)
def test_energy_allocation_with_low_production(self): rc = RootClass(self.city, self.user) for c in rc.citizens_in_city: rc.citizens_in_city[c].current_profession.proficiency = 0.05 self.assertEqual( len(rc.datasets_for_turn_calculation()[0]["list_without_source"]), 5) self.assertEqual( len(rc.datasets_for_turn_calculation()[0]["list_of_source"]), 2) ResourceAllocation(self.city, rc).run() test_buildings = list(rc.list_of_buildings.values()) self.assertEqual(10, test_buildings[0].energy) self.assertEqual(0, test_buildings[3].energy) self.assertEqual(0, test_buildings[4].energy) self.assertEqual(0, test_buildings[5].energy) self.assertEqual(0, test_buildings[6].energy) self.assertEqual( sum([rc.list_of_buildings[x].energy for x in rc.list_of_buildings]), sum([ x._get_total_production() for x in rc.datasets_for_turn_calculation()[0]["list_of_source"] ])) self.assertEqual( sum([rc.list_of_buildings[x].energy for x in rc.list_of_buildings]), sum([ x.energy_allocated for x in rc.datasets_for_turn_calculation() [0]["list_of_source"] ])) self.assertEqual( rc.datasets_for_turn_calculation()[0]["list_of_source"] [0].energy_allocated, 5) self.assertEqual( rc.datasets_for_turn_calculation()[0]["list_of_source"] [1].energy_allocated, 5) self.assertEqual( rc.datasets_for_turn_calculation()[0]["list_of_source"] [0]._get_total_production(), 5) self.assertEqual( rc.datasets_for_turn_calculation()[0]["list_of_source"] [1]._get_total_production(), 5)
def test_energy_allocation_with_no_production(self): Citizen.objects.all().delete() rc = RootClass(self.city, self.user) self.assertEqual( len(rc.datasets_for_turn_calculation()[0]["list_without_source"]), 5) self.assertEqual( len(rc.datasets_for_turn_calculation()[0]["list_of_source"]), 2) ResourceAllocation(self.city, rc).run() test_buildings = list(rc.list_of_buildings.values()) self.assertEqual(test_buildings[3].energy, 0) self.assertEqual(test_buildings[4].energy, 0) self.assertEqual(test_buildings[5].energy, 0) self.assertEqual(test_buildings[6].energy, 0) self.assertEqual( sum([rc.list_of_buildings[x].energy for x in rc.list_of_buildings]), sum([ x._get_total_production() for x in rc.datasets_for_turn_calculation()[0]["list_of_source"] ])) self.assertEqual( sum([rc.list_of_buildings[x].energy for x in rc.list_of_buildings]), sum([ x.energy_allocated for x in rc.datasets_for_turn_calculation() [0]["list_of_source"] ])) self.assertEqual( rc.datasets_for_turn_calculation()[0]["list_of_source"] [0].energy_allocated, 0) self.assertEqual( rc.datasets_for_turn_calculation()[0]["list_of_source"] [1].energy_allocated, 0) self.assertEqual( rc.datasets_for_turn_calculation()[0]["list_of_source"] [0]._get_total_production(), 0) self.assertEqual( rc.datasets_for_turn_calculation()[0]["list_of_source"] [1]._get_total_production(), 0)