Ejemplo n.º 1
0
class WorldTests(TestCase):

    W = 10
    H = 10

    def setUp(self):

        self.world = World(w=self.W, h=self.H, config=BaseConfig)
        self.layer = self.world.layer_vegetation

    def test_simple_step(self):
        self.world.do_step()

    def test_resize_increase(self):
        self.world.do_step()
        self.world.resize(self.world.w + 2, self.world.h + 3)
        self.world.do_step()

    def test_resize_decrease(self):
        self.world.do_step()
        self.world.resize(self.world.w - 2, self.world.h - 3)
        self.world.do_step()

    def test_serialization(self):

        self.world.layer_height.data[5][5] = 1
        self.world.layer_temperature.data[5][5] = 2
        self.world.layer_wind.data[5][5] = (3.0, 3.0)
        self.world.layer_atmosphere.data[5][5] = AtmospherePoint(wind=(3.0, 3.0), temperature=-1, wetness=0.3)
        self.world.layer_wetness.data[5][5] = 5
        self.world.layer_vegetation.data[5][5] = 1

        self.assertEqual(self.world, World.deserialize(config=BaseConfig, data=self.world.serialize()))
        self.world.do_step()

    def test_cell_info_randomize_stability(self):
        cell = self.world.cell_info(5, 5)
        randomized_cell = cell.randomize(1, 0.5)

        for i in range(100):
            self.assertEqual(randomized_cell, cell.randomize(1, 0.5))

    def test_cell_info_randomize_random_state_restore(self):
        random.seed(1)

        test_list = [random.randint(-100, 100) for i in range(100)]

        random.seed(1)

        cell = self.world.cell_info(5, 5)

        cell.randomize(1, 0.5)

        self.assertEqual(test_list, [random.randint(-100, 100) for i in range(100)])
Ejemplo n.º 2
0
class WorldTests(TestCase):

    W = 10
    H = 10

    def setUp(self):

        self.world = World(w=self.W, h=self.H, config=BaseConfig)
        self.layer = self.world.layer_vegetation

    def test_simple_step(self):
        self.world.do_step()

    def test_resize_increase(self):
        self.world.do_step()
        self.world.resize(self.world.w + 2, self.world.h + 3)
        self.world.do_step()

    def test_resize_decrease(self):
        self.world.do_step()
        self.world.resize(self.world.w - 2, self.world.h - 3)
        self.world.do_step()

    def test_serialization(self):

        self.world.layer_height.data[5][5] = 1
        self.world.layer_temperature.data[5][5] = 2
        self.world.layer_wind.data[5][5] = (3.0, 3.0)
        self.world.layer_atmosphere.data[5][5] = AtmospherePoint(
            wind=(3.0, 3.0), temperature=-1, wetness=0.3)
        self.world.layer_wetness.data[5][5] = 5
        self.world.layer_vegetation.data[5][5] = 1

        self.assertEqual(
            self.world,
            World.deserialize(config=BaseConfig, data=self.world.serialize()))
        self.world.do_step()

    def test_cell_info_randomize_stability(self):
        cell = self.world.cell_info(5, 5)
        randomized_cell = cell.randomize(1, 0.5)

        for i in range(100):
            self.assertEqual(randomized_cell, cell.randomize(1, 0.5))

    def test_cell_info_randomize_random_state_restore(self):
        random.seed(1)

        test_list = [random.randint(-100, 100) for i in range(100)]

        random.seed(1)

        cell = self.world.cell_info(5, 5)

        cell.randomize(1, 0.5)

        self.assertEqual(test_list,
                         [random.randint(-100, 100) for i in range(100)])
Ejemplo n.º 3
0
                                                   name='vegetation_circle',
                                                   x=WIDTH/2,
                                                   y=HEIGHT/2,
                                                   power=(0.3, 0.3),
                                                   radius=int(math.hypot(WIDTH, HEIGHT)/2)+1,
                                                   normalizer=normalizers.equal,
                                                   default_power=(0.0, 0.0)))

world.add_power_point(power_points.CircleAreaPoint(layer_type=LAYER_TYPE.VEGETATION,
                                                   name='vegetation_grass_left',
                                                   x=20,
                                                   y=20,
                                                   power=(0.3, 0.0),
                                                   radius=(WIDTH+HEIGHT)/4,
                                                   normalizer=normalizers.linear_2,
                                                   default_power=(0.0, 0.0)))

world.add_power_point(power_points.CircleAreaPoint(layer_type=LAYER_TYPE.VEGETATION,
                                                   name='vegetation_forest_left',
                                                   x=20,
                                                   y=80,
                                                   power=(0.0, 0.3),
                                                   radius=(WIDTH+HEIGHT)/4,
                                                   normalizer=normalizers.linear_2,
                                                   default_power=(0.0, 0.0)))

for i in xrange(300):
    print 'do step %d' % i
    world.do_step()
    draw_world(i, world, catalog='./results')
Ejemplo n.º 4
0
                                 y=HEIGHT / 2,
                                 power=(0.3, 0.3),
                                 radius=int(math.hypot(WIDTH, HEIGHT) / 2) + 1,
                                 normalizer=normalizers.equal,
                                 default_power=(0.0, 0.0)))

world.add_power_point(
    power_points.CircleAreaPoint(layer_type=LAYER_TYPE.VEGETATION,
                                 name='vegetation_grass_left',
                                 x=20,
                                 y=20,
                                 power=(0.3, 0.0),
                                 radius=(WIDTH + HEIGHT) / 4,
                                 normalizer=normalizers.linear_2,
                                 default_power=(0.0, 0.0)))

world.add_power_point(
    power_points.CircleAreaPoint(layer_type=LAYER_TYPE.VEGETATION,
                                 name='vegetation_forest_left',
                                 x=20,
                                 y=80,
                                 power=(0.0, 0.3),
                                 radius=(WIDTH + HEIGHT) / 4,
                                 normalizer=normalizers.linear_2,
                                 default_power=(0.0, 0.0)))

for i in range(300):
    print('do step %d' % i)
    world.do_step()
    draw_world(i, world, catalog='./results')