Coverage for plotting/tests/test_section.py: 100%
49 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-16 22:49 +1300
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-16 22:49 +1300
1"""Define the unit tests for the :mod:`colour.plotting.section` module."""
3from __future__ import annotations
5from matplotlib.axes import Axes
6from matplotlib.figure import Figure
8from colour.geometry import primitive_cube
9from colour.models import RGB_COLOURSPACE_sRGB, RGB_to_XYZ
10from colour.plotting import plot_RGB_colourspace_section, plot_visible_spectrum_section
11from colour.plotting.section import plot_hull_section_colours, plot_hull_section_contour
12from colour.utilities import is_scipy_installed, is_trimesh_installed
14__author__ = "Colour Developers"
15__copyright__ = "Copyright 2013 Colour Developers"
16__license__ = "BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause"
17__maintainer__ = "Colour Developers"
18__email__ = "colour-developers@colour-science.org"
19__status__ = "Production"
21__all__ = [
22 "TestPlotHullSectionColours",
23 "TestPlotHullSectionContour",
24 "TestPlotVisibleSpectrumSection",
25 "TestPlotRGBColourspaceSection",
26]
29class TestPlotHullSectionColours:
30 """
31 Define :func:`colour.plotting.section.plot_hull_section_colours`
32 definition unit tests methods.
33 """
35 def test_plot_hull_section_colours(self) -> None:
36 """
37 Test :func:`colour.plotting.section.plot_hull_section_colours`
38 definition.
39 """
41 if not is_trimesh_installed(): # pragma: no cover
42 return
44 import trimesh # noqa: PLC0415
46 vertices, faces, _outline = primitive_cube(1, 1, 1, 64, 64, 64)
47 XYZ_vertices = RGB_to_XYZ(vertices["position"] + 0.5, RGB_COLOURSPACE_sRGB)
48 hull = trimesh.Trimesh(XYZ_vertices, faces, process=False)
50 figure, axes = plot_hull_section_colours(hull)
52 assert isinstance(figure, Figure)
53 assert isinstance(axes, Axes)
55 figure, axes = plot_hull_section_colours(hull, axis="+x")
57 assert isinstance(figure, Figure)
58 assert isinstance(axes, Axes)
60 figure, axes = plot_hull_section_colours(hull, axis="+y")
62 assert isinstance(figure, Figure)
63 assert isinstance(axes, Axes)
66class TestPlotHullSectionContour:
67 """
68 Define :func:`colour.plotting.section.plot_hull_section_contour`
69 definition unit tests methods.
70 """
72 def test_plot_hull_section_contour(self) -> None:
73 """
74 Test :func:`colour.plotting.section.plot_hull_section_contour`
75 definition.
76 """
78 if not is_trimesh_installed(): # pragma: no cover
79 return
81 import trimesh # noqa: PLC0415
83 vertices, faces, _outline = primitive_cube(1, 1, 1, 64, 64, 64)
84 XYZ_vertices = RGB_to_XYZ(vertices["position"] + 0.5, RGB_COLOURSPACE_sRGB)
85 hull = trimesh.Trimesh(XYZ_vertices, faces, process=False)
87 figure, axes = plot_hull_section_contour(hull)
89 assert isinstance(figure, Figure)
90 assert isinstance(axes, Axes)
93class TestPlotVisibleSpectrumSection:
94 """
95 Define :func:`colour.plotting.section.plot_visible_spectrum_section`
96 definition unit tests methods.
97 """
99 def test_plot_visible_spectrum_section(self) -> None:
100 """
101 Test :func:`colour.plotting.section.plot_visible_spectrum_section`
102 definition.
103 """
105 if not is_scipy_installed(): # pragma: no cover
106 return
108 if not is_trimesh_installed(): # pragma: no cover
109 return
111 figure, axes = plot_visible_spectrum_section()
113 assert isinstance(figure, Figure)
114 assert isinstance(axes, Axes)
117class TestPlotRGBColourspaceSection:
118 """
119 Define :func:`colour.plotting.section.plot_RGB_colourspace_section`
120 definition unit tests methods.
121 """
123 def test_plot_RGB_colourspace_section(self) -> None:
124 """
125 Test :func:`colour.plotting.section.plot_RGB_colourspace_section`
126 definition.
127 """
129 if not is_trimesh_installed(): # pragma: no cover
130 return
132 figure, axes = plot_RGB_colourspace_section("sRGB")
134 assert isinstance(figure, Figure)
135 assert isinstance(axes, Axes)