diff options
author | Walter Dörwald <walter@livinglogic.de> | 2004-04-28 17:07:50 (GMT) |
---|---|---|
committer | Walter Dörwald <walter@livinglogic.de> | 2004-04-28 17:07:50 (GMT) |
commit | c60c2036706416b7e2c475598ccda379e31eb286 (patch) | |
tree | 92fe7d29e90cd450442881ef95659e32d1a7e28e | |
parent | ceeb1918a1e6024cdbde4bd2776f12ba6c940942 (diff) | |
download | cpython-c60c2036706416b7e2c475598ccda379e31eb286.zip cpython-c60c2036706416b7e2c475598ccda379e31eb286.tar.gz cpython-c60c2036706416b7e2c475598ccda379e31eb286.tar.bz2 |
Add a test script for the colorsys module.
-rw-r--r-- | Lib/test/test_colorsys.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/Lib/test/test_colorsys.py b/Lib/test/test_colorsys.py new file mode 100644 index 0000000..1ef7b0c --- /dev/null +++ b/Lib/test/test_colorsys.py @@ -0,0 +1,76 @@ +import unittest, test.test_support +import colorsys + +def frange(start, stop, step): + while start <= stop: + yield start + start += stop + +class ColorsysTest(unittest.TestCase): + + def assertTripleEqual(self, tr1, tr2): + self.assertEqual(len(tr1), 3) + self.assertEqual(len(tr2), 3) + self.assertAlmostEqual(tr1[0], tr2[0]) + self.assertAlmostEqual(tr1[1], tr2[1]) + self.assertAlmostEqual(tr1[2], tr2[2]) + + def test_hsv_roundtrip(self): + for r in frange(0.0, 1.0, 0.2): + for g in frange(0.0, 1.0, 0.2): + for b in frange(0.0, 1.0, 0.2): + rgb = (r, g, b) + self.assertTripleEqual( + rgb, + colorsys.hsv_to_rgb(*colorsys.rgb_to_hsv(*rgb)) + ) + + def test_hsv_values(self): + values = [ + # rgb, hsv + ((0.0, 0.0, 0.0), ( 0 , 0.0, 0.0)), # black + ((0.0, 0.0, 1.0), (4./6., 1.0, 1.0)), # blue + ((0.0, 1.0, 0.0), (2./6., 1.0, 1.0)), # green + ((0.0, 1.0, 1.0), (3./6., 1.0, 1.0)), # cyan + ((1.0, 0.0, 0.0), ( 0 , 1.0, 1.0)), # red + ((1.0, 0.0, 1.0), (5./6., 1.0, 1.0)), # purple + ((1.0, 1.0, 0.0), (1./6., 1.0, 1.0)), # yellow + ((1.0, 1.0, 1.0), ( 0 , 0.0, 1.0)), # white + ((0.5, 0.5, 0.5), ( 0 , 0.0, 0.5)), # grey + ] + for (rgb, hsv) in values: + self.assertTripleEqual(hsv, colorsys.rgb_to_hsv(*rgb)) + self.assertTripleEqual(rgb, colorsys.hsv_to_rgb(*hsv)) + + 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): + for b in frange(0.0, 1.0, 0.2): + rgb = (r, g, b) + self.assertTripleEqual( + rgb, + colorsys.hls_to_rgb(*colorsys.rgb_to_hls(*rgb)) + ) + + def test_hls_values(self): + values = [ + # rgb, hls + ((0.0, 0.0, 0.0), ( 0 , 0.0, 0.0)), # black + ((0.0, 0.0, 1.0), (4./6., 0.5, 1.0)), # blue + ((0.0, 1.0, 0.0), (2./6., 0.5, 1.0)), # green + ((0.0, 1.0, 1.0), (3./6., 0.5, 1.0)), # cyan + ((1.0, 0.0, 0.0), ( 0 , 0.5, 1.0)), # red + ((1.0, 0.0, 1.0), (5./6., 0.5, 1.0)), # purple + ((1.0, 1.0, 0.0), (1./6., 0.5, 1.0)), # yellow + ((1.0, 1.0, 1.0), ( 0 , 1.0, 0.0)), # white + ((0.5, 0.5, 0.5), ( 0 , 0.5, 0.0)), # grey + ] + for (rgb, hls) in values: + self.assertTripleEqual(hls, colorsys.rgb_to_hls(*rgb)) + self.assertTripleEqual(rgb, colorsys.hls_to_rgb(*hls)) + +def test_main(): + test.test_support.run_unittest(ColorsysTest) + +if __name__ == "__main__": + test_main() |