From 733b9a547662805106e7e38be2f13646230b4b1f Mon Sep 17 00:00:00 2001 From: monadchains Date: Sat, 18 Jul 2026 16:31:27 +0200 Subject: [PATCH 1/2] improve colorsys coverage --- Lib/test/test_colorsys.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Lib/test/test_colorsys.py b/Lib/test/test_colorsys.py index 74d76294b0b4d46..0f9ac6f9669878d 100644 --- a/Lib/test/test_colorsys.py +++ b/Lib/test/test_colorsys.py @@ -42,6 +42,10 @@ def test_hsv_values(self): 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,17 @@ def test_yiq_roundtrip(self): 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: + self.assertTripleEqual(rgb, colorsys.yiq_to_rgb(*yiq)) + def test_yiq_values(self): values = [ # rgb, yiq From 6377d02f000f6b85cf3075dc3230c8b51c4dd9a5 Mon Sep 17 00:00:00 2001 From: monadchains Date: Sun, 19 Jul 2026 09:43:23 +0200 Subject: [PATCH 2/2] add subtest --- Lib/test/test_colorsys.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_colorsys.py b/Lib/test/test_colorsys.py index 0f9ac6f9669878d..9dfaef44a6a4508 100644 --- a/Lib/test/test_colorsys.py +++ b/Lib/test/test_colorsys.py @@ -102,7 +102,8 @@ def test_yiq_to_rgb_clamping(self): ] for (rgb, yiq) in values: - self.assertTripleEqual(rgb, colorsys.yiq_to_rgb(*yiq)) + with self.subTest(rgb=rgb, yiq=yiq): + self.assertTripleEqual(rgb, colorsys.yiq_to_rgb(*yiq)) def test_yiq_values(self): values = [