Coverage for colour/colorimetry/tests/test_lightness.py: 100%
209 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-15 19:01 +1300
« 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.colorimetry.lightness` module."""
3from __future__ import annotations
5import numpy as np
7from colour.colorimetry import (
8 intermediate_lightness_function_CIE1976,
9 lightness_Abebe2017,
10 lightness_CIE1976,
11 lightness_Fairchild2010,
12 lightness_Fairchild2011,
13 lightness_Glasser1958,
14 lightness_Wyszecki1963,
15)
16from colour.colorimetry.lightness import lightness
17from colour.constants import TOLERANCE_ABSOLUTE_TESTS
18from colour.utilities import domain_range_scale, ignore_numpy_errors
20__author__ = "Colour Developers"
21__copyright__ = "Copyright 2013 Colour Developers"
22__license__ = "BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause"
23__maintainer__ = "Colour Developers"
24__email__ = "colour-developers@colour-science.org"
25__status__ = "Production"
27__all__ = [
28 "TestLightnessGlasser1958",
29 "TestLightnessWyszecki1963",
30 "TestIntermediateLightnessFunctionCIE1976",
31 "TestLightnessCIE1976",
32 "TestLightnessFairchild2010",
33 "TestLightnessFairchild2011",
34 "TestLightnessAbebe2017",
35 "TestLightness",
36]
39class TestLightnessGlasser1958:
40 """
41 Define :func:`colour.colorimetry.lightness.lightness_Glasser1958`
42 definition unit tests methods.
43 """
45 def test_lightness_Glasser1958(self) -> None:
46 """
47 Test :func:`colour.colorimetry.lightness.lightness_Glasser1958`
48 definition.
49 """
51 np.testing.assert_allclose(
52 lightness_Glasser1958(12.19722535),
53 39.83512646492521,
54 atol=TOLERANCE_ABSOLUTE_TESTS,
55 )
57 np.testing.assert_allclose(
58 lightness_Glasser1958(23.04276781),
59 53.585946877480623,
60 atol=TOLERANCE_ABSOLUTE_TESTS,
61 )
63 np.testing.assert_allclose(
64 lightness_Glasser1958(6.15720079),
65 27.972867038082629,
66 atol=TOLERANCE_ABSOLUTE_TESTS,
67 )
69 def test_n_dimensional_lightness_Glasser1958(self) -> None:
70 """
71 Test :func:`colour.colorimetry.lightness.lightness_Glasser1958`
72 definition n-dimensional arrays support.
73 """
75 Y = 12.19722535
76 L = lightness_Glasser1958(Y)
78 Y = np.tile(Y, 6)
79 L = np.tile(L, 6)
80 np.testing.assert_allclose(
81 lightness_Glasser1958(Y), L, atol=TOLERANCE_ABSOLUTE_TESTS
82 )
84 Y = np.reshape(Y, (2, 3))
85 L = np.reshape(L, (2, 3))
86 np.testing.assert_allclose(
87 lightness_Glasser1958(Y), L, atol=TOLERANCE_ABSOLUTE_TESTS
88 )
90 Y = np.reshape(Y, (2, 3, 1))
91 L = np.reshape(L, (2, 3, 1))
92 np.testing.assert_allclose(
93 lightness_Glasser1958(Y), L, atol=TOLERANCE_ABSOLUTE_TESTS
94 )
96 def test_domain_range_scale_lightness_Glasser1958(self) -> None:
97 """
98 Test :func:`colour.colorimetry.lightness.lightness_Glasser1958`
99 definition domain and range scale support.
100 """
102 L = lightness_Glasser1958(12.19722535)
104 d_r = (("reference", 1), ("1", 0.01), ("100", 1))
105 for scale, factor in d_r:
106 with domain_range_scale(scale):
107 np.testing.assert_allclose(
108 lightness_Glasser1958(12.19722535 * factor),
109 L * factor,
110 atol=TOLERANCE_ABSOLUTE_TESTS,
111 )
113 @ignore_numpy_errors
114 def test_nan_lightness_Glasser1958(self) -> None:
115 """
116 Test :func:`colour.colorimetry.lightness.lightness_Glasser1958`
117 definition nan support.
118 """
120 lightness_Glasser1958(np.array([-1.0, 0.0, 1.0, -np.inf, np.inf, np.nan]))
123class TestLightnessWyszecki1963:
124 """
125 Define :func:`colour.colorimetry.lightness.lightness_Wyszecki1963`
126 definition unit tests methods.
127 """
129 def test_lightness_Wyszecki1963(self) -> None:
130 """
131 Test :func:`colour.colorimetry.lightness.lightness_Wyszecki1963`
132 definition.
133 """
135 np.testing.assert_allclose(
136 lightness_Wyszecki1963(12.19722535),
137 40.547574599570197,
138 atol=TOLERANCE_ABSOLUTE_TESTS,
139 )
141 np.testing.assert_allclose(
142 lightness_Wyszecki1963(23.04276781),
143 54.140714588256841,
144 atol=TOLERANCE_ABSOLUTE_TESTS,
145 )
147 np.testing.assert_allclose(
148 lightness_Wyszecki1963(6.15720079),
149 28.821339499883976,
150 atol=TOLERANCE_ABSOLUTE_TESTS,
151 )
153 def test_n_dimensional_lightness_Wyszecki1963(self) -> None:
154 """
155 Test :func:`colour.colorimetry.lightness.lightness_Wyszecki1963`
156 definition n-dimensional arrays support.
157 """
159 Y = 12.19722535
160 W = lightness_Wyszecki1963(Y)
162 Y = np.tile(Y, 6)
163 W = np.tile(W, 6)
164 np.testing.assert_allclose(
165 lightness_Wyszecki1963(Y), W, atol=TOLERANCE_ABSOLUTE_TESTS
166 )
168 Y = np.reshape(Y, (2, 3))
169 W = np.reshape(W, (2, 3))
170 np.testing.assert_allclose(
171 lightness_Wyszecki1963(Y), W, atol=TOLERANCE_ABSOLUTE_TESTS
172 )
174 Y = np.reshape(Y, (2, 3, 1))
175 W = np.reshape(W, (2, 3, 1))
176 np.testing.assert_allclose(
177 lightness_Wyszecki1963(Y), W, atol=TOLERANCE_ABSOLUTE_TESTS
178 )
180 def test_domain_range_scale_lightness_Wyszecki1963(self) -> None:
181 """
182 Test :func:`colour.colorimetry.lightness.lightness_Wyszecki1963`
183 definition domain and range scale support.
184 """
186 W = lightness_Wyszecki1963(12.19722535)
188 d_r = (("reference", 1), ("1", 0.01), ("100", 1))
189 for scale, factor in d_r:
190 with domain_range_scale(scale):
191 np.testing.assert_allclose(
192 lightness_Wyszecki1963(12.19722535 * factor),
193 W * factor,
194 atol=TOLERANCE_ABSOLUTE_TESTS,
195 )
197 @ignore_numpy_errors
198 def test_nan_lightness_Wyszecki1963(self) -> None:
199 """
200 Test :func:`colour.colorimetry.lightness.lightness_Wyszecki1963`
201 definition nan support.
202 """
204 lightness_Wyszecki1963(np.array([-1.0, 0.0, 1.0, -np.inf, np.inf, np.nan]))
207class TestIntermediateLightnessFunctionCIE1976:
208 """
209 Define :func:`colour.colorimetry.lightness.\
210intermediate_lightness_function_CIE1976` definition unit tests methods.
211 """
213 def test_intermediate_lightness_function_CIE1976(self) -> None:
214 """
215 Test :func:`colour.colorimetry.lightness.\
216intermediate_lightness_function_CIE1976` definition.
217 """
219 np.testing.assert_allclose(
220 intermediate_lightness_function_CIE1976(12.19722535),
221 0.495929964178047,
222 atol=TOLERANCE_ABSOLUTE_TESTS,
223 )
225 np.testing.assert_allclose(
226 intermediate_lightness_function_CIE1976(23.04276781),
227 0.613072093530391,
228 atol=TOLERANCE_ABSOLUTE_TESTS,
229 )
231 np.testing.assert_allclose(
232 intermediate_lightness_function_CIE1976(6.15720079),
233 0.394876333449113,
234 atol=TOLERANCE_ABSOLUTE_TESTS,
235 )
237 def test_n_dimensional_intermediate_lightness_function_CIE1976(self) -> None:
238 """
239 Test :func:`colour.colorimetry.lightness.\
240intermediate_lightness_function_CIE1976` definition n-dimensional arrays
241 support.
242 """
244 Y = 12.19722535
245 f_Y_Y_n = intermediate_lightness_function_CIE1976(Y)
247 Y = np.tile(Y, 6)
248 f_Y_Y_n = np.tile(f_Y_Y_n, 6)
249 np.testing.assert_allclose(
250 intermediate_lightness_function_CIE1976(Y),
251 f_Y_Y_n,
252 atol=TOLERANCE_ABSOLUTE_TESTS,
253 )
255 Y = np.reshape(Y, (2, 3))
256 f_Y_Y_n = np.reshape(f_Y_Y_n, (2, 3))
257 np.testing.assert_allclose(
258 intermediate_lightness_function_CIE1976(Y),
259 f_Y_Y_n,
260 atol=TOLERANCE_ABSOLUTE_TESTS,
261 )
263 Y = np.reshape(Y, (2, 3, 1))
264 f_Y_Y_n = np.reshape(f_Y_Y_n, (2, 3, 1))
265 np.testing.assert_allclose(
266 intermediate_lightness_function_CIE1976(Y),
267 f_Y_Y_n,
268 atol=TOLERANCE_ABSOLUTE_TESTS,
269 )
271 def test_domain_range_scale_intermediate_lightness_function_CIE1976(self) -> None:
272 """
273 Test :func:`colour.colorimetry.lightness.\
274intermediate_lightness_function_CIE1976` definition domain and range scale
275 support.
276 """
278 f_Y_Y_n = intermediate_lightness_function_CIE1976(12.19722535, 100)
280 for scale in ("reference", "1", "100"):
281 with domain_range_scale(scale):
282 np.testing.assert_allclose(
283 intermediate_lightness_function_CIE1976(12.19722535, 100),
284 f_Y_Y_n,
285 atol=TOLERANCE_ABSOLUTE_TESTS,
286 )
288 @ignore_numpy_errors
289 def test_nan_intermediate_lightness_function_CIE1976(self) -> None:
290 """
291 Test :func:`colour.colorimetry.lightness.\
292intermediate_lightness_function_CIE1976` definition nan support.
293 """
295 intermediate_lightness_function_CIE1976(
296 np.array([-1.0, 0.0, 1.0, -np.inf, np.inf, np.nan])
297 )
300class TestLightnessCIE1976:
301 """
302 Define :func:`colour.colorimetry.lightness.lightness_CIE1976` definition
303 unit tests methods.
304 """
306 def test_lightness_CIE1976(self) -> None:
307 """
308 Test :func:`colour.colorimetry.lightness.lightness_CIE1976`
309 definition.
310 """
312 np.testing.assert_allclose(
313 lightness_CIE1976(12.19722535),
314 41.527875844653451,
315 atol=TOLERANCE_ABSOLUTE_TESTS,
316 )
318 np.testing.assert_allclose(
319 lightness_CIE1976(23.04276781),
320 55.116362849525402,
321 atol=TOLERANCE_ABSOLUTE_TESTS,
322 )
324 np.testing.assert_allclose(
325 lightness_CIE1976(6.15720079),
326 29.805654680097106,
327 atol=TOLERANCE_ABSOLUTE_TESTS,
328 )
330 np.testing.assert_allclose(
331 lightness_CIE1976(12.19722535, 50),
332 56.480581732417676,
333 atol=TOLERANCE_ABSOLUTE_TESTS,
334 )
336 np.testing.assert_allclose(
337 lightness_CIE1976(12.19722535, 75),
338 47.317620274162735,
339 atol=TOLERANCE_ABSOLUTE_TESTS,
340 )
342 np.testing.assert_allclose(
343 lightness_CIE1976(12.19722535, 95),
344 42.519930728120940,
345 atol=TOLERANCE_ABSOLUTE_TESTS,
346 )
348 def test_n_dimensional_lightness_CIE1976(self) -> None:
349 """
350 Test :func:`colour.colorimetry.lightness.lightness_CIE1976`
351 definition n-dimensional arrays support.
352 """
354 Y = 12.19722535
355 L_star = lightness_CIE1976(Y)
357 Y = np.tile(Y, 6)
358 L_star = np.tile(L_star, 6)
359 np.testing.assert_allclose(
360 lightness_CIE1976(Y), L_star, atol=TOLERANCE_ABSOLUTE_TESTS
361 )
363 Y = np.reshape(Y, (2, 3))
364 L_star = np.reshape(L_star, (2, 3))
365 np.testing.assert_allclose(
366 lightness_CIE1976(Y), L_star, atol=TOLERANCE_ABSOLUTE_TESTS
367 )
369 Y = np.reshape(Y, (2, 3, 1))
370 L_star = np.reshape(L_star, (2, 3, 1))
371 np.testing.assert_allclose(
372 lightness_CIE1976(Y), L_star, atol=TOLERANCE_ABSOLUTE_TESTS
373 )
375 def test_domain_range_scale_lightness_CIE1976(self) -> None:
376 """
377 Test :func:`colour.colorimetry.lightness.lightness_CIE1976`
378 definition domain and range scale support.
379 """
381 L_star = lightness_CIE1976(12.19722535, 100)
383 d_r = (("reference", 1), ("1", 0.01), ("100", 1))
384 for scale, factor in d_r:
385 with domain_range_scale(scale):
386 np.testing.assert_allclose(
387 lightness_CIE1976(12.19722535 * factor, 100 * factor),
388 L_star * factor,
389 atol=TOLERANCE_ABSOLUTE_TESTS,
390 )
392 @ignore_numpy_errors
393 def test_nan_lightness_CIE1976(self) -> None:
394 """
395 Test :func:`colour.colorimetry.lightness.lightness_CIE1976`
396 definition nan support.
397 """
399 lightness_CIE1976(np.array([-1.0, 0.0, 1.0, -np.inf, np.inf, np.nan]))
402class TestLightnessFairchild2010:
403 """
404 Define :func:`colour.colorimetry.lightness.lightness_Fairchild2010`
405 definition unit tests methods.
406 """
408 def test_lightness_Fairchild2010(self) -> None:
409 """
410 Test :func:`colour.colorimetry.lightness.lightness_Fairchild2010`
411 definition.
412 """
414 np.testing.assert_allclose(
415 lightness_Fairchild2010(12.19722535 / 100),
416 31.996390226262736,
417 atol=TOLERANCE_ABSOLUTE_TESTS,
418 )
420 np.testing.assert_allclose(
421 lightness_Fairchild2010(23.04276781 / 100),
422 60.203153682783302,
423 atol=TOLERANCE_ABSOLUTE_TESTS,
424 )
426 np.testing.assert_allclose(
427 lightness_Fairchild2010(6.15720079 / 100),
428 11.836517240976489,
429 atol=TOLERANCE_ABSOLUTE_TESTS,
430 )
432 np.testing.assert_allclose(
433 lightness_Fairchild2010(12.19722535 / 100, 2.75),
434 24.424283249379986,
435 atol=TOLERANCE_ABSOLUTE_TESTS,
436 )
438 np.testing.assert_allclose(
439 lightness_Fairchild2010(1008),
440 100.019986327374240,
441 atol=TOLERANCE_ABSOLUTE_TESTS,
442 )
444 np.testing.assert_allclose(
445 lightness_Fairchild2010(100800),
446 100.019999997090270,
447 atol=TOLERANCE_ABSOLUTE_TESTS,
448 )
450 def test_n_dimensional_lightness_Fairchild2010(self) -> None:
451 """
452 Test :func:`colour.colorimetry.lightness.lightness_Fairchild2010`
453 definition n-dimensional arrays support.
454 """
456 Y = 12.19722535 / 100
457 L_hdr = lightness_Fairchild2010(Y)
459 Y = np.tile(Y, 6)
460 L_hdr = np.tile(L_hdr, 6)
461 np.testing.assert_allclose(
462 lightness_Fairchild2010(Y), L_hdr, atol=TOLERANCE_ABSOLUTE_TESTS
463 )
465 Y = np.reshape(Y, (2, 3))
466 L_hdr = np.reshape(L_hdr, (2, 3))
467 np.testing.assert_allclose(
468 lightness_Fairchild2010(Y), L_hdr, atol=TOLERANCE_ABSOLUTE_TESTS
469 )
471 Y = np.reshape(Y, (2, 3, 1))
472 L_hdr = np.reshape(L_hdr, (2, 3, 1))
473 np.testing.assert_allclose(
474 lightness_Fairchild2010(Y), L_hdr, atol=TOLERANCE_ABSOLUTE_TESTS
475 )
477 def test_domain_range_scale_lightness_Fairchild2010(self) -> None:
478 """
479 Test :func:`colour.colorimetry.lightness.lightness_Fairchild2010`
480 definition domain and range scale support.
481 """
483 L_hdr = lightness_Fairchild2010(12.19722535 / 100)
485 d_r = (("reference", 1, 1), ("1", 1, 0.01), ("100", 100, 1))
486 for scale, factor_a, factor_b in d_r:
487 with domain_range_scale(scale):
488 np.testing.assert_allclose(
489 lightness_Fairchild2010(12.19722535 / 100 * factor_a),
490 L_hdr * factor_b,
491 atol=TOLERANCE_ABSOLUTE_TESTS,
492 )
494 @ignore_numpy_errors
495 def test_nan_lightness_Fairchild2010(self) -> None:
496 """
497 Test :func:`colour.colorimetry.lightness.lightness_Fairchild2010`
498 definition nan support.
499 """
501 lightness_Fairchild2010(np.array([-1.0, 0.0, 1.0, -np.inf, np.inf, np.nan]))
504class TestLightnessFairchild2011:
505 """
506 Define :func:`colour.colorimetry.lightness.lightness_Fairchild2011`
507 definition unit tests methods.
508 """
510 def test_lightness_Fairchild2011(self) -> None:
511 """
512 Test :func:`colour.colorimetry.lightness.lightness_Fairchild2011`
513 definition.
514 """
516 np.testing.assert_allclose(
517 lightness_Fairchild2011(12.19722535 / 100),
518 51.852958445912506,
519 atol=TOLERANCE_ABSOLUTE_TESTS,
520 )
522 np.testing.assert_allclose(
523 lightness_Fairchild2011(23.04276781 / 100),
524 65.275207956353853,
525 atol=TOLERANCE_ABSOLUTE_TESTS,
526 )
528 np.testing.assert_allclose(
529 lightness_Fairchild2011(6.15720079 / 100),
530 39.818935510715917,
531 atol=TOLERANCE_ABSOLUTE_TESTS,
532 )
534 np.testing.assert_allclose(
535 lightness_Fairchild2011(12.19722535 / 100, 2.75),
536 0.13268968410139345,
537 atol=TOLERANCE_ABSOLUTE_TESTS,
538 )
540 np.testing.assert_allclose(
541 lightness_Fairchild2011(1008),
542 234.72925682,
543 atol=TOLERANCE_ABSOLUTE_TESTS,
544 )
546 np.testing.assert_allclose(
547 lightness_Fairchild2011(100800),
548 245.5705978,
549 atol=TOLERANCE_ABSOLUTE_TESTS,
550 )
552 def test_n_dimensional_lightness_Fairchild2011(self) -> None:
553 """
554 Test :func:`colour.colorimetry.lightness.lightness_Fairchild2011`
555 definition n-dimensional arrays support.
556 """
558 Y = 12.19722535 / 100
559 L_hdr = lightness_Fairchild2011(Y)
561 Y = np.tile(Y, 6)
562 L_hdr = np.tile(L_hdr, 6)
563 np.testing.assert_allclose(
564 lightness_Fairchild2011(Y), L_hdr, atol=TOLERANCE_ABSOLUTE_TESTS
565 )
567 Y = np.reshape(Y, (2, 3))
568 L_hdr = np.reshape(L_hdr, (2, 3))
569 np.testing.assert_allclose(
570 lightness_Fairchild2011(Y), L_hdr, atol=TOLERANCE_ABSOLUTE_TESTS
571 )
573 Y = np.reshape(Y, (2, 3, 1))
574 L_hdr = np.reshape(L_hdr, (2, 3, 1))
575 np.testing.assert_allclose(
576 lightness_Fairchild2011(Y), L_hdr, atol=TOLERANCE_ABSOLUTE_TESTS
577 )
579 def test_domain_range_scale_lightness_Fairchild2011(self) -> None:
580 """
581 Test :func:`colour.colorimetry.lightness.lightness_Fairchild2011`
582 definition domain and range scale support.
583 """
585 L_hdr = lightness_Fairchild2011(12.19722535 / 100)
587 d_r = (("reference", 1, 1), ("1", 1, 0.01), ("100", 100, 1))
588 for scale, factor_a, factor_b in d_r:
589 with domain_range_scale(scale):
590 np.testing.assert_allclose(
591 lightness_Fairchild2011(12.19722535 / 100 * factor_a),
592 L_hdr * factor_b,
593 atol=TOLERANCE_ABSOLUTE_TESTS,
594 )
596 @ignore_numpy_errors
597 def test_nan_lightness_Fairchild2011(self) -> None:
598 """
599 Test :func:`colour.colorimetry.lightness.lightness_Fairchild2011`
600 definition nan support.
601 """
603 lightness_Fairchild2011(np.array([-1.0, 0.0, 1.0, -np.inf, np.inf, np.nan]))
606class TestLightnessAbebe2017:
607 """
608 Define :func:`colour.colorimetry.lightness.lightness_Abebe2017`
609 definition unit tests methods.
610 """
612 def test_lightness_Abebe2017(self) -> None:
613 """
614 Test :func:`colour.colorimetry.lightness.lightness_Abebe2017`
615 definition.
616 """
618 np.testing.assert_allclose(
619 lightness_Abebe2017(12.19722535),
620 0.486955571109229,
621 atol=TOLERANCE_ABSOLUTE_TESTS,
622 )
624 np.testing.assert_allclose(
625 lightness_Abebe2017(12.19722535, method="Stevens"),
626 0.474544792145434,
627 atol=TOLERANCE_ABSOLUTE_TESTS,
628 )
630 np.testing.assert_allclose(
631 lightness_Abebe2017(12.19722535, 1000),
632 0.286847428534793,
633 atol=TOLERANCE_ABSOLUTE_TESTS,
634 )
636 np.testing.assert_allclose(
637 lightness_Abebe2017(12.19722535, 4000),
638 0.192145492588158,
639 atol=TOLERANCE_ABSOLUTE_TESTS,
640 )
642 np.testing.assert_allclose(
643 lightness_Abebe2017(12.19722535, 4000, method="Stevens"),
644 0.170365211220992,
645 atol=TOLERANCE_ABSOLUTE_TESTS,
646 )
648 def test_n_dimensional_lightness_Abebe2017(self) -> None:
649 """
650 Test :func:`colour.colorimetry.lightness.lightness_Abebe2017`
651 definition n-dimensional arrays support.
652 """
654 Y = 12.19722535
655 L = lightness_Abebe2017(Y)
657 Y = np.tile(Y, 6)
658 L = np.tile(L, 6)
659 np.testing.assert_allclose(
660 lightness_Abebe2017(Y), L, atol=TOLERANCE_ABSOLUTE_TESTS
661 )
663 Y = np.reshape(Y, (2, 3))
664 L = np.reshape(L, (2, 3))
665 np.testing.assert_allclose(
666 lightness_Abebe2017(Y), L, atol=TOLERANCE_ABSOLUTE_TESTS
667 )
669 Y = np.reshape(Y, (2, 3, 1))
670 L = np.reshape(L, (2, 3, 1))
671 np.testing.assert_allclose(
672 lightness_Abebe2017(Y), L, atol=TOLERANCE_ABSOLUTE_TESTS
673 )
675 @ignore_numpy_errors
676 def test_nan_lightness_Abebe2017(self) -> None:
677 """
678 Test :func:`colour.colorimetry.lightness.lightness_Abebe2017`
679 definition nan support.
680 """
682 cases = np.array([-1.0, 0.0, 1.0, -np.inf, np.inf, np.nan])
683 lightness_Abebe2017(cases, cases)
686class TestLightness:
687 """
688 Define :func:`colour.colorimetry.lightness.lightness` definition unit
689 tests methods.
690 """
692 def test_domain_range_scale_lightness(self) -> None:
693 """
694 Test :func:`colour.colorimetry.lightness.lightness` definition domain
695 and range scale support.
696 """
698 m = (
699 "Glasser 1958",
700 "Wyszecki 1963",
701 "CIE 1976",
702 "Fairchild 2010",
703 "Fairchild 2011",
704 "Abebe 2017",
705 )
706 v = [lightness(12.19722535, method, Y_n=100) for method in m]
708 d_r = (("reference", 1), ("1", 0.01), ("100", 1))
709 for method, value in zip(m, v, strict=True):
710 for scale, factor in d_r:
711 with domain_range_scale(scale):
712 np.testing.assert_allclose(
713 lightness(12.19722535 * factor, method, Y_n=100 * factor),
714 value * factor,
715 atol=TOLERANCE_ABSOLUTE_TESTS,
716 )