import pytest from pygui.backend.visualization.chart_geometry import ( elapsed_to_pixel, index_to_pixel, value_to_pixel, ) def test_value_to_pixel_min_maps_to_bottom(): assert value_to_pixel(0.0, 0.0, 100.0, pixel_start=10.0, pixel_span=200.0) == pytest.approx(210.0) def test_value_to_pixel_max_maps_to_top(): assert value_to_pixel(100.0, 0.0, 100.0, pixel_start=10.0, pixel_span=200.0) == pytest.approx(10.0) def test_value_to_pixel_midpoint(): assert value_to_pixel(50.0, 0.0, 100.0, pixel_start=0.0, pixel_span=200.0) == pytest.approx(100.0) def test_value_to_pixel_degenerate_range_centers(): assert value_to_pixel(5.0, 5.0, 5.0, pixel_start=0.0, pixel_span=200.0) == pytest.approx(100.0) def test_index_to_pixel_first_and_last(): assert index_to_pixel(0, 5, pixel_start=0.0, pixel_span=100.0) == pytest.approx(0.0) assert index_to_pixel(4, 5, pixel_start=0.0, pixel_span=100.0) == pytest.approx(100.0) def test_index_to_pixel_single_point_centers(): assert index_to_pixel(0, 1, pixel_start=0.0, pixel_span=100.0) == pytest.approx(50.0) def test_elapsed_to_pixel_window_start_maps_to_left(): assert elapsed_to_pixel(10.0, window_start=10.0, window_end=70.0, pixel_start=0.0, pixel_span=200.0) == pytest.approx(0.0) def test_elapsed_to_pixel_window_end_maps_to_right(): assert elapsed_to_pixel(70.0, window_start=10.0, window_end=70.0, pixel_start=0.0, pixel_span=200.0) == pytest.approx(200.0) def test_elapsed_to_pixel_midpoint(): assert elapsed_to_pixel(40.0, window_start=10.0, window_end=70.0, pixel_start=0.0, pixel_span=200.0) == pytest.approx(100.0) def test_elapsed_to_pixel_degenerate_window_pins_right(): assert elapsed_to_pixel(5.0, window_start=5.0, window_end=5.0, pixel_start=0.0, pixel_span=200.0) == pytest.approx(200.0)