Coverage for test/test_plotting.py: 100%

44 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-09-14 14:49 -0400

1from dataclasses import dataclass 

2 

3import numpy as np 

4 

5from peakipy.plotting import ( 

6 construct_surface_legend_string, 

7 plot_data_is_valid, 

8 df_to_rich_table, 

9) 

10 

11 

12@dataclass 

13class Row: 

14 assignment: str 

15 

16 

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 

22 

23 

24import pytest 

25from unittest.mock import MagicMock, patch 

26 

27 

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 

39 

40 

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 ) 

53 

54 

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 ) 

67 

68 

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 ) 

81 

82 

83def test_plot_data_is_valid(valid_plot_data): 

84 assert plot_data_is_valid(valid_plot_data) == True 

85 

86 

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() 

95 

96 

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()