Beispiel #1
0
    def test_rgb(self):
        self.assertEqualColor('rgb(1,2,3)', rgb(1, 2, 3))
        self.assertEqualColor('rgb(1, 2, 3)', rgb(1, 2, 3))
        self.assertEqualColor('rgb( 1 , 2 , 3)', rgb(1, 2, 3))

        self.assertEqualColor('#123', rgb(0x11, 0x22, 0x33))
        self.assertEqualColor('#112233', rgb(0x11, 0x22, 0x33))
        self.assertEqualColor('#abc', rgb(0xaa, 0xbb, 0xcc))
        self.assertEqualColor('#ABC', rgb(0xaa, 0xbb, 0xcc))
        self.assertEqualColor('#abcdef', rgb(0xab, 0xcd, 0xef))
        self.assertEqualColor('#ABCDEF', rgb(0xab, 0xcd, 0xef))

        with self.assertRaises(ValueError):
            color('rgb(10, 20)')

        with self.assertRaises(ValueError):
            color('rgb(a, 10, 20)')

        with self.assertRaises(ValueError):
            color('rgb(10, b, 20)')

        with self.assertRaises(ValueError):
            color('rgb(10, 20, c)')

        with self.assertRaises(ValueError):
            color('rgb(10, 20, 30, 0.5)')
Beispiel #2
0
    def test_named_color(self):
        self.assertEqualColor('Red', rgb(0xFF, 0, 0))
        self.assertEqualColor('RED', rgb(0xFF, 0, 0))
        self.assertEqualColor('red', rgb(0xFF, 0, 0))
        self.assertEqualColor('rEd', rgb(0xFF, 0, 0))

        self.assertEqualColor('CornflowerBlue', rgb(0x64, 0x95, 0xED))
        self.assertEqualColor('cornflowerblue', rgb(0x64, 0x95, 0xED))
        self.assertEqualColor('CORNFLOWERBLUE', rgb(0x64, 0x95, 0xED))
        self.assertEqualColor('Cornflowerblue', rgb(0x64, 0x95, 0xED))
        self.assertEqualColor('CoRnFlOwErBlUe', rgb(0x64, 0x95, 0xED))

        with self.assertRaises(ValueError):
            color('not a color')
Beispiel #3
0
 def test_hsl_primaries(self):
     self.assertEqualColor(hsl(0, 1.0, 0.5), rgb(0xff, 0x00, 0x00))
     self.assertEqualColor(hsl(60, 1.0, 0.5), rgb(0xff, 0xff, 0x00))
     self.assertEqualColor(hsl(120, 1.0, 0.5), rgb(0x00, 0xff, 0x00))
     self.assertEqualColor(hsl(180, 1.0, 0.5), rgb(0x00, 0xff, 0xff))
     self.assertEqualColor(hsl(240, 1.0, 0.5), rgb(0x00, 0x00, 0xff))
     self.assertEqualColor(hsl(300, 1.0, 0.5), rgb(0xff, 0x00, 0xff))
     self.assertEqualColor(hsl(360, 1.0, 0.5), rgb(0xff, 0x00, 0x00))
Beispiel #4
0
    def test_multiple_choices(self):
        class MyObject(BaseStyle):
            def __init__(self):
                self.apply = Mock()
        MyObject.validated_property('prop', choices=Choices(
                'a', 'b', None,
                number=True, color=True
            ), initial=None)

        obj = MyObject()

        obj.prop = 10
        self.assert_property(obj, 10.0)

        obj.prop = 3.14159
        self.assert_property(obj, 3.14159)

        obj.prop = REBECCAPURPLE
        self.assert_property(obj, NAMED_COLOR[REBECCAPURPLE])

        obj.prop = '#112233'
        self.assert_property(obj, rgb(0x11, 0x22, 0x33))

        obj.prop = None
        self.assert_property(obj, None)

        obj.prop = 'a'
        self.assert_property(obj, 'a')

        obj.prop = 'none'
        self.assert_property(obj, None)

        obj.prop = 'b'
        self.assert_property(obj, 'b')

        # Check the error message
        try:
            obj.prop = 'invalid'
            self.fail('Should raise ValueError')
        except ValueError as v:
            self.assertEqual(
                str(v),
                "Invalid value 'invalid' for property 'prop'; "
                "Valid values are: a, b, none, <number>, <color>"
            )
Beispiel #5
0
    def test_allow_color(self):
        class MyObject(BaseStyle):
            def __init__(self):
                self.apply = Mock()
        MyObject.validated_property('prop', choices=Choices(color=True), initial='goldenrod')

        obj = MyObject()
        self.assertEqual(obj.prop, NAMED_COLOR[GOLDENROD])

        with self.assertRaises(ValueError):
            obj.prop = 10

        with self.assertRaises(ValueError):
            obj.prop = 3.14159

        obj.prop = REBECCAPURPLE
        self.assert_property(obj, NAMED_COLOR[REBECCAPURPLE])

        obj.prop = '#112233'
        self.assert_property(obj, rgb(0x11, 0x22, 0x33))

        with self.assertRaises(ValueError):
            obj.prop = 'a'

        with self.assertRaises(ValueError):
            obj.prop = 'b'

        with self.assertRaises(ValueError):
            obj.prop = None

        with self.assertRaises(ValueError):
            obj.prop = 'none'

        # Check the error message
        try:
            obj.prop = 'invalid'
            self.fail('Should raise ValueError')
        except ValueError as v:
            self.assertEqual(
                str(v),
                "Invalid value 'invalid' for property 'prop'; Valid values are: <color>"
            )
Beispiel #6
0
    def test_hsl_muted(self):
        self.assertEqualColor(hsl(0, 0.25, 0.25), rgb(0x50, 0x30, 0x30))
        self.assertEqualColor(hsl(60, 0.25, 0.25), rgb(0x50, 0x50, 0x30))
        self.assertEqualColor(hsl(120, 0.25, 0.25), rgb(0x30, 0x50, 0x30))
        self.assertEqualColor(hsl(180, 0.25, 0.25), rgb(0x30, 0x50, 0x50))
        self.assertEqualColor(hsl(240, 0.25, 0.25), rgb(0x30, 0x30, 0x50))
        self.assertEqualColor(hsl(300, 0.25, 0.25), rgb(0x50, 0x30, 0x50))
        self.assertEqualColor(hsl(360, 0.25, 0.25), rgb(0x50, 0x30, 0x30))

        self.assertEqualColor(hsl(0, 0.25, 0.75), rgb(0xcf, 0xaf, 0xaf))
        self.assertEqualColor(hsl(60, 0.25, 0.75), rgb(0xcf, 0xcf, 0xaf))
        self.assertEqualColor(hsl(120, 0.25, 0.75), rgb(0xaf, 0xcf, 0xaf))
        self.assertEqualColor(hsl(180, 0.25, 0.75), rgb(0xaf, 0xcf, 0xcf))
        self.assertEqualColor(hsl(240, 0.25, 0.75), rgb(0xaf, 0xaf, 0xcf))
        self.assertEqualColor(hsl(300, 0.25, 0.75), rgb(0xcf, 0xaf, 0xcf))
        self.assertEqualColor(hsl(360, 0.25, 0.75), rgb(0xcf, 0xaf, 0xaf))

        self.assertEqualColor(hsl(0, 0.75, 0.75), rgb(0xef, 0x8f, 0x8f))
        self.assertEqualColor(hsl(60, 0.75, 0.75), rgb(0xef, 0xef, 0x8f))
        self.assertEqualColor(hsl(120, 0.75, 0.75), rgb(0x8f, 0xef, 0x8f))
        self.assertEqualColor(hsl(180, 0.75, 0.75), rgb(0x8f, 0xef, 0xef))
        self.assertEqualColor(hsl(240, 0.75, 0.75), rgb(0x8f, 0x8f, 0xef))
        self.assertEqualColor(hsl(300, 0.75, 0.75), rgb(0xef, 0x8f, 0xef))
        self.assertEqualColor(hsl(360, 0.75, 0.75), rgb(0xef, 0x8f, 0x8f))

        self.assertEqualColor(hsl(0, 0.75, 0.25), rgb(0x70, 0x10, 0x10))
        self.assertEqualColor(hsl(60, 0.75, 0.25), rgb(0x70, 0x70, 0x10))
        self.assertEqualColor(hsl(120, 0.75, 0.25), rgb(0x10, 0x70, 0x10))
        self.assertEqualColor(hsl(180, 0.75, 0.25), rgb(0x10, 0x70, 0x70))
        self.assertEqualColor(hsl(240, 0.75, 0.25), rgb(0x10, 0x10, 0x70))
        self.assertEqualColor(hsl(300, 0.75, 0.25), rgb(0x70, 0x10, 0x70))
        self.assertEqualColor(hsl(360, 0.75, 0.25), rgb(0x70, 0x10, 0x10))
Beispiel #7
0
 def test_hsl_grays(self):
     self.assertEqualColor(hsl(0, 0.0, 0.2), rgb(0x33, 0x33, 0x33))
     self.assertEqualColor(hsl(0, 0.0, 0.4), rgb(0x66, 0x66, 0x66))
     self.assertEqualColor(hsl(0, 0.0, 0.5), rgb(0x80, 0x80, 0x80))
     self.assertEqualColor(hsl(0, 0.0, 0.6), rgb(0x99, 0x99, 0x99))
     self.assertEqualColor(hsl(0, 0.0, 0.8), rgb(0xcc, 0xcc, 0xcc))
Beispiel #8
0
 def test_hsl_whites(self):
     self.assertEqualColor(hsl(0, 0.0, 1.0), rgb(0xff, 0xff, 0xff))
     self.assertEqualColor(hsl(60, 0.0, 1.0), rgb(0xff, 0xff, 0xff))
     self.assertEqualColor(hsl(180, 0.0, 1.0), rgb(0xff, 0xff, 0xff))
     self.assertEqualColor(hsl(240, 0.0, 1.0), rgb(0xff, 0xff, 0xff))
     self.assertEqualColor(hsl(360, 0.0, 1.0), rgb(0xff, 0xff, 0xff))
Beispiel #9
0
 def test_hsl_blacks(self):
     self.assertEqualColor(hsl(0, 0.0, 0.0), rgb(0x00, 0x00, 0x00))
     self.assertEqualColor(hsl(60, 0.0, 0.0), rgb(0x00, 0x00, 0x00))
     self.assertEqualColor(hsl(180, 0.0, 0.0), rgb(0x00, 0x00, 0x00))
     self.assertEqualColor(hsl(240, 0.0, 0.0), rgb(0x00, 0x00, 0x00))
     self.assertEqualColor(hsl(360, 0.0, 0.0), rgb(0x00, 0x00, 0x00))
Beispiel #10
0
 def test_rgba_hash(self):
     self.assertEqual(hash(rgba(10, 20, 30, 0.5)),
                      hash(rgba(10, 20, 30, 0.5)))
     self.assertEqual(hash(rgba(10, 20, 30, 1.0)), hash(rgb(10, 20, 30)))
     self.assertNotEqual(hash(rgb(10, 20, 30)), hash(rgb(30, 20, 10)))
Beispiel #11
0
 def test_rgb_repr(self):
     self.assertEqual(repr(rgb(10, 20, 30)), "rgb(10, 20, 30)")
Beispiel #12
0
 def get(self, x, y):
     return rgb(self._impl.get(x, y))