Test the computed style of the color() function.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".



TEST: Basic sRGB white --> color(srgb 1 1 1)
PASS declaration.getPropertyValue('color') is 'color(srgb 1 1 1)'

TEST: White with lots of space --> color(    srgb         1      1 1       )
PASS declaration.getPropertyValue('color') is 'color(srgb 1 1 1)'

TEST: sRGB color --> color(srgb 0.25 0.5 0.75)
PASS declaration.getPropertyValue('color') is 'color(srgb 0.25 0.5 0.75)'

TEST: Different case for sRGB --> color(SrGb 0.25 0.5 0.75)
PASS declaration.getPropertyValue('color') is 'color(srgb 0.25 0.5 0.75)'

TEST: sRGB color with unnecessary decimals --> color(srgb 1.00000 0.500000 0.20)
PASS declaration.getPropertyValue('color') is 'color(srgb 1 0.5 0.2)'

TEST: sRGB white with 0.5 alpha --> color(srgb 1 1 1 / 0.5)
PASS declaration.getPropertyValue('color') is 'color(srgb 1 1 1 / 0.5)'

TEST: sRGB white with 0 alpha --> color(srgb 1 1 1 / 0)
PASS declaration.getPropertyValue('color') is 'color(srgb 1 1 1 / 0)'

TEST: sRGB white with 50% alpha --> color(srgb 1 1 1 / 50%)
PASS declaration.getPropertyValue('color') is 'color(srgb 1 1 1 / 0.5)'

TEST: sRGB white with 0% alpha --> color(srgb 1 1 1 / 0%)
PASS declaration.getPropertyValue('color') is 'color(srgb 1 1 1 / 0)'

TEST: One missing component is 0 --> color(srgb 1 1)
PASS declaration.getPropertyValue('color') is 'color(srgb 1 1 0)'

TEST: Two missing components are 0 --> color(srgb 1)
PASS declaration.getPropertyValue('color') is 'color(srgb 1 0 0)'

TEST: All components missing --> color(srgb)
PASS declaration.getPropertyValue('color') is 'color(srgb 0 0 0)'

TEST: Display P3 color --> color(display-p3 0.6 0.7 0.8)
PASS declaration.getPropertyValue('color') is 'color(display-p3 0.6 0.7 0.8)'

TEST: Different case for Display P3 --> color(dIspLaY-P3 0.6 0.7 0.8)
PASS declaration.getPropertyValue('color') is 'color(display-p3 0.6 0.7 0.8)'


Fallback tests.


TEST: Unknown color space should fallback --> color(unknown 1 2 3, red)
FAIL declaration.getPropertyValue('color') should be color(unknown 1 2 3, red). Was rgb(0, 0, 0).


Clamping tests.


TEST: sRGB color with negative component should clamp to 0 --> color(srgb -0.25 0.5 0.75)
PASS declaration.getPropertyValue('color') is 'color(srgb 0 0.5 0.75)'

TEST: sRGB color with component > 1 should clamp --> color(srgb 0.25 1.5 0.75)
PASS declaration.getPropertyValue('color') is 'color(srgb 0.25 1 0.75)'

TEST: Display P3 color with negative component should clamp to 0 --> color(display-p3 0.5 -199 0.75)
PASS declaration.getPropertyValue('color') is 'color(display-p3 0.5 0 0.75)'

TEST: Display P3 color with component > 1 should clamp --> color(display-p3 184 1.00001 2347329746587)
PASS declaration.getPropertyValue('color') is 'color(display-p3 1 1 1)'

TEST: Alpha > 1 should clamp --> color(srgb 0.1 0.2 0.3 / 1.9)
PASS declaration.getPropertyValue('color') is 'color(srgb 0.1 0.2 0.3)'

TEST: Negative alpha should clamp --> color(srgb 1 1 1 / -0.2)
PASS declaration.getPropertyValue('color') is 'color(srgb 1 1 1 / 0)'


Invalid property value tests.


TEST: Empty --> color()
PASS declaration.getPropertyValue('color') is 'rgb(0, 0, 0)'

TEST: Bad color space --> color(banana 1 1 1)
PASS declaration.getPropertyValue('color') is 'rgb(0, 0, 0)'

TEST: Bad Display P3 color space --> color(displayp3 1 1 1)
PASS declaration.getPropertyValue('color') is 'rgb(0, 0, 0)'

TEST: No color space --> color(1 1 1)
PASS declaration.getPropertyValue('color') is 'rgb(0, 0, 0)'

TEST: Too many parameters --> color(srgb 1 1 1 1)
PASS declaration.getPropertyValue('color') is 'rgb(0, 0, 0)'

TEST: Way too many parameters --> color(srgb 1 1 1 1 1)
PASS declaration.getPropertyValue('color') is 'rgb(0, 0, 0)'

TEST: Bad parameters --> color(srgb 1 eggs 1)
PASS declaration.getPropertyValue('color') is 'rgb(0, 0, 0)'

TEST: Bad alpha --> color(srgb 1 1 1 / bacon)
PASS declaration.getPropertyValue('color') is 'rgb(0, 0, 0)'

TEST: Junk after alpha --> color(srgb 1 1 1 / 1 cucumber)
PASS declaration.getPropertyValue('color') is 'rgb(0, 0, 0)'

PASS successfullyParsed is true

TEST COMPLETE

