from conway import GameOfLife def test_getting_neighbors(): grid = [ [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0], ] game = GameOfLife(grid=grid) assert game.get_neighbors(0, 1) == [0, 0, 0, 0, 1] assert game.get_neighbors(1, 1) == [0, 0, 0, 0, 1, 0, 0, 1] assert game.get_neighbors(2, 1) == [0, 0, 1, 0, 1, 0, 0, 1] def test_dead_cell_with_three_living_neighbors_comes_back_to_life(): grid = [ [1, 1, 1, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], ] game = GameOfLife(grid=grid) game.iterate() assert game.grid[1][1] == 1 def test_dead_cells_with_three_living_neighbors_come_back_to_life(): grid = [ [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], ] game = GameOfLife(grid=grid) game.iterate() assert game.grid[1][2] == 1 assert game.grid[3][2] == 1 def test_living_cell_with_under_two_living_neighbors_dies(): grid = [ [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], ] game = GameOfLife(grid=grid) game.iterate() assert game.grid[1][2] == 0 assert game.grid[2][2] == 0 def test_living_cell_with_two_or_three_neighbors_survives(): grid = [ [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0], ] game = GameOfLife(grid=grid) game.iterate() assert game.grid[2][2] == 1 def test_blinker(): grid = [ [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0], ] game = GameOfLife(grid=grid) game.iterate() assert game.grid == [ [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], ] game.iterate() assert game.grid == grid def test_beacon(): grid = [ [0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 0, 0], [0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0], [0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 0, 0], ] game = GameOfLife(grid=grid) game.iterate() assert game.grid == [ [0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 0, 0], [0, 1, 1, 0, 0, 0], [0, 0, 0, 1, 1, 0], [0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 0, 0], ] game.iterate() assert game.grid == grid def test_creating_grid_from_string(): s = ''' 00000 00000 01110 00000 00000 ''' game = GameOfLife.from_string(s) assert game.grid == [ [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], ]