From 835b82cb79a68ef5b04c346d73ae84e2b36cbebc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=95=D0=BC=D0=B5?= =?UTF-8?q?=D0=BB=D1=8C=D1=8F=D0=BD=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Thu, 10 Sep 2026 14:13:24 +0300 Subject: [PATCH] tests: dog_art frames + animation --- tests/test_tui.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/tests/test_tui.py b/tests/test_tui.py index d5fa67b..74217cd 100644 --- a/tests/test_tui.py +++ b/tests/test_tui.py @@ -20,6 +20,7 @@ from selectel_ml_tui.models import ( ) from selectel_ml_tui.services import DashboardData from selectel_ml_tui.storage import Storage +from selectel_ml_tui.ui import dog_art from selectel_ml_tui.ui.app import DogLoader, SelectelMLTUI @@ -389,9 +390,25 @@ async def test_dog_loader_animates(tmp_path) -> None: loader.add_class("visible") loader.start() assert loader.running - first = loader.render() - await pilot.pause(0.4) - second = loader.render() - assert first != second + assert loader.frame_count == dog_art.FRAME_COUNT + first_frame = loader.frame + first = str(loader.render()) + await pilot.pause(0.3) + assert loader.frame != first_frame + assert str(loader.render()) != first + # дорожка из лапок присутствует + assert "🐾" in str(loader.render()) loader.stop() assert not loader.running + + +def test_dog_art_frames() -> None: + frames = dog_art.decode_frames() + assert len(frames) == dog_art.FRAME_COUNT + size = dog_art.WIDTH * dog_art.PX_HEIGHT + assert all(len(f) == size for f in frames) + # индексы палитры в допустимом диапазоне, фон = 0 + assert all(b < len(dog_art.PALETTE) for f in frames for b in f) + assert dog_art.FRAME_MS == 40 + # кадры различаются (анимация) + assert len({bytes(f) for f in frames}) > 1