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.
This commit is contained in:
jack
2026-07-10 20:06:48 -07:00
parent 94f917b116
commit 4bb855a940
8 changed files with 242 additions and 2 deletions
+61
View File
@@ -0,0 +1,61 @@
"""Tests for src/pygui/backend/visualization/graph_quick_item.py."""
import pytest
pytestmark = pytest.mark.usefixtures("qapp")
def test_no_data_initially():
from pygui.backend.visualization.graph_quick_item import GraphQuickItem
item = GraphQuickItem()
assert item.seriesData == []
assert item.sensorNames == []
def test_series_data_setter_stores_series():
from pygui.backend.visualization.graph_quick_item import GraphQuickItem
item = GraphQuickItem()
item.seriesData = [[150.0, 151.0], [148.0, 147.5]]
assert item.seriesData == [[150.0, 151.0], [148.0, 147.5]]
def test_series_data_auto_ranges_y_with_padding():
from pygui.backend.visualization.graph_quick_item import GraphQuickItem
item = GraphQuickItem()
item.seriesData = [[150.0, 100.0], [200.0, 120.0]]
# min=100, max=200, range=100, 10% pad => [90, 210]
assert item._min_y == pytest.approx(90.0)
assert item._max_y == pytest.approx(210.0)
def test_series_data_empty_keeps_default_range():
from pygui.backend.visualization.graph_quick_item import GraphQuickItem
item = GraphQuickItem()
item.seriesData = []
assert item._min_y == 0.0
assert item._max_y == 150.0
def test_sensor_names_setter_stores_names():
from pygui.backend.visualization.graph_quick_item import GraphQuickItem
item = GraphQuickItem()
item.sensorNames = ["Sensor 1", "Sensor 2"]
assert item.sensorNames == ["Sensor 1", "Sensor 2"]
def test_non_numeric_values_are_skipped_not_crashing():
from pygui.backend.visualization.graph_quick_item import GraphQuickItem
item = GraphQuickItem()
item.seriesData = [[150.0, "bad", 151.0]]
assert item._min_y == pytest.approx(149.9)
assert item._max_y == pytest.approx(151.1)