summaryrefslogtreecommitdiffstats
path: root/share/extensions/tests/test_inkex_colors.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:24:48 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:24:48 +0000
commitcca66b9ec4e494c1d919bff0f71a820d8afab1fa (patch)
tree146f39ded1c938019e1ed42d30923c2ac9e86789 /share/extensions/tests/test_inkex_colors.py
parentInitial commit. (diff)
downloadinkscape-12fc8abae6d434cac7670a59ed3a67301cc2eb10.tar.xz
inkscape-12fc8abae6d434cac7670a59ed3a67301cc2eb10.zip
Adding upstream version 1.2.2.upstream/1.2.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'share/extensions/tests/test_inkex_colors.py')
-rw-r--r--share/extensions/tests/test_inkex_colors.py187
1 files changed, 187 insertions, 0 deletions
diff --git a/share/extensions/tests/test_inkex_colors.py b/share/extensions/tests/test_inkex_colors.py
new file mode 100644
index 0000000..845b72e
--- /dev/null
+++ b/share/extensions/tests/test_inkex_colors.py
@@ -0,0 +1,187 @@
+# coding=utf-8
+
+from inkex.colors import Color, ColorError, ColorIdError, is_color
+from inkex.tester import TestCase
+
+
+class ColorTest(TestCase):
+ """Test for single transformations"""
+
+ def test_empty(self):
+ """Empty color (black)"""
+ self.assertEqual(Color(), [])
+ self.assertEqual(Color().to_rgb(), [0, 0, 0])
+ self.assertEqual(Color().to_rgba(), [0, 0, 0, 1.0])
+ self.assertEqual(Color().to_hsl(), [0, 0, 0])
+ self.assertEqual(str(Color(None)), "none")
+ self.assertEqual(str(Color("none")), "none")
+
+ def test_errors(self):
+ """Color parsing errors"""
+ self.assertRaises(ColorError, Color, {})
+ self.assertRaises(ColorError, Color, ["#id"])
+ self.assertRaises(ColorError, Color, "#badhex")
+ self.assertRaises(ColorIdError, Color, "url(#someid)")
+ self.assertRaises(ColorError, Color, [0, 0, 0, 0])
+ self.assertRaises(ColorError, Color(None, space="nop").to_rgb)
+ self.assertRaises(ColorError, Color(None, space="nop").to_hsl)
+ self.assertRaises(ColorError, Color([1], space="nop").__str__)
+
+ def test_namedcolor(self):
+ """Named Color"""
+ self.assertEqual(Color("red"), [255, 0, 0])
+ self.assertEqual(str(Color("red")), "red")
+ color = Color("red")
+ color[0] = 41
+ self.assertEqual(str(color), "#290000")
+ color = Color("#ff0000").to_named()
+ self.assertEqual(str(color), "red")
+
+ def test_rgb_hex(self):
+ """RGB Hex Color"""
+ color = Color("#ff0102")
+ self.assertEqual(color, [255, 1, 2])
+ self.assertEqual(str(color), "#ff0102")
+ self.assertEqual(color.red, 255)
+ self.assertEqual(color.green, 1)
+ self.assertEqual(color.blue, 2)
+ color = Color(" #ff0102")
+ self.assertEqual(color.to_hsl(), [254, 255, 128])
+ self.assertEqual(color.hue, 254)
+ self.assertEqual(color.saturation, 255)
+ self.assertEqual(color.lightness, 128)
+ self.assertEqual(color.alpha, 1.0)
+
+ def test_setter_rgb(self):
+ """Color RGB units can be set"""
+ color = Color("red")
+ color.red = 127
+ self.assertEqual(color.red, 127)
+ color.green = 5
+ self.assertEqual(color.green, 5)
+ color.blue = 15
+ self.assertEqual(color.blue, 15)
+ color.blue = 5.1
+ self.assertEqual(color.blue, 5)
+ self.assertEqual(str(color), "#7f0505")
+
+ def test_setter_hsl(self):
+ """Color HSL units can be set on RGB color"""
+ color = Color("#ff0102")
+ color.hue = 100
+ self.assertEqual(color.space, "rgb")
+ self.assertEqual(color.hue, 100)
+ color.saturation = 100
+ self.assertEqual(color.space, "rgb")
+ self.assertEqual(color.saturation, 99)
+ color.lightness = 100
+ self.assertEqual(color.space, "rgb")
+ self.assertEqual(color.lightness, 99) # No sure, bad conversion?
+
+ def test_setter_alpha(self):
+ """Color conversion from rgb to rgba"""
+ color = Color("#ff0102")
+ self.assertEqual(color.space, "rgb")
+ self.assertEqual(color.alpha, 1.0)
+ color.alpha = 0.5
+ self.assertEqual(color.space, "rgba")
+ self.assertEqual(color.alpha, 0.5)
+
+ def test_rgb_to_hsl(self):
+ """RGB to HSL Color"""
+ self.assertEqual(Color("#ff7c7d").to_hsl(), [254, 255, 189])
+ self.assertEqual(Color("#7e7c7d").to_hsl(), [233, 2, 125])
+ self.assertEqual(Color("#7e7cff").to_hsl(), [170, 255, 189])
+ self.assertEqual(Color("#7eff7d").to_hsl(), [84, 255, 190])
+
+ def test_rgb_short_hex(self):
+ """RGB Short Hex Color"""
+ self.assertEqual(Color("#fff"), [255, 255, 255])
+ self.assertEqual(str(Color("#fff")), "#ffffff")
+
+ def test_rgb_int(self):
+ """RGB Integer Color"""
+ self.assertEqual(Color("rgb(255,255,255)"), [255, 255, 255])
+
+ def test_rgb_percent(self):
+ """RGB Percent Color"""
+ self.assertEqual(Color("rgb(100%,100%,100%)"), [255, 255, 255])
+ self.assertEqual(Color("rgb(50%,0%,1%)"), [127, 0, 2])
+ self.assertEqual(Color("rgb(66.667%,0%,6.667%)"), [170, 0, 17])
+
+ def test_rgba_one(self):
+ """Test for https://gitlab.com/inkscape/extensions/-/issues/402"""
+ self.assertEqual(Color("rgb(1, 100%,1.0)"), [1, 255, 255])
+ self.assertEqual(Color("rgba(1, 100%,1.0, 100%)"), [1, 255, 255, 1])
+ self.assertEqual(Color("rgba(1, 100%, 1.0, 1.0)"), [1, 255, 255, 1])
+ self.assertEqual(Color("rgba(1, 100%, 1.0, 1)"), [1, 255, 255, 1])
+ self.assertEqual(Color("rgba(1, 0, 0, 1)"), [1, 0, 0, 1])
+ self.assertEqual(Color([1, 1.0, 1.0, 1], "rgba"), [1, 255, 255, 1])
+
+ def test_rgba_color(self):
+ """Parse RGBA colours"""
+ self.assertEqual(Color("rgba(45,50,55,1.0)"), [45, 50, 55, 1.0])
+ self.assertEqual(Color("rgba(45,50,55,1.5)"), [45, 50, 55, 1.0])
+ self.assertEqual(Color("rgba(66.667%,0%,6.667%,0.5)"), [170, 0, 17, 0.5])
+ color = Color("rgba(255,127,255,0.5)")
+ self.assertEqual(str(color), "rgba(255, 127, 255, 0.5)")
+ self.assertEqual(str(color.to_rgb()), "#ff7fff")
+ self.assertEqual(color.to_rgb().to_rgba(0.75), [255, 127, 255, 0.75])
+ color[3] = 1.0
+ self.assertEqual(str(color), "rgb(255, 127, 255)")
+
+ def test_hsl_color(self):
+ """Parse HSL colors"""
+ color = Color("hsl(4.0, 128, 99)")
+ self.assertEqual(color, [4, 128, 99])
+ self.assertEqual(str(color), "hsl(4, 128, 99)")
+ self.assertEqual(color.hue, 4)
+ self.assertEqual(color.saturation, 128)
+ self.assertEqual(color.lightness, 99)
+
+ def test_hsl_to_rgb(self):
+ """Convert HSL to RGB"""
+ color = Color("hsl(172, 131, 128)")
+ self.assertEqual(color.to_rgb(), [68, 62, 193])
+ self.assertEqual(str(color.to_rgb()), "#443ec1")
+ self.assertEqual(color.red, 68)
+ self.assertEqual(color.green, 62)
+ self.assertEqual(color.blue, 193)
+ color = Color("hsl(172, 131, 10)")
+ self.assertEqual(color.to_rgb(), [5, 4, 15])
+ color = Color("hsl(0, 131, 10)")
+ self.assertEqual(color.to_rgb(), [15, 4, 4])
+ self.assertEqual(color.to_rgba(), [15, 4, 4, 1.0])
+
+ def test_hsl_grey(self):
+ """Parse HSL Grey"""
+ color = Color("hsl(172, 0, 128)")
+ self.assertEqual(color.to_rgb(), [128, 128, 128])
+ color = Color("rgb(128, 128, 128)")
+ self.assertEqual(color.to_hsl(), [0, 0, 128])
+
+ def test_is_color(self):
+ """Can detect colour format"""
+ self.assertFalse(is_color("rgb[t, b, s]"))
+ self.assertTrue(is_color("#fff"))
+ self.assertTrue(is_color(1364325887))
+
+ def test_int_color(self):
+ """Colours from arg parser"""
+ color = Color(1364325887)
+ self.assertEqual(str(color), "#5151f5")
+ color = Color("1364325887")
+ self.assertEqual(str(color), "#5151f5")
+ color = Color(0xFFFFFFFF)
+ self.assertEqual(str(color), "#ffffff")
+ color = Color(0xFFFFFF00)
+ self.assertEqual(str(color), "rgba(255, 255, 255, 0)")
+ self.assertEqual(int(Color("#808080")), 0x808080FF)
+ self.assertEqual(int(Color("rgba(128, 128, 128, 0.2)")), 2155905075)
+
+ def test_interpolate(self):
+ black = Color("#000000")
+ grey50 = Color("#080808")
+ white = Color("#111111")
+ val = black.interpolate(white, 0.5)
+ assert val == grey50