Test the parsing 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 .


Clamping tests.


TEST: sRGB color with negative component should not clamp to 0 --> 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 component > 1 should not clamp --> color(srgb 0.25 1.5 0.75)
PASS declaration.getPropertyValue('color') is 'color(srgb 0.25 1.5 0.75)'

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

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

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 ''

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

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

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

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

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

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

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

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

PASS successfullyParsed is true

TEST COMPLETE

