UNPKG

rainbowjs

Version:

JavaScript color library to create color schemes based on color theory harmonies

82 lines (70 loc) 2.1 kB
'use strict'; const complement = require('../../src/distribution-functions/complement'); describe('Complement function', ()=>{ it('should create an array with 2 element if no arguments are passed', ()=>{ let result = complement(); expect(result.length).toBe(2); expect(result[1]).toBe(0.5); }); it('should create an array with 3 complements', ()=>{ let count = 3, result = complement(count); expect(result.length).toBe(count + 1); // 3 ccomplements + 1 base value expect(result[1]).toBe(0.5); expect(result[2]).toBe(0.5 + Math.pow(0.35, 3)); }); it('should accept a configuration object', ()=>{ let count = 3, config = { dist: 0.2 }, result = complement(count, config); expect(result.length).toBe(count + 1); expect(result[0]).toBe(0); expect(result[1]).toBe(0.5); expect(result[2]).toBe(0.5 + config.dist); expect(result[3]).toBe(0.5 - config.dist); }); it('should accept a configuration object with a invert property', ()=>{ let count = 3, config = { dist: 0.2, invert: true, }, result = complement(count, config); expect(result.length).toBe(count + 1); expect(result[0]).toBe(0); expect(result[1]).toBe(0.5); expect(result[2]).toBe(0.5 - config.dist); expect(result[3]).toBe(0.5 + config.dist); }); it('should accept a configuration object with a function as distance property', ()=>{ let count = 3, index = 2, config = { dist: { fn: (a)=>{ return a/2; }, params: [0.5] }, }, result = complement(count, config); expect(result.length).toBe(count + 1); expect(result[index]).toBe(0.5 + Math.pow(config.dist.fn(config.dist.params[0]), count-index)); }); it('should not allow for values greather than 1', ()=>{ let count = 1, dist = 3; expect(()=>{ complement(count, {dist: dist}); }).toThrow(); }); it('should not allow for values lesser than 0', ()=>{ let count = 1, dist = -1; expect(()=>{ complement(count, {dist: dist}); }).toThrow(); }); });