toolkit/javascript/d3/test/core/extent-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.extent");
       
     8 
       
     9 suite.addBatch({
       
    10   "extent": {
       
    11     topic: function() {
       
    12       return d3.extent;
       
    13     },
       
    14     "returns the numeric extent for numbers": function(extent) {
       
    15       assert.deepEqual(extent([1]), [1, 1]);
       
    16       assert.deepEqual(extent([5, 1, 2, 3, 4]), [1, 5]);
       
    17       assert.deepEqual(extent([20, 3]), [3, 20]);
       
    18       assert.deepEqual(extent([3, 20]), [3, 20]);
       
    19     },
       
    20     "returns the lexicographic extent for strings": function(extent) {
       
    21       assert.deepEqual(extent(["c", "a", "b"]), ["a", "c"]);
       
    22       assert.deepEqual(extent(["20", "3"]), ["20", "3"]);
       
    23       assert.deepEqual(extent(["3", "20"]), ["20", "3"]);
       
    24     },
       
    25     "ignores null, undefined and NaN": function(extent) {
       
    26       assert.deepEqual(extent([NaN, 1, 2, 3, 4, 5]), [1, 5]);
       
    27       assert.deepEqual(extent([1, 2, 3, 4, 5, NaN]), [1, 5]);
       
    28       assert.deepEqual(extent([10, null, 3, undefined, 5, NaN]), [3, 10]);
       
    29       assert.deepEqual(extent([-1, null, -3, undefined, -5, NaN]), [-5, -1]);
       
    30     },
       
    31     "compares heterogenous types as numbers": function(extent) {
       
    32       assert.deepEqual(extent([20, "3"]), ["3", 20]);
       
    33       assert.deepEqual(extent(["20", 3]), [3, "20"]);
       
    34       assert.deepEqual(extent([3, "20"]), [3, "20"]);
       
    35       assert.deepEqual(extent(["3", 20]), ["3", 20]);
       
    36     },
       
    37     "returns undefined for empty array": function(extent) {
       
    38       assert.deepEqual(extent([]), [undefined, undefined]);
       
    39       assert.deepEqual(extent([null]), [undefined, undefined]);
       
    40       assert.deepEqual(extent([undefined]), [undefined, undefined]);
       
    41       assert.deepEqual(extent([NaN]), [undefined, undefined]);
       
    42       assert.deepEqual(extent([NaN, NaN]), [undefined, undefined]);
       
    43     },
       
    44     "applies the optional accessor function exactly once": function(extent) {
       
    45       var i = 10;
       
    46       assert.deepEqual(d3.extent([0,1,2,3], function() { return ++i; }), [11, 14]);
       
    47     }
       
    48   }
       
    49 });
       
    50 
       
    51 suite.export(module);