Coverage for io/luts/tests/test_sony_spimtx.py: 100%
44 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.io.luts.sony_spimtx` module."""
3from __future__ import annotations
5import os
6import shutil
7import tempfile
9import numpy as np
11from colour.constants import TOLERANCE_ABSOLUTE_TESTS
12from colour.io import read_LUT_SonySPImtx, write_LUT_SonySPImtx
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 "ROOT_LUTS",
23 "TestReadLUTSonySPImtx",
24 "TestWriteLUTSonySPImtx",
25]
27ROOT_LUTS: str = os.path.join(os.path.dirname(__file__), "resources", "sony_spimtx")
30class TestReadLUTSonySPImtx:
31 """
32 Define :func:`colour.io.luts.sony_spimtx.read_LUT_SonySPImtx` definition
33 unit tests methods.
34 """
36 def test_read_LUT_SonySPImtx(self) -> None:
37 """
38 Test :func:`colour.io.luts.sony_spimtx.read_LUT_SonySPImtx`
39 definition.
40 """
42 LUT_1 = read_LUT_SonySPImtx(os.path.join(ROOT_LUTS, "dt.spimtx"))
44 np.testing.assert_allclose(
45 LUT_1.matrix,
46 np.array(
47 [
48 [0.864274, 0.000000, 0.000000, 0.000000],
49 [0.000000, 0.864274, 0.000000, 0.000000],
50 [0.000000, 0.000000, 0.864274, 0.000000],
51 [0.000000, 0.000000, 0.000000, 1.000000],
52 ]
53 ),
54 atol=TOLERANCE_ABSOLUTE_TESTS,
55 )
56 np.testing.assert_allclose(
57 LUT_1.offset,
58 np.array([0.000000, 0.000000, 0.000000, 0.000000]),
59 atol=TOLERANCE_ABSOLUTE_TESTS,
60 )
61 assert LUT_1.name == "dt"
63 LUT_2 = read_LUT_SonySPImtx(os.path.join(ROOT_LUTS, "p3_to_xyz16.spimtx"))
64 np.testing.assert_allclose(
65 LUT_2.matrix,
66 np.array(
67 [
68 [0.44488, 0.27717, 0.17237, 0.00000],
69 [0.20936, 0.72170, 0.06895, 0.00000],
70 [0.00000, 0.04707, 0.90780, 0.00000],
71 [0.00000, 0.00000, 0.00000, 1.00000],
72 ]
73 ),
74 atol=TOLERANCE_ABSOLUTE_TESTS,
75 )
76 np.testing.assert_allclose(
77 LUT_2.offset,
78 np.array([0.000000, 0.000000, 0.000000, 0.000000]),
79 atol=TOLERANCE_ABSOLUTE_TESTS,
80 )
81 assert LUT_2.name == "p3 to xyz16"
83 LUT_3 = read_LUT_SonySPImtx(os.path.join(ROOT_LUTS, "Matrix_Offset.spimtx"))
84 np.testing.assert_allclose(
85 LUT_3.matrix,
86 np.array(
87 [
88 [1.0, 0.0, 0.0, 0.0],
89 [0.0, 1.0, 0.0, 0.0],
90 [0.0, 0.0, 1.0, 0.0],
91 [0.0, 0.0, 0.0, 1.0],
92 ]
93 ),
94 atol=TOLERANCE_ABSOLUTE_TESTS,
95 )
96 np.testing.assert_allclose(
97 LUT_3.offset,
98 np.array([0.0, 0.0, 1.0, 0.0]),
99 atol=TOLERANCE_ABSOLUTE_TESTS,
100 )
101 assert LUT_3.name == "Matrix Offset"
104class TestWriteLUTSonySPImtx:
105 """
106 Define :func:`colour.io.luts.sony_spimtx.write_LUT_SonySPImtx` definition
107 unit tests methods.
108 """
110 def setup_method(self) -> None:
111 """Initialise the common tests attributes."""
113 self._temporary_directory = tempfile.mkdtemp()
115 def teardown_method(self) -> None:
116 """After tests actions."""
118 shutil.rmtree(self._temporary_directory)
120 def test_write_LUT_SonySPImtx(self) -> None:
121 """
122 Test :func:`colour.io.luts.sony_spimtx.write_LUT_SonySPImtx`
123 definition.
124 """
126 LUT_1_r = read_LUT_SonySPImtx(os.path.join(ROOT_LUTS, "dt.spimtx"))
127 write_LUT_SonySPImtx(
128 LUT_1_r, os.path.join(self._temporary_directory, "dt.spimtx")
129 )
130 LUT_1_t = read_LUT_SonySPImtx(
131 os.path.join(self._temporary_directory, "dt.spimtx")
132 )
133 assert LUT_1_r == LUT_1_t
135 LUT_2_r = read_LUT_SonySPImtx(os.path.join(ROOT_LUTS, "p3_to_xyz16.spimtx"))
136 write_LUT_SonySPImtx(
137 LUT_2_r,
138 os.path.join(self._temporary_directory, "p3_to_xyz16.spimtx"),
139 )
140 LUT_2_t = read_LUT_SonySPImtx(
141 os.path.join(self._temporary_directory, "p3_to_xyz16.spimtx")
142 )
143 assert LUT_2_r == LUT_2_t
144 assert LUT_2_r.comments == LUT_2_t.comments