Coverage for test/test_plotting.py: 100%
44 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-15 20:42 -0400
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-15 20:42 -0400
1from dataclasses import dataclass
3import numpy as np
5from peakipy.plotting import (
6 construct_surface_legend_string,
7 plot_data_is_valid,
8 df_to_rich_table,
9)
12@dataclass
13class Row:
14 assignment: str
17def test_construct_surface_legend_string():
18 row = Row("assignment")
19 expected_legend = "assignment"
20 actual_legend = construct_surface_legend_string(row)
21 assert expected_legend == actual_legend
24import pytest
25from unittest.mock import MagicMock, patch
28# Mock PlottingDataForPlane class for testing purposes
29class PlottingDataForPlane:
30 def __init__(
31 self, x_plot, y_plot, masked_data, plane_lineshape_parameters, pseudo3D, plane
32 ):
33 self.x_plot = x_plot
34 self.y_plot = y_plot
35 self.masked_data = masked_data
36 self.plane_lineshape_parameters = plane_lineshape_parameters
37 self.pseudo3D = pseudo3D
38 self.plane = plane
41@pytest.fixture
42def valid_plot_data():
43 return PlottingDataForPlane(
44 x_plot=np.array([[1, 2, 3]]),
45 y_plot=np.array([[4, 5, 6]]),
46 masked_data=np.array([[7, 8, 9]]),
47 plane_lineshape_parameters=MagicMock(clustid=1),
48 pseudo3D=MagicMock(
49 f1_ppm_limits=[0, 1], f2_ppm_limits=[0, 1], f1_label="F1", f2_label="F2"
50 ),
51 plane=MagicMock(clustid=1),
52 )
55@pytest.fixture
56def invalid_plot_data_empty_x():
57 return PlottingDataForPlane(
58 x_plot=np.array([]),
59 y_plot=np.array([[4, 5, 6]]),
60 masked_data=np.array([[7, 8, 9]]),
61 plane_lineshape_parameters=MagicMock(clustid=1),
62 pseudo3D=MagicMock(
63 f1_ppm_limits=[0, 1], f2_ppm_limits=[0, 1], f1_label="F1", f2_label="F2"
64 ),
65 plane=MagicMock(clustid=1),
66 )
69@pytest.fixture
70def invalid_plot_data_empty_masked():
71 return PlottingDataForPlane(
72 x_plot=np.array([[1, 2, 3]]),
73 y_plot=np.array([[4, 5, 6]]),
74 masked_data=np.array([[]]),
75 plane_lineshape_parameters=MagicMock(clustid=1),
76 pseudo3D=MagicMock(
77 f1_ppm_limits=[0, 1], f2_ppm_limits=[0, 1], f1_label="F1", f2_label="F2"
78 ),
79 plane=MagicMock(clustid=1),
80 )
83def test_plot_data_is_valid(valid_plot_data):
84 assert plot_data_is_valid(valid_plot_data) == True
87@patch("peakipy.plotting.print")
88@patch("peakipy.plotting.plt.close")
89def test_plot_data_is_invalid_empty_x(
90 mock_close, mock_print, invalid_plot_data_empty_x
91):
92 assert plot_data_is_valid(invalid_plot_data_empty_x) == False
93 assert mock_print.call_count == 3
94 mock_close.assert_called_once()
97@patch("peakipy.plotting.print")
98@patch("peakipy.plotting.plt.close")
99def test_plot_data_is_invalid_empty_masked(
100 mock_close, mock_print, invalid_plot_data_empty_masked
101):
102 assert plot_data_is_valid(invalid_plot_data_empty_masked) == False
103 assert mock_print.call_count == 4
104 mock_close.assert_called_once()