chroma-js
Version:
JavaScript library for color conversions
52 lines (48 loc) • 2.02 kB
JavaScript
const vows = require('vows')
const assert = require('assert');
require('es6-shim');
const chroma = require('../index');
const colors = [[125,133,127], [131,127,134], [138,121,141], [144,114,147], [149,107,153],
[165,83,170], [160,92,164], [170,73,175], [175,62,180], [155,100,159]];
vows
.describe('Testing color averaging modes')
.addBatch({
'avg some colors': {
topic: ['red', 'blue'],
'is #5a0000'(topic) {
assert.equal(chroma.average(topic).hex(), chroma.mix(topic[0], topic[1]).hex())
}
},
'three colors': {
topic: chroma.average(['blue', 'red', 'white'], 'rgb'),
'is #5a0000'(topic) {
assert.equal(topic.hex(), '#aa55aa')
}
},
'alpha avg': {
topic: chroma.average(['rgba(0,0,0,0)', 'red'], 'rgb'),
'is #5a0000'(topic) { assert.deepEqual(topic.rgba(), [128, 0, 0, 0.5]) },
'is #5a0000-2'(topic) { assert.deepEqual(topic.rgba(false), [127.5, 0, 0, 0.5]) }
},
'average in lab': {
topic: chroma.average(['blue', 'red', 'white'], 'lab'),
'is #5a0000'(topic) { assert.equal(topic.hex(), '#e26daf') }
},
'average h in lch': {
topic: chroma.average([chroma.lch(50, 50, 0), chroma.lch(50, 50, 90)], 'lch').get('lch.h'),
'is approximately 45'(topic) { assert.equal(Math.round(topic), 45) }
},
'average in hsl of same colors': {
topic: chroma.average(['#02c03a', '#02c03a'], 'hsl'),
'is same'(topic) { assert.equal(topic.hex(), '#02c03a') }
},
'average same color': {
topic: chroma.average(["#02c03a", "#02c03a"],'hsl'),
'is #02c03a'(topic) { assert.equal(topic.hex(), '#02c03a') }
},
'lrgb avergage': {
topic: chroma.average(colors, 'lrgb'),
'is ???'(topic) { assert.equal(topic.hex(), '#98689c') }
}
})
.export(module)