toolkit/javascript/d3/test/core/rgb-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.rgb");
       
     8 
       
     9 suite.addBatch({
       
    10   "rgb": {
       
    11     topic: function() {
       
    12       return d3.rgb;
       
    13     },
       
    14     "floors channel values": function(rgb) {
       
    15       assert.rgbEqual(rgb(1.2, 2.6, 42.9), 1, 2, 42);
       
    16     },
       
    17     "does not clamp channel values": function(rgb) {
       
    18       assert.rgbEqual(rgb(-10, -20, -30), -10, -20, -30);
       
    19       assert.rgbEqual(rgb(300, 400, 500), 300, 400, 500);
       
    20     },
       
    21     "converts string channel values to numbers": function(rgb) {
       
    22       assert.rgbEqual(rgb("12", "34", "56"), 12, 34, 56);
       
    23     },
       
    24     "converts null channel values to zero": function(rgb) {
       
    25       assert.rgbEqual(rgb(null, null, null), 0, 0, 0);
       
    26     },
       
    27     "exposes r, g and b properties": function(rgb) {
       
    28       var color = rgb("#abc");
       
    29       assert.equal(color.r, 170);
       
    30       assert.equal(color.g, 187);
       
    31       assert.equal(color.b, 204);
       
    32     },
       
    33     "changing r, g or b affects the string format": function(rgb) {
       
    34       var color = rgb("#abc");
       
    35       color.r++;
       
    36       color.g++;
       
    37       color.b++;
       
    38       assert.equal(color + "", "#abbccd");
       
    39     },
       
    40     "parses hexadecimal shorthand format (e.g., \"#abc\")": function(rgb) {
       
    41       assert.rgbEqual(rgb("#abc"), 170, 187, 204);
       
    42     },
       
    43     "parses hexadecimal format (e.g., \"#abcdef\")": function(rgb) {
       
    44       assert.rgbEqual(rgb("#abcdef"), 171, 205, 239);
       
    45     },
       
    46     "parses RGB format (e.g., \"rgb(12, 34, 56)\")": function(rgb) {
       
    47       assert.rgbEqual(rgb("rgb(12, 34, 56)"), 12, 34, 56);
       
    48     },
       
    49     "parses color names (e.g., \"moccasin\")": function(rgb) {
       
    50       assert.rgbEqual(rgb("moccasin"), 255, 228, 181);
       
    51       assert.rgbEqual(rgb("aliceblue"), 240, 248, 255);
       
    52       assert.rgbEqual(rgb("yellow"), 255, 255, 0);
       
    53     },
       
    54     "parses and converts HSL format (e.g., \"hsl(60, 100%, 20%)\")": function(rgb) {
       
    55       assert.rgbEqual(rgb("hsl(60, 100%, 20%)"), 102, 102, 0);
       
    56     },
       
    57     "can convert from RGB": function(rgb) {
       
    58       assert.rgbEqual(rgb(d3.rgb(12, 34, 56)), 12, 34, 56);
       
    59     },
       
    60     "can convert from HSL": function(rgb) {
       
    61       assert.rgbEqual(rgb(d3.hsl(0, 1, .5)), 255, 0, 0);
       
    62     },
       
    63     "can convert to HSL": function(rgb) {
       
    64       assert.hslEqual(rgb("red").hsl(), 0, 1, .5);
       
    65     },
       
    66     "can derive a brighter color": function(rgb) {
       
    67       assert.rgbEqual(rgb("brown").brighter(), 235, 60, 60);
       
    68       assert.rgbEqual(rgb("brown").brighter(.5), 197, 50, 50);
       
    69       assert.rgbEqual(rgb("brown").brighter(1), 235, 60, 60);
       
    70       assert.rgbEqual(rgb("brown").brighter(2), 255, 85, 85);
       
    71     },
       
    72     "can derive a darker color": function(rgb) {
       
    73       assert.rgbEqual(rgb("coral").darker(), 178, 88, 56);
       
    74       assert.rgbEqual(rgb("coral").darker(.5), 213, 106, 66);
       
    75       assert.rgbEqual(rgb("coral").darker(1), 178, 88, 56);
       
    76       assert.rgbEqual(rgb("coral").darker(2), 124, 62, 39);
       
    77     },
       
    78     "string coercion returns hexadecimal format": function(rgb) {
       
    79       assert.strictEqual(rgb("#abcdef") + "", "#abcdef");
       
    80       assert.strictEqual(rgb("moccasin") + "", "#ffe4b5");
       
    81       assert.strictEqual(rgb("hsl(60, 100%, 20%)") + "", "#666600");
       
    82       assert.strictEqual(rgb("rgb(12, 34, 56)") + "", "#0c2238");
       
    83       assert.strictEqual(rgb(d3.rgb(12, 34, 56)) + "", "#0c2238");
       
    84       assert.strictEqual(rgb(d3.hsl(60, 1, .2)) + "", "#666600");
       
    85     }
       
    86   }
       
    87 });
       
    88 
       
    89 suite.export(module);