1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
"""
Unit test for Color parameters.
"""
import re
import unittest
from .utils import check_defaults
import param
import pytest
class TestColorParameters(unittest.TestCase):
def _check_defaults(self, p):
assert p.default is None
assert p.allow_None is True
assert p.allow_named is True
def test_defaults_class(self):
class A(param.Parameterized):
c = param.Color()
check_defaults(A.param.c, label='C')
self._check_defaults(A.param.c)
def test_defaults_inst(self):
class A(param.Parameterized):
c = param.Color()
a = A()
check_defaults(a.param.c, label='C')
self._check_defaults(a.param.c)
def test_defaults_unbound(self):
c = param.Color()
check_defaults(c, label=None)
self._check_defaults(c)
def test_wrong_type(self):
with pytest.raises(
ValueError,
match=re.escape("Color parameter 'q' expects a string value, not an object of <class 'int'>.")
):
q = param.Color(1) # noqa
def test_initialization_invalid_string(self):
with pytest.raises(
ValueError,
match=re.escape("Color parameter 'q' only accepts valid RGB hex codes, received 'red'."),
):
class Q(param.Parameterized):
q = param.Color('red', allow_named=False)
def test_set_invalid_string(self):
class Q(param.Parameterized):
q = param.Color(allow_named=False)
with pytest.raises(
ValueError,
match=re.escape("Color parameter 'Q.q' only accepts valid RGB hex codes, received 'red'."),
):
Q.q = 'red'
def test_set_invalid_named_color(self):
class Q(param.Parameterized):
q = param.Color(allow_named=True)
with pytest.raises(
ValueError,
match=re.escape("Color parameter 'Q.q' only takes RGB hex codes or named colors, received 'razzmatazz'."),
):
Q.q = 'razzmatazz'
def test_invalid_long_hex(self):
class Q(param.Parameterized):
q = param.Color()
with pytest.raises(
ValueError,
match=re.escape("Color parameter 'Q.q' only takes RGB hex codes or named colors, received '#gfffff'.")
):
Q.q = '#gfffff'
def test_valid_long_hex(self):
class Q(param.Parameterized):
q = param.Color()
Q.q = '#ffffff'
self.assertEqual(Q.q, '#ffffff')
def test_valid_short_hex(self):
class Q(param.Parameterized):
q = param.Color()
Q.q = '#fff'
self.assertEqual(Q.q, '#fff')
def test_valid_named_color(self):
class Q(param.Parameterized):
q = param.Color(allow_named=True)
Q.q = 'indianred'
self.assertEqual(Q.q, 'indianred')
def test_valid_named_color_mixed_case(self):
class Q(param.Parameterized):
q = param.Color(allow_named=True)
Q.q = 'WhiteSmoke'
self.assertEqual(Q.q, 'WhiteSmoke')
|