Coverage for colour/plotting/tests/test_temperature.py: 100%

65 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-11-15 19:01 +1300

1"""Define the unit tests for the :mod:`colour.plotting.temperature` module.""" 

2 

3from __future__ import annotations 

4 

5import pytest 

6from matplotlib.axes import Axes 

7from matplotlib.figure import Figure 

8 

9from colour.plotting import ( 

10 plot_planckian_locus_in_chromaticity_diagram_CIE1931, 

11 plot_planckian_locus_in_chromaticity_diagram_CIE1960UCS, 

12) 

13from colour.plotting.temperature import ( 

14 lines_daylight_locus, 

15 lines_planckian_locus, 

16 plot_daylight_locus, 

17 plot_planckian_locus, 

18 plot_planckian_locus_in_chromaticity_diagram, 

19) 

20 

21__author__ = "Colour Developers" 

22__copyright__ = "Copyright 2013 Colour Developers" 

23__license__ = "BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause" 

24__maintainer__ = "Colour Developers" 

25__email__ = "colour-developers@colour-science.org" 

26__status__ = "Production" 

27 

28__all__ = [ 

29 "TestLinesPlanckianLocus", 

30 "TestPlotDaylightLocus", 

31 "TestLinesPlanckianLocus", 

32 "TestPlotPlanckianLocus", 

33 "TestPlotPlanckianLocusInChromaticityDiagram", 

34 "TestPlotPlanckianLocusInChromaticityDiagramCIE1931", 

35 "TestPlotPlanckianLocusInChromaticityDiagramCIE1960UCS", 

36] 

37 

38 

39class TestLinesDaylightLocus: 

40 """ 

41 Define :func:`colour.plotting.diagrams.lines_daylight_locus` definition 

42 unit tests methods. 

43 """ 

44 

45 def test_lines_daylight_locus(self) -> None: 

46 """ 

47 Test :func:`colour.plotting.diagrams.lines_daylight_locus` definition. 

48 """ 

49 

50 assert len(lines_daylight_locus()) == 1 

51 

52 

53class TestPlotDaylightLocus: 

54 """ 

55 Define :func:`colour.plotting.temperature.plot_daylight_locus` definition 

56 unit tests methods. 

57 """ 

58 

59 def test_plot_daylight_locus(self) -> None: 

60 """ 

61 Test :func:`colour.plotting.temperature.plot_daylight_locus` 

62 definition. 

63 """ 

64 

65 figure, axes = plot_daylight_locus() 

66 

67 assert isinstance(figure, Figure) 

68 assert isinstance(axes, Axes) 

69 

70 pytest.raises(ValueError, lambda: plot_daylight_locus(method="Undefined")) 

71 

72 figure, axes = plot_daylight_locus(method="CIE 1976 UCS") 

73 

74 assert isinstance(figure, Figure) 

75 assert isinstance(axes, Axes) 

76 

77 figure, axes = plot_daylight_locus(planckian_locus_colours="RGB") 

78 

79 assert isinstance(figure, Figure) 

80 assert isinstance(axes, Axes) 

81 

82 

83class TestLinesPlanckianLocus: 

84 """ 

85 Define :func:`colour.plotting.diagrams.lines_planckian_locus` definition 

86 unit tests methods. 

87 """ 

88 

89 def test_lines_planckian_locus(self) -> None: 

90 """ 

91 Test :func:`colour.plotting.diagrams.lines_planckian_locus` definition. 

92 """ 

93 

94 assert len(lines_planckian_locus()) == 2 

95 

96 

97class TestPlotPlanckianLocus: 

98 """ 

99 Define :func:`colour.plotting.temperature.plot_planckian_locus` definition 

100 unit tests methods. 

101 """ 

102 

103 def test_plot_planckian_locus(self) -> None: 

104 """ 

105 Test :func:`colour.plotting.temperature.plot_planckian_locus` 

106 definition. 

107 """ 

108 

109 figure, axes = plot_planckian_locus() 

110 

111 assert isinstance(figure, Figure) 

112 assert isinstance(axes, Axes) 

113 

114 pytest.raises(ValueError, lambda: plot_planckian_locus(method="Undefined")) 

115 

116 figure, axes = plot_planckian_locus(method="CIE 1976 UCS") 

117 

118 assert isinstance(figure, Figure) 

119 assert isinstance(axes, Axes) 

120 

121 figure, axes = plot_planckian_locus(planckian_locus_colours="RGB") 

122 

123 assert isinstance(figure, Figure) 

124 assert isinstance(axes, Axes) 

125 

126 figure, axes = plot_planckian_locus(planckian_locus_labels=[5500, 6500]) 

127 

128 assert isinstance(figure, Figure) 

129 assert isinstance(axes, Axes) 

130 

131 

132class TestPlotPlanckianLocusInChromaticityDiagram: 

133 """ 

134 Define :func:`colour.plotting.temperature.\ 

135plot_planckian_locus_in_chromaticity_diagram` definition unit tests methods. 

136 """ 

137 

138 def test_plot_planckian_locus_in_chromaticity_diagram(self) -> None: 

139 """ 

140 Test :func:`colour.plotting.temperature.\ 

141plot_planckian_locus_in_chromaticity_diagram` definition. 

142 """ 

143 

144 figure, axes = plot_planckian_locus_in_chromaticity_diagram( 

145 ["A", "B", "C"], 

146 annotate_kwargs={"arrowprops": {"width": 10}}, 

147 plot_kwargs={ 

148 "markersize": 15, 

149 }, 

150 ) 

151 

152 assert isinstance(figure, Figure) 

153 assert isinstance(axes, Axes) 

154 

155 figure, axes = plot_planckian_locus_in_chromaticity_diagram( 

156 ["A", "B", "C"], 

157 annotate_kwargs=[{"arrowprops": {"width": 10}}] * 3, 

158 plot_kwargs=[ 

159 { 

160 "markersize": 15, 

161 } 

162 ] 

163 * 3, 

164 ) 

165 

166 assert isinstance(figure, Figure) 

167 assert isinstance(axes, Axes) 

168 

169 pytest.raises( 

170 ValueError, 

171 lambda: plot_planckian_locus_in_chromaticity_diagram( 

172 ["A", "B", "C"], 

173 chromaticity_diagram_callable=lambda **x: x, 

174 planckian_locus_callable=lambda **x: x, 

175 method="Undefined", 

176 ), 

177 ) 

178 

179 

180class TestPlotPlanckianLocusInChromaticityDiagramCIE1931: 

181 """ 

182 Define :func:`colour.plotting.temperature.\ 

183plot_planckian_locus_in_chromaticity_diagram_CIE1931` definition unit tests 

184 methods. 

185 """ 

186 

187 def test_plot_planckian_locus_in_chromaticity_diagram_CIE1931(self) -> None: 

188 """ 

189 Test :func:`colour.plotting.temperature.\ 

190plot_planckian_locus_in_chromaticity_diagram_CIE1931` definition. 

191 """ 

192 

193 figure, axes = plot_planckian_locus_in_chromaticity_diagram_CIE1931( 

194 ["A", "B", "C"] 

195 ) 

196 

197 assert isinstance(figure, Figure) 

198 assert isinstance(axes, Axes) 

199 

200 

201class TestPlotPlanckianLocusInChromaticityDiagramCIE1960UCS: 

202 """ 

203 Define :func:`colour.plotting.temperature.\ 

204plot_planckian_locus_in_chromaticity_diagram_CIE1960UCS` definition unit tests 

205 methods. 

206 """ 

207 

208 def test_plot_planckian_locus_in_chromaticity_diagram_CIE1960UCS(self) -> None: 

209 """ 

210 Test :func:`colour.plotting.temperature.\ 

211plot_planckian_locus_in_chromaticity_diagram_CIE1960UCS` definition. 

212 """ 

213 

214 figure, axes = plot_planckian_locus_in_chromaticity_diagram_CIE1960UCS( 

215 ["A", "B", "C"] 

216 ) 

217 

218 assert isinstance(figure, Figure) 

219 assert isinstance(axes, Axes)