185 lines
6.3 KiB
Python
185 lines
6.3 KiB
Python
"""
|
|
lesscpy color tests.
|
|
"""
|
|
import unittest
|
|
|
|
from lesscpy.lessc import color
|
|
|
|
|
|
class TestLessColor(unittest.TestCase):
|
|
def setUp(self):
|
|
self.color = color.Color()
|
|
|
|
def test_rgb(self):
|
|
test = self.color.rgb
|
|
for r, g, b, v in [
|
|
(255, 255, 255, '#ffffff'),
|
|
(100, 100, 100, '#646464'),
|
|
(0, 0, 0, '#000000'),
|
|
('70%', '70%', '70%', '#b2b2b2'),
|
|
('1%', '1%', '1%', '#020202'),
|
|
('100%', '100%', '100%', '#ffffff'),
|
|
('0%', '0%', '0%', '#000000'),
|
|
]:
|
|
self.assertEqual(test(r, g, b), v)
|
|
for r, g, b, a, v in [
|
|
(255, 255, 255, 0.5, '#ffffff'),
|
|
(100, 100, 100, 0.9, '#646464'),
|
|
(0, 0, 0, 100, '#000000'),
|
|
]:
|
|
self.assertEqual(test(r, g, b, a), v)
|
|
for args in [
|
|
(255, 255, 256),
|
|
(0, -1, 0),
|
|
('100%', '100%', 200),
|
|
('100%', '100%', '200%'),
|
|
]:
|
|
self.assertRaises(ValueError, test, args)
|
|
|
|
def test_rgba(self):
|
|
test = self.color.rgba
|
|
for r, g, b, a, v in [
|
|
(255, 255, 255, 255, '#ffffff'),
|
|
(100, 100, 100, 100, '#646464'),
|
|
(0, 0, 0, 0, 'rgba(0,0,0,0)'),
|
|
('70%', '70%', '70%', '70%', '#b2b2b2b2'),
|
|
('1%', '1%', '1%', '1%', '#02020202'),
|
|
('100%', '100%', '100%', '100%', '#ffffffff'),
|
|
('0%', '0%', '0%', '0%', 'rgba(0,0,0,0)'),
|
|
]:
|
|
self.assertEqual(test(r, g, b, a), v)
|
|
for args in [
|
|
(255, 255, 255, 256),
|
|
(0, 0, 0, -1),
|
|
('100%', '100%', '100%', 200),
|
|
('100%', '100%', '100%', '200%'),
|
|
]:
|
|
self.assertRaises(ValueError, test, args)
|
|
|
|
def test_argb(self):
|
|
test = self.color.argb
|
|
for a, r, g, b, v in [
|
|
(255, 255, 255, 255, '#ffffffff'),
|
|
(100, 100, 100, 100, '#ff646464'),
|
|
(0, 0, 0, 0, '#00000000'),
|
|
('70%', '70%', '70%', '70%', '#b2b2b2b2'),
|
|
('1%', '1%', '1%', '1%', '#02020202'),
|
|
('100%', '100%', '100%', '100%', '#ffffffff'),
|
|
('0%', '0%', '0%', '0%', '#00000000'),
|
|
]:
|
|
self.assertEqual(test(a, r, g, b), v)
|
|
for args in [
|
|
(255, 255, 255, 256),
|
|
(-1, 0, 0, 0),
|
|
(200, '100%', '100%', '100%'),
|
|
('200%', '100%', '100%', '100%'),
|
|
]:
|
|
self.assertRaises(ValueError, test, args)
|
|
|
|
def test_hsl(self):
|
|
"""
|
|
"""
|
|
test = self.color.hsl
|
|
for h, s, l, v in [
|
|
(31, '1%', '4%', '#0a0a0a'),
|
|
(0, '100%', '100%', '#ffffff'),
|
|
(100, '100%', '100%', '#ffffff'),
|
|
(0, '0%', '0%', '#000000'),
|
|
(100, '0%', '0%', '#000000'),
|
|
]:
|
|
self.assertEqual(test(h, s, l), v)
|
|
|
|
def test_hsla(self):
|
|
test = self.color.hsla
|
|
for h, s, l, a, v in [
|
|
(31, '1%', '4%', '0%', 'rgba(10.0,10.0,10.0,0.0)'),
|
|
(31, '30%', '4%', '1%', 'rgba(13.0,10.0,7.0,0.01)'),
|
|
(31, '60%', '4%', '20%', 'rgba(16.0,10.0,4.0,0.2)'),
|
|
(31, '90%', '4%', '60%', 'rgba(19.0,11.0,1.0,0.6)'),
|
|
(31, '100%', '4%', '100%', 'rgba(20.0,11.0,0.0,1.0)'),
|
|
]:
|
|
self.assertEqual(test(h, s, l, a), v)
|
|
|
|
def test_fmt(self):
|
|
test = self.color.fmt
|
|
self.assertEqual(test('#000'), '#000000')
|
|
self.assertEqual(test('#000000'), '#000000')
|
|
self.assertEqual(test('#0000'), '#00000000')
|
|
self.assertEqual(test('#00000000'), '#00000000')
|
|
self.assertEqual(test('#AAA'), '#aaaaaa')
|
|
self.assertEqual(test('#Abc'), '#aabbcc')
|
|
self.assertEqual(test('#AbCdEf'), '#abcdef')
|
|
self.assertRaises(ValueError, test, '#xxx')
|
|
self.assertRaises(ValueError, test, None)
|
|
self.assertRaises(ValueError, test, 'aabbcc')
|
|
self.assertRaises(ValueError, test, '#4aabbcc')
|
|
|
|
def test_saturate(self):
|
|
test = self.color.saturate
|
|
for c, p, v in [
|
|
('#555', '1%', '#565454'),
|
|
('#555', '10%', '#5e4c4c'),
|
|
('#555', '20%', '#664444'),
|
|
('#555', '40%', '#773333'),
|
|
('#555', '60%', '#882222'),
|
|
('#555', '100%', '#aa0000'),
|
|
('#000', '100%', '#000000'),
|
|
('#000', '0%', '#000000'),
|
|
('#fff', '100%', '#ffffff'),
|
|
('#fff', '0%', '#ffffff'),
|
|
('#29332f', '1%', '#29332f'),
|
|
('#29332f', '10%', '#243830'),
|
|
('#29332f', '20%', '#203c31'),
|
|
('#29332f', '40%', '#174533'),
|
|
('#29332f', '60%', '#0d4f35'),
|
|
('#29332f', '100%', '#005c37'),
|
|
|
|
]:
|
|
self.assertEqual(test(c, p), v, v)
|
|
|
|
def test_desaturate(self):
|
|
test = self.color.desaturate
|
|
for c, p, v in [
|
|
('#555', '1%', '#555555'),
|
|
('#555', '10%', '#555555'),
|
|
('#555', '20%', '#555555'),
|
|
('#555', '40%', '#555555'),
|
|
('#555', '60%', '#555555'),
|
|
('#555', '100%', '#555555'),
|
|
('#000', '100%', '#000000'),
|
|
('#000', '0%', '#000000'),
|
|
('#fff', '100%', '#ffffff'),
|
|
('#fff', '0%', '#ffffff'),
|
|
('#29332f', '1%', '#29332f'),
|
|
('#29332f', '10%', '#2e2e2e'),
|
|
('#29332f', '20%', '#2e2e2e'),
|
|
('#29332f', '40%', '#2e2e2e'),
|
|
('#29332f', '60%', '#2e2e2e'),
|
|
('#29332f', '100%', '#2e2e2e'),
|
|
|
|
]:
|
|
self.assertEqual(test(c, p), v, v)
|
|
|
|
def test_spin(self):
|
|
test = self.color.spin
|
|
for c, p, v in [
|
|
('#555', '1%', '#555555'),
|
|
('#555', '10%', '#555555'),
|
|
('#555', '20%', '#555555'),
|
|
('#555', '40%', '#555555'),
|
|
('#555', '60%', '#555555'),
|
|
('#555', '100%', '#555555'),
|
|
('#000', '100%', '#000000'),
|
|
('#000', '0%', '#000000'),
|
|
('#fff', '100%', '#ffffff'),
|
|
('#fff', '0%', '#ffffff'),
|
|
('#29332f', '1%', '#29332f'),
|
|
('#29332f', '10%', '#293331'),
|
|
('#29332f', '20%', '#293332'),
|
|
('#29332f', '40%', '#293033'),
|
|
('#29332f', '60%', '#292d33'),
|
|
('#29332f', '100%', '#2c2933'),
|
|
|
|
]:
|
|
self.assertEqual(test(c, p), v, v)
|