Files
pyGUI/tests/test_frame_player.py
jack 4bb855a940 feat(graph): add graph tab for whole-run data
Provides a static line chart plotting multi-sensor temperature values
over time when a session file is loaded.
2026-07-10 20:06:48 -07:00

53 lines
1.5 KiB
Python

from pygui.backend.models.frame import Frame
from pygui.backend.models.frame_player import FramePlayer, all_sensor_series
def frames(n):
return [Frame(seq=i, time=float(i), values=[149.0 + i])for i in range(n)]
def test_loads_and_reports_total():
p = FramePlayer(); p.load(frames(3))
assert p.total == 3 and p.index == 0
current = p.current()
assert current is not None
assert current.values == [149.0]
def test_step_forward_and_back_clamps():
p = FramePlayer(); p.load(frames(3))
assert p.step(1).index == 1
assert p.step(1).index == 2
assert p.step(1).index == 2
assert p.step(-5).index == 0
def test_seek():
p = FramePlayer(); p.load(frames(5))
assert p.seek(3).index == 3
assert p.seek(99).index == 4
def test_at_end():
p = FramePlayer(); p.load(frames(2))
assert not p.at_end
p.seek(1)
assert p.at_end
def test_frames_property_exposes_loaded_frames():
p = FramePlayer(); p.load(frames(3))
assert p.frames == tuple(frames(3))
# ---- all_sensor_series (Graph tab whole-run assembly) ----
def test_all_sensor_series_empty_frames():
assert all_sensor_series([]) == ([], [])
def test_all_sensor_series_names_and_columns():
fs = [
Frame(seq=0, time=0.0, values=[150.0, 148.0]),
Frame(seq=1, time=1.0, values=[151.0, 147.5]),
Frame(seq=2, time=2.0, values=[152.0, 147.0]),
]
names, series = all_sensor_series(fs)
assert names == ["Sensor 1", "Sensor 2"]
assert series == [[150.0, 151.0, 152.0], [148.0, 147.5, 147.0]]