Exemplo n.º 1
0
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],
        )
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)