gimp/libgimp/tests/test-color-parser.py

148 lines
3.5 KiB
Python

#!/usr/bin/env python3
EPSILON=1e-6
def DBL(c):
return c / 255.0
samples = [
{ 'str': "#000000",
'fail': False,
'red': 0.0,
'green': 0.0,
'blue': 0.0,
'alpha': 1.0 },
{ 'str': "#FFff00",
'fail': False,
'red': 1.0,
'green': 1.0,
'blue': 0.0,
'alpha': 1.0 },
{ 'str': "#6495ed",
'fail': False,
'red': DBL(100),
'green': DBL(149),
'blue': DBL(237),
'alpha': 1.0 },
{ 'str': "#fff",
'fail': False,
'red': 1.0,
'green': 1.0,
'blue': 1.0,
'alpha': 1.0 },
#{ 'str': "#64649595eded",
#'fail': False,
#'red': 1.0,
#'green': 1.0,
#'blue': 0.0,
#'alpha': 1.0 },
{ 'str': "rgb(0,0,0)",
'fail': False,
'red': 0.0,
'green': 0.0,
'blue': 0.0,
'alpha': 1.0 },
{ 'str': "rgb(100,149,237)",
'fail': False,
'red': DBL(100),
'green': DBL(149),
'blue': DBL(237),
'alpha': 1.0 },
{ 'str': "rgba(100%,0,100%,0.5)",
'fail': False,
'red': 1.0,
'green': 0.0,
'blue': 1.0,
'alpha': 0.5 },
{ 'str': "rgb(100%,149,20%)",
'fail': False,
'red': 1.0,
'green': DBL(149),
'blue': 0.2,
'alpha': 1.0 },
{ 'str': "rgb(foobar)",
'fail': True,
'red': 0.0,
'green': 0.0,
'blue': 0.0,
'alpha': 1.0 },
{ 'str': "rgb(100,149,237",
'fail': True,
'red': 0.0,
'green': 0.0,
'blue': 0.0,
'alpha': 1.0 },
{ 'str': "rED",
'fail': False,
'red': 1.0,
'green': 0.0,
'blue': 0.0,
'alpha': 1.0 },
{ 'str': "cornflowerblue",
'fail': False,
'red': DBL(100),
'green': DBL(149),
'blue': DBL(237),
'alpha': 1.0 },
{ 'str': " red",
'fail': False,
'red': 1.0,
'green': 0.0,
'blue': 0.0,
'alpha': 1.0 },
{ 'str': "red ",
'fail': False,
'red': 1.0,
'green': 0.0,
'blue': 0.0,
'alpha': 1.0 },
{ 'str': "red",
'fail': False,
'red': 1.0,
'green': 0.0,
'blue': 0.0,
'alpha': 1.0 },
{ 'str': "red blue",
'fail': True,
'red': 0.0,
'green': 0.0,
'blue': 0.0,
'alpha': 0.0 },
{ 'str': "transparent",
'fail': False,
'red': 0.0,
'green': 0.0,
'blue': 0.0,
'alpha': 0.0 },
{ 'str': "23foobar",
'fail': True,
'red': 0.0,
'green': 0.0,
'blue': 0.0,
'alpha': 0.0 },
{ 'str': "",
'fail': True,
'red': 0.0,
'green': 0.0,
'blue': 0.0,
'alpha': 0.0 }
]
for sample in samples:
color = Gimp.color_parse_css(sample['str'])
print(color)
if sample['fail']:
gimp_assert('Parsing "{}" should fail.'.format(sample['str']), color is None)
else:
gimp_assert('Parsing "{}" should generate a color.'.format(sample['str']), color is not None)
r, g, b, a = color.get_rgba_with_space(Babl.format("R'G'B'A double"))
gimp_assert('"{}" generated ({}, {}, {}, {}) - expected ({}, {}, {}, {}).'.format(sample['str'],
r, g, b, a,
sample['red'],
sample['green'],
sample['blue'],
sample['alpha']),
abs(r - sample['red']) < EPSILON and abs(g - sample['green']) < EPSILON and
abs(b - sample['blue']) < EPSILON and abs(a - sample['alpha']) < EPSILON)