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:
@@ -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)
|
||||
Reference in New Issue
Block a user