chroma-js
Version:
JavaScript library for color conversions
69 lines (65 loc) • 4.17 kB
JavaScript
const vows = require('vows')
const assert = require('assert');
require('es6-shim');
const hex2rgb = require('../src/io/hex/hex2rgb');
// const round = (digits) => {
// const d = Math.pow(10,digits);
// return (v) => Math.round(v*d) / d;
// }
vows
.describe('Testing HEX2RGB color conversions')
.addBatch({
'parse simple #rrggbb HEX colors': {
topic: ['#000000','#ffffff','#ff0000','#00ff00','#0000ff','#ffff00','#00ffff','#ff00ff'],
black(t) { return assert.deepEqual(hex2rgb(t[0]), [0,0,0,1]); },
white(t) { return assert.deepEqual(hex2rgb(t[1]), [255,255,255,1]); },
red(t) { return assert.deepEqual(hex2rgb(t[2]), [255,0,0,1]); },
green(t) { return assert.deepEqual(hex2rgb(t[3]), [0,255,0,1]); },
blue(t) { return assert.deepEqual(hex2rgb(t[4]), [0,0,255,1]); },
yellow(t) { return assert.deepEqual(hex2rgb(t[5]), [255,255,0,1]); },
cyan(t) { return assert.deepEqual(hex2rgb(t[6]), [0,255,255,1]); },
magenta(t) { return assert.deepEqual(hex2rgb(t[7]), [255,0,255,1]); }
},
'parse simple rrggbb HEX colors without #': {
topic: ['000000','ffffff','ff0000','00ff00','0000ff','ffff00','00ffff','ff00ff'],
black(t) { return assert.deepEqual(hex2rgb(t[0]), [0,0,0,1]); },
white(t) { return assert.deepEqual(hex2rgb(t[1]), [255,255,255,1]); },
red(t) { return assert.deepEqual(hex2rgb(t[2]), [255,0,0,1]); },
green(t) { return assert.deepEqual(hex2rgb(t[3]), [0,255,0,1]); },
blue(t) { return assert.deepEqual(hex2rgb(t[4]), [0,0,255,1]); },
yellow(t) { return assert.deepEqual(hex2rgb(t[5]), [255,255,0,1]); },
cyan(t) { return assert.deepEqual(hex2rgb(t[6]), [0,255,255,1]); },
magenta(t) { return assert.deepEqual(hex2rgb(t[7]), [255,0,255,1]); }
},
'parse simple short-hand HEX colors': {
topic: ['#000','#fff','#f00','#0f0','#00f','#ff0','#0ff','#f0f'],
black(t) { return assert.deepEqual(hex2rgb(t[0]), [0,0,0,1]); },
white(t) { return assert.deepEqual(hex2rgb(t[1]), [255,255,255,1]); },
red(t) { return assert.deepEqual(hex2rgb(t[2]), [255,0,0,1]); },
green(t) { return assert.deepEqual(hex2rgb(t[3]), [0,255,0,1]); },
blue(t) { return assert.deepEqual(hex2rgb(t[4]), [0,0,255,1]); },
yellow(t) { return assert.deepEqual(hex2rgb(t[5]), [255,255,0,1]); },
cyan(t) { return assert.deepEqual(hex2rgb(t[6]), [0,255,255,1]); },
magenta(t) { return assert.deepEqual(hex2rgb(t[7]), [255,0,255,1]); }
},
'parse simple short-hand HEX colors without #': {
topic: ['000','fff','f00','0f0','00f','ff0','0ff','f0f'],
black(t) { return assert.deepEqual(hex2rgb(t[0]), [0,0,0,1]); },
white(t) { return assert.deepEqual(hex2rgb(t[1]), [255,255,255,1]); },
red(t) { return assert.deepEqual(hex2rgb(t[2]), [255,0,0,1]); },
green(t) { return assert.deepEqual(hex2rgb(t[3]), [0,255,0,1]); },
blue(t) { return assert.deepEqual(hex2rgb(t[4]), [0,0,255,1]); },
yellow(t) { return assert.deepEqual(hex2rgb(t[5]), [255,255,0,1]); },
cyan(t) { return assert.deepEqual(hex2rgb(t[6]), [0,255,255,1]); },
magenta(t) { return assert.deepEqual(hex2rgb(t[7]), [255,0,255,1]); }
},
'parse different #rrggbb HEX colors with alpha': {
topic: ['#00000000','#ffffff80','#ff000040','#00FF00C0','#FF00FFFF'],
black(t) { return assert.deepEqual(hex2rgb(t[0]), [0,0,0,0]); },
white(t) { return assert.deepEqual(hex2rgb(t[1]), [255,255,255,0.5]); },
red(t) { return assert.deepEqual(hex2rgb(t[2]), [255,0,0,0.25]); },
green(t) { return assert.deepEqual(hex2rgb(t[3]), [0,255,0,0.75]); },
magenta(t) { return assert.deepEqual(hex2rgb(t[4]), [255,0,255,1]); }
},
})
.export(module);