chroma-js
Version:
JavaScript library for color conversions
74 lines (63 loc) • 3.61 kB
JavaScript
require('es6-shim');
const vows = require('vows');
const assert = require('assert');
const cubehelix = require('../src/generator/cubehelix');
vows
.describe('Testing cubehelix scales')
.addBatch({
'default helix': {
topic() { return cubehelix(); },
'starts in black'(t) { return assert.equal(t(0).hex(), '#000000'); },
'at 0.25'(t) { return assert.equal(t(0.25).hex(), '#16534c'); },
'at 0.5'(t) { return assert.equal(t(0.5).hex(), '#a07949'); },
'at 0.75'(t) { return assert.equal(t(0.75).hex(), '#c7b3ed'); },
'ends in white'(t) { return assert.equal(t(1).hex(), '#ffffff'); }
},
'red helix': {
topic() { return cubehelix(0, 1, 1, 1); },
'starts in black'(t) { return assert.equal(t(0).hex(), '#000000'); },
'at 0.25'(t) { return assert.equal(t(0.25).hex(), '#2e5117'); },
'at 0.5'(t) { return assert.equal(t(0.5).hex(), '#4c949f'); },
'at 0.75'(t) { return assert.equal(t(0.75).hex(), '#d1aee8'); },
'ends in white'(t) { return assert.equal(t(1).hex(), '#ffffff'); }
},
'red helix - partial l range': {
topic() { return cubehelix(0, 1, 1, 1, [0.25, 0.75]); },
'starts'(t) { return assert.equal(t(0).hex(), '#663028'); },
'at 0.25'(t) { return assert.equal(t(0.25).hex(), '#49752d'); },
'at 0.5'(t) { return assert.equal(t(0.5).hex(), '#4c949f'); },
'at 0.75'(t) { return assert.equal(t(0.75).hex(), '#b68ad2'); },
'ends'(t) { return assert.equal(t(1).hex(), '#e6b0a8'); }
},
'red helix - gamma': {
topic() { return cubehelix(0, 1, 1, 0.8, [0,1]); },
'starts in black'(t) { return assert.equal(t(0).hex(), '#000000'); },
'at 0.25'(t) { return assert.equal(t(0.25).hex(), '#3f6824'); },
'at 0.5'(t) { return assert.equal(t(0.5).hex(), '#60a6b1'); },
'at 0.75'(t) { return assert.equal(t(0.75).hex(), '#dabcee'); },
'ends in white'(t) { return assert.equal(t(1).hex(), '#ffffff'); }
},
'red helix - no saturation': {
topic() { return cubehelix(0, 1, 0, 1, [0,1]); },
'starts in black'(t) { return assert.equal(t(0).hex(), '#000000'); },
'at 0.25'(t) { return assert.equal(t(0.25).hex(), '#404040'); },
'at 0.5'(t) { return assert.equal(t(0.5).hex(), '#808080'); },
'at 0.75'(t) { return assert.equal(t(0.75).hex(), '#bfbfbf'); },
'ends in white'(t) { return assert.equal(t(1).hex(), '#ffffff'); }
},
'red helix - saturation range': {
topic() { return cubehelix(0, 1, [1,0], 1, [0,1]); },
'starts in black'(t) { return assert.equal(t(0).hex(), '#000000'); },
'at 0.25'(t) { return assert.equal(t(0.25).hex(), '#324c21'); },
'at 0.5'(t) { return assert.equal(t(0.5).hex(), '#668a8f'); },
'at 0.75'(t) { return assert.equal(t(0.75).hex(), '#c4bbc9'); },
'ends in white'(t) { return assert.equal(t(1).hex(), '#ffffff'); },
'saturation decreases'(t) { return assert(t(0.33).hsl()[1] > t(0.66).hsl()[1]); }
},
'non-array lightness': {
topic() { return cubehelix(300, -1.5, 1, 1, 0.5); },
'start'(t) { return assert.equal(t(0).hex(), '#ae629f'); },
'at 0.5'(t) { return assert.equal(t(0.5).hex(), '#a07949'); },
'end'(t) { return assert.equal(t(1).hex(), '#519d60'); }
}})
.export(module);