]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Improve colorsys coverage (#153982)
authorMonadChains <monadchains@gmail.com>
Sun, 19 Jul 2026 09:48:02 +0000 (11:48 +0200)
committerGitHub <noreply@github.com>
Sun, 19 Jul 2026 09:48:02 +0000 (11:48 +0200)
* improve colorsys coverage

* add subtest

Lib/test/test_colorsys.py

index 74d76294b0b4d467e9a4cdd44cb6d208d2d78235..9dfaef44a6a45083a273b443f4bce119f7b47f04 100644 (file)
@@ -42,6 +42,10 @@ class ColorsysTest(unittest.TestCase):
             self.assertTripleEqual(hsv, colorsys.rgb_to_hsv(*rgb))
             self.assertTripleEqual(rgb, colorsys.hsv_to_rgb(*hsv))
 
+            # test 360 phase shift in hue
+            h, s, v = hsv
+            self.assertTripleEqual(rgb, colorsys.hsv_to_rgb(h + 1.0, s, v))
+
     def test_hls_roundtrip(self):
         for r in frange(0.0, 1.0, 0.2):
             for g in frange(0.0, 1.0, 0.2):
@@ -89,6 +93,18 @@ class ColorsysTest(unittest.TestCase):
                         colorsys.yiq_to_rgb(*colorsys.rgb_to_yiq(*rgb))
                     )
 
+    def test_yiq_to_rgb_clamping(self):
+        values = [
+            # rgb, yiq (invalid YIQ values clamped to RGB range)
+            ((1.0, 0.0, 1.0), (0.0, 0.5, 1.0)),
+            ((0.0, 1.0, 0.0), (0.25, -1.0, -1.0)),
+            ((0.0, 0.0, 1.0), (0.0, -1.0, 0.5))
+        ]
+
+        for (rgb, yiq) in values:
+            with self.subTest(rgb=rgb, yiq=yiq):
+                self.assertTripleEqual(rgb, colorsys.yiq_to_rgb(*yiq))
+
     def test_yiq_values(self):
         values = [
             # rgb, yiq