blob: fc8775d4c2638796342364c54d302e4605b49906 [file] [log] [blame]
#!/usr/bin/env python3
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from style_variable_generator.color import Color
import unittest
class ColorTest(unittest.TestCase):
def testHexColors(self):
c = Color('#0102ff')
self.assertEqual(c.r, 1)
self.assertEqual(c.g, 2)
self.assertEqual(c.b, 255)
self.assertEqual(c.opacity.a, 1)
def testRGBColors(self):
c = Color('rgb(100, 200, 123)')
self.assertEqual(c.r, 100)
self.assertEqual(c.g, 200)
self.assertEqual(c.b, 123)
self.assertEqual(c.opacity.a, 1)
c = Color('rgb($some_color_rgb)')
self.assertEqual(c.rgb_var, 'some_color_rgb')
self.assertEqual(c.opacity.a, 1)
def testRGBAColors(self):
c = Color('rgba(100, 200, 123, 0.5)')
self.assertEqual(c.r, 100)
self.assertEqual(c.g, 200)
self.assertEqual(c.b, 123)
self.assertEqual(c.opacity.a, 0.5)
c = Color('rgba($some_color_400_rgb, 0.1)')
self.assertEqual(c.rgb_var, 'some_color_400_rgb')
self.assertEqual(c.opacity.a, 0.1)
def testReferenceColor(self):
c = Color('$some_color')
self.assertEqual(c.var, 'some_color')
def testWhiteBlackColor(self):
c = Color('$white')
self.assertEqual((c.r, c.g, c.b, c.opacity.a), (255, 255, 255, 1))
c = Color('rgba($white_rgb, 0.5)')
self.assertEqual((c.r, c.g, c.b, c.opacity.a), (255, 255, 255, 0.5))
c = Color('$black')
self.assertEqual((c.r, c.g, c.b, c.opacity.a), (0, 0, 0, 1))
c = Color('rgba($black_rgb, 0.5)')
self.assertEqual((c.r, c.g, c.b, c.opacity.a), (0, 0, 0, 0.5))
def testMalformedColors(self):
with self.assertRaises(ValueError):
# #RRGGBBAA not supported.
Color('#11223311')
with self.assertRaises(ValueError):
# #RGB not supported.
Color('#fff')
with self.assertRaises(ValueError):
Color('rgb($non_rgb_var)')
with self.assertRaises(ValueError):
Color('rgba($non_rgb_var, 0.4)')
with self.assertRaises(ValueError):
# Invalid alpha.
Color('rgba(1, 2, 4, 2.5)')
with self.assertRaises(ValueError):
# Invalid alpha.
Color('rgba($non_rgb_var, -1)')
with self.assertRaises(ValueError):
# Invalid rgb values.
Color('rgb(-1, 5, 5)')
with self.assertRaises(ValueError):
# Invalid rgb values.
Color('rgb(0, 256, 5)')
with self.assertRaises(ValueError):
# Color reference points to rgb reference.
Color('$some_color_rgb')
with self.assertRaises(ValueError):
# Variable reference with accidental space.
print(Color('$some_color_rgb '))
with self.assertRaises(ValueError):
# Variable reference with accidental space.
Color('rgba($non_ rgb_var, 0.4)')
if __name__ == '__main__':
unittest.main()