github.com/grumpyhome/grumpy@v0.3.1-0.20201208125205-7b775405bdf1/grumpy-runtime-src/third_party/stdlib/test/test_colorsys.py (about) 1 import unittest 2 import colorsys 3 from test import test_support 4 5 def frange(start, stop, step): 6 while start <= stop: 7 yield start 8 start += step 9 10 class ColorsysTest(unittest.TestCase): 11 12 def assertTripleEqual(self, tr1, tr2): 13 self.assertEqual(len(tr1), 3) 14 self.assertEqual(len(tr2), 3) 15 self.assertAlmostEqual(tr1[0], tr2[0]) 16 self.assertAlmostEqual(tr1[1], tr2[1]) 17 self.assertAlmostEqual(tr1[2], tr2[2]) 18 19 def test_hsv_roundtrip(self): 20 for r in frange(0.0, 1.0, 0.2): 21 for g in frange(0.0, 1.0, 0.2): 22 for b in frange(0.0, 1.0, 0.2): 23 rgb = (r, g, b) 24 self.assertTripleEqual( 25 rgb, 26 colorsys.hsv_to_rgb(*colorsys.rgb_to_hsv(*rgb)) 27 ) 28 29 def test_hsv_values(self): 30 values = [ 31 # rgb, hsv 32 ((0.0, 0.0, 0.0), ( 0 , 0.0, 0.0)), # black 33 ((0.0, 0.0, 1.0), (4./6., 1.0, 1.0)), # blue 34 ((0.0, 1.0, 0.0), (2./6., 1.0, 1.0)), # green 35 ((0.0, 1.0, 1.0), (3./6., 1.0, 1.0)), # cyan 36 ((1.0, 0.0, 0.0), ( 0 , 1.0, 1.0)), # red 37 ((1.0, 0.0, 1.0), (5./6., 1.0, 1.0)), # purple 38 ((1.0, 1.0, 0.0), (1./6., 1.0, 1.0)), # yellow 39 ((1.0, 1.0, 1.0), ( 0 , 0.0, 1.0)), # white 40 ((0.5, 0.5, 0.5), ( 0 , 0.0, 0.5)), # grey 41 ] 42 for (rgb, hsv) in values: 43 self.assertTripleEqual(hsv, colorsys.rgb_to_hsv(*rgb)) 44 self.assertTripleEqual(rgb, colorsys.hsv_to_rgb(*hsv)) 45 46 def test_hls_roundtrip(self): 47 for r in frange(0.0, 1.0, 0.2): 48 for g in frange(0.0, 1.0, 0.2): 49 for b in frange(0.0, 1.0, 0.2): 50 rgb = (r, g, b) 51 self.assertTripleEqual( 52 rgb, 53 colorsys.hls_to_rgb(*colorsys.rgb_to_hls(*rgb)) 54 ) 55 56 def test_hls_values(self): 57 values = [ 58 # rgb, hls 59 ((0.0, 0.0, 0.0), ( 0 , 0.0, 0.0)), # black 60 ((0.0, 0.0, 1.0), (4./6., 0.5, 1.0)), # blue 61 ((0.0, 1.0, 0.0), (2./6., 0.5, 1.0)), # green 62 ((0.0, 1.0, 1.0), (3./6., 0.5, 1.0)), # cyan 63 ((1.0, 0.0, 0.0), ( 0 , 0.5, 1.0)), # red 64 ((1.0, 0.0, 1.0), (5./6., 0.5, 1.0)), # purple 65 ((1.0, 1.0, 0.0), (1./6., 0.5, 1.0)), # yellow 66 ((1.0, 1.0, 1.0), ( 0 , 1.0, 0.0)), # white 67 ((0.5, 0.5, 0.5), ( 0 , 0.5, 0.0)), # grey 68 ] 69 for (rgb, hls) in values: 70 self.assertTripleEqual(hls, colorsys.rgb_to_hls(*rgb)) 71 self.assertTripleEqual(rgb, colorsys.hls_to_rgb(*hls)) 72 73 def test_yiq_roundtrip(self): 74 for r in frange(0.0, 1.0, 0.2): 75 for g in frange(0.0, 1.0, 0.2): 76 for b in frange(0.0, 1.0, 0.2): 77 rgb = (r, g, b) 78 self.assertTripleEqual( 79 rgb, 80 colorsys.yiq_to_rgb(*colorsys.rgb_to_yiq(*rgb)) 81 ) 82 83 def test_yiq_values(self): 84 values = [ 85 # rgb, yiq 86 ((0.0, 0.0, 0.0), (0.0, 0.0, 0.0)), # black 87 ((0.0, 0.0, 1.0), (0.11, -0.3217, 0.3121)), # blue 88 ((0.0, 1.0, 0.0), (0.59, -0.2773, -0.5251)), # green 89 ((0.0, 1.0, 1.0), (0.7, -0.599, -0.213)), # cyan 90 ((1.0, 0.0, 0.0), (0.3, 0.599, 0.213)), # red 91 ((1.0, 0.0, 1.0), (0.41, 0.2773, 0.5251)), # purple 92 ((1.0, 1.0, 0.0), (0.89, 0.3217, -0.3121)), # yellow 93 ((1.0, 1.0, 1.0), (1.0, 0.0, 0.0)), # white 94 ((0.5, 0.5, 0.5), (0.5, 0.0, 0.0)), # grey 95 ] 96 for (rgb, yiq) in values: 97 self.assertTripleEqual(yiq, colorsys.rgb_to_yiq(*rgb)) 98 self.assertTripleEqual(rgb, colorsys.yiq_to_rgb(*yiq)) 99 100 def test_main(): 101 test_support.run_unittest(ColorsysTest) 102 103 if __name__ == "__main__": 104 test_main()