Example #1
0
def gol():
    data = [0b00010,
            0b01000,
            0b00110,
            0b00010,
            0b00111]
    return life.GameOfLife(size=5, data=data)
Example #2
0
def test_count_neighbours():
    game = life.GameOfLife(max_x=3, max_y=3, population=0, template="")
    game.live(0, 1)
    game.live(1, 0)
    game.live(1, 2)
    game.live(2, 1)
    game.flip()
    # assert game.count_neighbours(0, 0) == 2
    # assert game.count_neighbours(0, 1) == 2
    # assert game.count_neighbours(0, 2) == 2
    # assert game.count_neighbours(1, 0) == 2
    # assert game.count_neighbours(1, 1) == 4
    # assert game.count_neighbours(1, 2) == 2
    # assert game.count_neighbours(2, 0) == 2
    # assert game.count_neighbours(2, 1) == 2
    # assert game.count_neighbours(2, 2) == 2
    assert game.count_neighbours(0, 0) == 4
    assert game.count_neighbours(0, 1) == 3
    assert game.count_neighbours(0, 2) == 4
    assert game.count_neighbours(1, 0) == 3
    assert game.count_neighbours(1, 1) == 4
    assert game.count_neighbours(1, 2) == 3
    assert game.count_neighbours(2, 0) == 4
    assert game.count_neighbours(2, 1) == 3
    assert game.count_neighbours(2, 2) == 4
Example #3
0
def test_step_1():
    game = life.GameOfLife(max_x=3, max_y=3, population=0, template="")
    game.live(0, 1)
    game.live(1, 0)
    game.live(1, 2)
    game.flip()
    done = game.step()
    game.flip()
    assert not done
    # assert not game.alive(0, 0)
    # assert game.alive(0, 1)
    # assert not game.alive(0, 2)
    # assert not game.alive(1, 0)
    # assert game.alive(1, 1)
    # assert not game.alive(1, 2)
    # assert not game.alive(2, 0)
    # assert not game.alive(2, 1)
    # assert not game.alive(2, 2)
    assert game.alive(0, 0)
    assert game.alive(0, 1)
    assert game.alive(0, 2)
    assert game.alive(1, 0)
    assert game.alive(1, 1)
    assert game.alive(1, 2)
    assert game.alive(2, 0)
    assert game.alive(2, 1)
    assert game.alive(2, 2)
Example #4
0
def test_live():
    game = life.GameOfLife(max_x=2, max_y=2, population=0, template="")
    game.live(1, 1)
    game.flip()
    assert not game.alive(0, 0)
    assert not game.alive(0, 1)
    assert not game.alive(1, 0)
    assert game.alive(1, 1)
Example #5
0
 def test_is_max_generations_exceeded(self):
     max_generations = 4
     game = life.GameOfLife((self.rows, self.cols), max_generations=max_generations)
     game.curr_generation = self.grid
     for _ in range(max_generations - 1):
         game.step()
     self.assertEqual(game.generations, max_generations)
     self.assertTrue(game.is_max_generations_exceeded)
Example #6
0
def test_die():
    game = life.GameOfLife(max_x=2, max_y=2, population=0, template="OOOO")
    game.flip(
    )  # need to flip because the next_world isn't initialized with the template yet
    game.die(1, 1)
    game.flip()
    assert game.alive(0, 0)
    assert game.alive(0, 1)
    assert game.alive(1, 0)
    assert not game.alive(1, 1)
Example #7
0
    def test_can_update(self):
        game = life.GameOfLife((self.rows, self.cols))
        game.curr_generation = self.grid

        with open("steps.txt") as f:
            steps = json.load(f)

        num_updates = 0
        for step in sorted(steps.keys(), key=int):
            with self.subTest(step=step):
                for _ in range(int(step) - num_updates):
                    game.curr_generation = game.get_next_generation()
                    num_updates += 1
                self.assertEqual(steps[step], game.curr_generation)
Example #8
0
    def test_can_update(self):
        game = life.GameOfLife((self.rows, self.cols))
        game.curr_generation = self.grid

        tests_dir = os.path.dirname(__file__)
        steps_path = os.path.join(tests_dir, "steps.json")
        with open(steps_path) as f:
            steps = json.load(f)

        num_updates = 0
        for step in sorted(steps.keys(), key=int):
            with self.subTest(step=step):
                for _ in range(int(step) - num_updates):
                    game.curr_generation = game.get_next_generation()
                    num_updates += 1
                self.assertEqual(steps[step], game.curr_generation)
Example #9
0
def test_check_livelihood():
    game = life.GameOfLife(max_x=3, max_y=3, population=0, template="")
    game.live(0, 1)
    game.live(1, 0)
    game.live(1, 2)
    game.flip()
    # assert not game.check_livelihood(0, 0)
    # assert game.check_livelihood(0, 1)
    # assert not game.check_livelihood(0, 2)
    # assert not game.check_livelihood(1, 0)
    # assert game.check_livelihood(1, 1)
    # assert not game.check_livelihood(1, 2)
    # assert not game.check_livelihood(2, 0)
    # assert not game.check_livelihood(2, 1)
    # assert not game.check_livelihood(2, 2)
    assert game.check_livelihood(0, 0)
    assert game.check_livelihood(0, 1)
    assert game.check_livelihood(0, 2)
    assert game.check_livelihood(1, 0)
    assert game.check_livelihood(1, 1)
    assert game.check_livelihood(1, 2)
    assert game.check_livelihood(2, 0)
    assert game.check_livelihood(2, 1)
    assert game.check_livelihood(2, 2)
Example #10
0
 def test_get_neighbours_for_right_side(self):
     game = life.GameOfLife((self.rows, self.cols))
     game.curr_generation = self.grid
     neighbours = game.get_neighbours((2, 7))
     self.assertEqual(5, len(neighbours))
     self.assertEqual(2, sum(neighbours))
Example #11
0
 def test_get_neighbours_for_lower_right_corner(self):
     game = life.GameOfLife((self.rows, self.cols))
     game.curr_generation = self.grid
     neighbours = game.get_neighbours((5, 7))
     self.assertEqual(3, len(neighbours))
     self.assertEqual(1, sum(neighbours))
Example #12
0
 def test_get_neighbours(self):
     game = life.GameOfLife((self.rows, self.cols))
     game.curr_generation = self.grid
     neighbours = game.get_neighbours((2, 3))
     self.assertEqual(8, len(neighbours))
     self.assertEqual(4, sum(neighbours))
Example #13
0
 def test_can_create_a_random_grid(self):
     game = life.GameOfLife((3, 3))
     random.seed(12345)
     grid = game.create_grid(randomize=True)
     self.assertEqual([[1, 0, 1], [1, 0, 1], [1, 0, 1]], grid)
Example #14
0
 def test_can_create_an_empty_grid(self):
     game = life.GameOfLife((3, 3))
     grid = game.create_grid(randomize=False)
     self.assertEqual([[0, 0, 0], [0, 0, 0], [0, 0, 0]], grid)
Example #15
0
 def test_is_not_changing(self):
     game = life.GameOfLife((self.rows, self.cols))
     game.curr_generation = self.grid
     for _ in range(self.max_generations + 1):
         game.step()
     self.assertFalse(game.is_changing)
Example #16
0
 def test_is_changing(self):
     game = life.GameOfLife((self.rows, self.cols))
     game.curr_generation = self.grid
     game.step()
     self.assertTrue(game.is_changing)
Example #17
0
 def test_prev_generation_is_correct(self):
     game = life.GameOfLife((self.rows, self.cols))
     game.curr_generation = self.grid
     game.step()
     self.assertEqual(game.prev_generation, self.grid)