|
1 require("../env"); |
|
2 require("../../d3"); |
|
3 |
|
4 var vows = require("vows"), |
|
5 assert = require("assert"); |
|
6 |
|
7 var suite = vows.describe("d3.hsl"); |
|
8 |
|
9 suite.addBatch({ |
|
10 "hsl": { |
|
11 topic: function() { |
|
12 return d3.hsl; |
|
13 }, |
|
14 "does not clamp channel values": function(hsl) { |
|
15 assert.hslEqual(hsl(-100, -1, -2), -100, -1, -2); |
|
16 assert.hslEqual(hsl(400, 2, 3), 400, 2, 3); |
|
17 }, |
|
18 "converts string channel values to numbers": function(hsl) { |
|
19 assert.hslEqual(hsl("180", ".5", ".6"), 180, .5, .6); |
|
20 }, |
|
21 "converts null channel values to zero": function(hsl) { |
|
22 assert.hslEqual(hsl(null, null, null), 0, 0, 0); |
|
23 }, |
|
24 "exposes h, s and l properties": function(hsl) { |
|
25 var color = hsl("hsl(180, 50%, 60%)"); |
|
26 assert.equal(color.h, 180); |
|
27 assert.equal(color.s, .5); |
|
28 assert.equal(color.l, .6); |
|
29 }, |
|
30 "changing h, s or l affects the string format": function(hsl) { |
|
31 var color = hsl("hsl(180, 50%, 60%)"); |
|
32 color.h++; |
|
33 color.s += .1; |
|
34 color.l += .1; |
|
35 assert.equal(color + "", "#85dfe0"); |
|
36 }, |
|
37 "parses hexadecimal shorthand format (e.g., \"#abc\")": function(hsl) { |
|
38 assert.hslEqual(hsl("#abc"), 210, .25, .733333); |
|
39 }, |
|
40 "parses hexadecimal format (e.g., \"#abcdef\")": function(hsl) { |
|
41 assert.hslEqual(hsl("#abcdef"), 210, .68, .803922); |
|
42 }, |
|
43 "parses HSL format (e.g., \"hsl(210, 64%, 13%)\")": function(hsl) { |
|
44 assert.hslEqual(hsl("hsl(210, 64.7058%, 13.33333%)"), 210, .647058, .133333); |
|
45 }, |
|
46 "parses color names (e.g., \"moccasin\")": function(hsl) { |
|
47 assert.hslEqual(hsl("moccasin"), 38.108108, 1, .854902); |
|
48 assert.hslEqual(hsl("aliceblue"), 208, 1, .970588); |
|
49 assert.hslEqual(hsl("yellow"), 60, 1, .5); |
|
50 }, |
|
51 "parses and converts RGB format (e.g., \"rgb(102, 102, 0)\")": function(hsl) { |
|
52 assert.hslEqual(hsl("rgb(102, 102, 0)"), 60, 1, .2); |
|
53 }, |
|
54 "can convert from RGB": function(hsl) { |
|
55 assert.hslEqual(hsl(d3.rgb(12, 34, 56)), 210, .647058, .133333); |
|
56 }, |
|
57 "can convert from HSL": function(hsl) { |
|
58 assert.hslEqual(hsl(d3.hsl(20, .8, .3)), 20, .8, .3); |
|
59 }, |
|
60 "can convert to RGB": function(hsl) { |
|
61 assert.rgbEqual(hsl("steelblue").rgb(), 70, 130, 180); |
|
62 }, |
|
63 "can derive a brighter color": function(hsl) { |
|
64 assert.hslEqual(hsl("steelblue").brighter(), 207.272727, .44, .7002801); |
|
65 assert.hslEqual(hsl("steelblue").brighter(.5), 207.272727, .44, .5858964); |
|
66 assert.hslEqual(hsl("steelblue").brighter(1), 207.272727, .44, .7002801); |
|
67 assert.hslEqual(hsl("steelblue").brighter(2), 207.272727, .44, 1.0004002); |
|
68 }, |
|
69 "can derive a darker color": function(hsl) { |
|
70 assert.hslEqual(hsl("lightsteelblue").darker(), 213.913043, .4107143, .5462745); |
|
71 assert.hslEqual(hsl("lightsteelblue").darker(.5), 213.913043, .4107143, .6529229); |
|
72 assert.hslEqual(hsl("lightsteelblue").darker(1), 213.913043, .4107143, .5462745); |
|
73 assert.hslEqual(hsl("lightsteelblue").darker(2), 213.913043, .4107143, .38239216); |
|
74 }, |
|
75 "string coercion returns RGB format": function(hsl) { |
|
76 assert.strictEqual(hsl("hsl(60, 100%, 20%)") + "", "#666600"); |
|
77 assert.strictEqual(hsl(d3.hsl(60, 1, .2)) + "", "#666600"); |
|
78 } |
|
79 } |
|
80 }); |
|
81 |
|
82 suite.export(module); |