1 QUnit
.module( 'jquery.colorUtil', QUnit
.newMwEnvironment() );
3 QUnit
.test( 'getRGB', 18, function ( assert
) {
4 assert
.strictEqual( $.colorUtil
.getRGB(), undefined, 'No arguments' );
5 assert
.strictEqual( $.colorUtil
.getRGB( '' ), undefined, 'Empty string' );
6 assert
.deepEqual( $.colorUtil
.getRGB( [0, 100, 255] ), [0, 100, 255], 'Parse array of rgb values' );
7 assert
.deepEqual( $.colorUtil
.getRGB( 'rgb(0,100,255)' ), [0, 100, 255], 'Parse simple rgb string' );
8 assert
.deepEqual( $.colorUtil
.getRGB( 'rgb(0, 100, 255)' ), [0, 100, 255], 'Parse simple rgb string with spaces' );
9 assert
.deepEqual( $.colorUtil
.getRGB( 'rgb(0%,20%,40%)' ), [0, 51, 102], 'Parse rgb string with percentages' );
10 assert
.deepEqual( $.colorUtil
.getRGB( 'rgb(0%, 20%, 40%)' ), [0, 51, 102], 'Parse rgb string with percentages and spaces' );
11 assert
.deepEqual( $.colorUtil
.getRGB( '#f2ddee' ), [242, 221, 238], 'Hex string: 6 char lowercase' );
12 assert
.deepEqual( $.colorUtil
.getRGB( '#f2DDEE' ), [242, 221, 238], 'Hex string: 6 char uppercase' );
13 assert
.deepEqual( $.colorUtil
.getRGB( '#f2DdEe' ), [242, 221, 238], 'Hex string: 6 char mixed' );
14 assert
.deepEqual( $.colorUtil
.getRGB( '#eee' ), [238, 238, 238], 'Hex string: 3 char lowercase' );
15 assert
.deepEqual( $.colorUtil
.getRGB( '#EEE' ), [238, 238, 238], 'Hex string: 3 char uppercase' );
16 assert
.deepEqual( $.colorUtil
.getRGB( '#eEe' ), [238, 238, 238], 'Hex string: 3 char mixed' );
17 assert
.deepEqual( $.colorUtil
.getRGB( 'rgba(0, 0, 0, 0)' ), [255, 255, 255], 'Zero rgba for Safari 3; Transparent (whitespace)' );
19 // Perhaps this is a bug in colorUtil, but it is the current behaviour so, let's keep
20 // track of it, so we will know in case it would ever change.
21 assert
.strictEqual( $.colorUtil
.getRGB( 'rgba(0,0,0,0)' ), undefined, 'Zero rgba without whitespace' );
23 assert
.deepEqual( $.colorUtil
.getRGB( 'lightGreen' ), [144, 238, 144], 'Color names (lightGreen)' );
24 assert
.deepEqual( $.colorUtil
.getRGB( 'transparent' ), [255, 255, 255], 'Color names (transparent)' );
25 assert
.strictEqual( $.colorUtil
.getRGB( 'mediaWiki' ), undefined, 'Inexisting color name' );
28 QUnit
.test( 'rgbToHsl', 1, function ( assert
) {
29 var hsl
= $.colorUtil
.rgbToHsl( 144, 238, 144 );
31 // Cross-browser differences in decimals...
32 // Round to two decimals so they can be more reliably checked.
33 var dualDecimals = function(a
,b
){
34 return Math
.round(a
*100)/100;
36 // Re-create the rgbToHsl return array items, limited to two decimals.
37 var ret
= [dualDecimals(hsl
[0]), dualDecimals(hsl
[1]), dualDecimals(hsl
[2])];
39 assert
.deepEqual( ret
, [0.33, 0.73, 0.75], 'rgb(144, 238, 144): hsl(0.33, 0.73, 0.75)' );
42 QUnit
.test( 'hslToRgb', 1, function ( assert
) {
43 var rgb
= $.colorUtil
.hslToRgb( 0.3, 0.7, 0.8 );
45 // Cross-browser differences in decimals...
46 // Re-create the hslToRgb return array items, rounded to whole numbers.
47 var ret
= [Math
.round(rgb
[0]), Math
.round(rgb
[1]), Math
.round(rgb
[2])];
49 assert
.deepEqual( ret
,[183, 240, 168], 'hsl(0.3, 0.7, 0.8): rgb(183, 240, 168)' );
52 QUnit
.test( 'getColorBrightness', 2, function ( assert
) {
53 var a
= $.colorUtil
.getColorBrightness( 'red', +0.1 );
54 assert
.equal( a
, 'rgb(255,50,50)', 'Start with named color "red", brighten 10%' );
56 var b
= $.colorUtil
.getColorBrightness( 'rgb(200,50,50)', -0.2 );
57 assert
.equal( b
, 'rgb(118,29,29)', 'Start with rgb string "rgb(200,50,50)", darken 20%' );