mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-14 03:31:50 +02:00
51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
# pylint: disable=missing-function-docstring, missing-module-docstring, unused-import
|
|
|
|
import pytest
|
|
from qtpy.QtCore import Qt
|
|
|
|
from bec_widgets.widgets.games import Minesweeper
|
|
from bec_widgets.widgets.games.minesweeper import LEVELS, GameStatus, Pos
|
|
|
|
|
|
@pytest.fixture
|
|
def minesweeper(qtbot):
|
|
widget = Minesweeper()
|
|
qtbot.addWidget(widget)
|
|
qtbot.waitExposed(widget)
|
|
yield widget
|
|
|
|
|
|
def test_minesweeper_init(minesweeper: Minesweeper):
|
|
assert minesweeper.status == GameStatus.READY
|
|
|
|
|
|
def test_changing_level_updates_size_and_removes_old_grid_items(minesweeper: Minesweeper):
|
|
assert minesweeper.b_size == LEVELS["1"][0]
|
|
grid_items = [minesweeper.grid.itemAt(i).widget() for i in range(minesweeper.grid.count())]
|
|
for w in grid_items:
|
|
assert w.parent() is not None
|
|
minesweeper.change_level("2")
|
|
assert minesweeper.b_size == LEVELS["2"][0]
|
|
for w in grid_items:
|
|
assert w.parent() is None
|
|
|
|
|
|
def test_game_state_changes_to_failed_on_loss(qtbot, minesweeper: Minesweeper):
|
|
assert minesweeper.status == GameStatus.READY
|
|
grid_items: list[Pos] = [
|
|
minesweeper.grid.itemAt(i).widget() for i in range(minesweeper.grid.count())
|
|
]
|
|
mine = [p for p in grid_items if p.is_mine][0]
|
|
|
|
with qtbot.waitSignal(mine.ohno, timeout=1000):
|
|
qtbot.mouseRelease(mine, Qt.MouseButton.LeftButton)
|
|
assert minesweeper.status == GameStatus.FAILED
|
|
|
|
|
|
def test_game_resets_on_reset_click(minesweeper: Minesweeper):
|
|
assert minesweeper.status == GameStatus.READY
|
|
minesweeper.grid.itemAt(1).widget().ohno.emit()
|
|
assert minesweeper.status == GameStatus.FAILED
|
|
minesweeper.reset_button_pressed()
|
|
assert minesweeper.status == GameStatus.PLAYING
|