signal-garden / tests /test_render.py
deepmage121's picture
[codex] Prefer Modal llama.cpp endpoint
ddb2889 verified
Raw
History Blame Contribute Delete
1.97 kB
import numpy as np
from life_game.arcade import HELPER_ITEMS_KEY, NEGATIVE_ITEMS_KEY, NEGATIVE_STRUCTURES_KEY
from life_game.game import GameModel
from life_game.render import (
BOSS_COLOR,
BULLET_COLOR,
ENEMY_COLOR,
HELPER_ITEM_COLOR,
NEGATIVE_ITEM_COLOR,
NEGATIVE_STRUCTURE_COLOR,
PLAYER_COLOR,
TOWER_COLOR,
cell_size_for,
render_board,
)
from life_game.rules import RULES
def test_render_board_draws_semantic_overlay_glyphs():
grid = np.zeros((8, 8), dtype=np.uint8)
enemies = np.zeros_like(grid, dtype=bool)
boss = np.zeros_like(grid, dtype=bool)
enemies[1, 1] = True
boss[1, 5] = True
game = GameModel(
enemies=enemies,
boss=boss,
player=(2, 2),
bullets=((3, 3),),
towers=((4, 4),),
data={
HELPER_ITEMS_KEY: ((5, 5),),
NEGATIVE_ITEMS_KEY: ((5, 1),),
NEGATIVE_STRUCTURES_KEY: ((6, 6),),
},
)
image = render_board(grid, RULES["conway"], game)
cell_size = cell_size_for(grid)
assert image.dtype == np.uint8
assert image.shape == (grid.shape[0] * cell_size, grid.shape[1] * cell_size, 3)
assert _cell_has_color(image, 1, 1, ENEMY_COLOR, cell_size)
assert _cell_has_color(image, 1, 5, BOSS_COLOR, cell_size)
assert _cell_has_color(image, 2, 2, PLAYER_COLOR, cell_size)
assert _cell_has_color(image, 3, 3, BULLET_COLOR, cell_size)
assert _cell_has_color(image, 4, 4, TOWER_COLOR, cell_size)
assert _cell_has_color(image, 5, 5, HELPER_ITEM_COLOR, cell_size)
assert _cell_has_color(image, 5, 1, NEGATIVE_ITEM_COLOR, cell_size)
assert _cell_has_color(image, 6, 6, NEGATIVE_STRUCTURE_COLOR, cell_size)
def _cell_has_color(image: np.ndarray, row: int, col: int, color: np.ndarray, cell_size: int) -> bool:
region = image[row * cell_size : (row + 1) * cell_size, col * cell_size : (col + 1) * cell_size]
return bool(np.any(np.all(region == color, axis=2)))