toolkit/javascript/d3/test/core/hsl-test.js
changeset 47 c0b4a8b5a012
equal deleted inserted replaced
46:efd9c589177a 47:c0b4a8b5a012
       
     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);