toolkit/javascript/d3/test/core/sum-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.sum");
       
     8 
       
     9 suite.addBatch({
       
    10   "sum": {
       
    11     topic: function() {
       
    12       return d3.sum;
       
    13     },
       
    14     "sums numbers": function(sum) {
       
    15       assert.equal(d3.sum([1]), 1);
       
    16       assert.equal(d3.sum([5, 1, 2, 3, 4]), 15);
       
    17       assert.equal(d3.sum([20, 3]), 23);
       
    18       assert.equal(d3.sum([3, 20]), 23);
       
    19     },
       
    20     "sums types that can be coerced to numbers": function(sum) {
       
    21       assert.equal(d3.sum(["20", "3"]), 23);
       
    22       assert.equal(d3.sum(["3", "20"]), 23);
       
    23       assert.equal(d3.sum(["3", 20]), 23);
       
    24       assert.equal(d3.sum([20, "3"]), 23);
       
    25       assert.equal(d3.sum([3, "20"]), 23);
       
    26       assert.equal(d3.sum(["20", 3]), 23);
       
    27     },
       
    28     "ignores non-numeric types": function(sum) {
       
    29       assert.equal(d3.sum(["a", "b", "c"]), 0);
       
    30       assert.equal(d3.sum(["a", 1, "2"]), 3);
       
    31     },
       
    32     "ignores null, undefined and NaN": function(sum) {
       
    33       assert.equal(d3.sum([NaN, 1, 2, 3, 4, 5]), 15);
       
    34       assert.equal(d3.sum([1, 2, 3, 4, 5, NaN]), 15);
       
    35       assert.equal(d3.sum([10, null, 3, undefined, 5, NaN]), 18);
       
    36     },
       
    37     "applies the optional acccessor function": function(sum) {
       
    38       assert.equal(d3.sum([[1, 2, 3, 4, 5], [2, 4, 6, 8, 10]], function(d) { return d3.sum(d); }), 45);
       
    39       assert.equal(d3.sum([1, 2, 3, 4, 5], function(d, i) { return i; }), 10);
       
    40     },
       
    41     "returns zero for the empty array": function(sum) {
       
    42       assert.equal(d3.sum([]), 0);
       
    43     }
       
    44   }
       
    45 });
       
    46 
       
    47 suite.export(module);