UNPKG

hsv2rgb

Version:

convert from hsv/hsb to rgb

41 lines (35 loc) 1.44 kB
var test = require('tape'); var hsv = require('./hsv2rgb'); var tests = [ ['Black (#000000)' , [ 0, 0, 0], '0,0,0'], ['White (#FFFFFF)' , [ 0, 0, 1.0], '255,255,255'], ['Red (#FF0000)' , [ 0, 1, 1.0], '255,0,0'], ['Lime (#00FF00)' , [120, 1, 1.0], '0,255,0'], ['Blue (#0000FF)' , [240, 1, 1.0], '0,0,255'], ['Yellow (#FFFF00)' , [ 60, 1, 1.0], '255,255,0'], ['Cyan (#00FFFF)' , [180, 1, 1.0], '0,255,255'], ['Magenta (#FF00FF)', [300, 1, 1.0], '255,0,255'], ['Silver (#C0C0C0)' , [ 0, 0, .75], '192,192,192'], ['Gray (#808080)' , [ 0, 0, .50], '128,128,128'], ['Maroon (#800000)' , [ 0, 1, .50], '128,0,0'], ['Olive (#808000)' , [ 60, 1, .50], '128,128,0'], ['Green (#008000)' , [120, 1, .50], '0,128,0'], ['Purple (#800080)' , [300, 1, .50], '128,0,128'], ['Teal (#008080)' , [180, 1, .50], '0,128,128'], ['Navy (#000080)' , [240, 1, .50], '0,0,128'], ['pinkish (#FF0048)', [343, 1, 1.0], '255,0,72'], ]; test('a bunch of common colors', function(t) { tests.forEach(function(a) { var rgb = hsv(a[1][0], a[1][1], a[1][2]); t.equal(rgb.join(','), a[2], a[0]); }); t.end(); }); test('wrapping on h and clamping on s, v', function(t) { t.deepEqual(hsv(360 + 359, 1.0, 1.0), [255, 0, 4]); t.deepEqual(hsv(360 + 359, 1.0, 2.0), [255, 0, 4]); t.deepEqual(hsv(360 + 359, 2.0, 1.0), [255, 0, 4]); t.deepEqual(hsv(360 + 359, 2.0, 2.0), [255, 0, 4]); t.end(); });