toolkit/javascript/d3/test/core/last-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.last");
       
     8 
       
     9 suite.addBatch({
       
    10   "last": {
       
    11     topic: function() {
       
    12       return d3.last;
       
    13     },
       
    14     "compares using natural order by default": function(last) {
       
    15       assert.strictEqual(last([1, 0]), 1);
       
    16       assert.strictEqual(last(["1", 0]), "1");
       
    17       assert.strictEqual(last(["2", "10"]), "2");
       
    18       assert.strictEqual(last(["2", NaN, "10"]), "2");
       
    19       assert.strictEqual(last([2, NaN, 10]), 10);
       
    20     },
       
    21     "compares using optional comparator": function(last) {
       
    22       var i = 0, aa, bb, o = new Object();
       
    23       assert.strictEqual(last([1, o], function(a, b) { aa = a; bb = b; return ++i; }), 1);
       
    24       assert.strictEqual(aa, 1);
       
    25       assert.strictEqual(bb, o);
       
    26       assert.strictEqual(last([1, 0], d3.descending), 0);
       
    27       assert.strictEqual(last(["1", 0], d3.descending), 0);
       
    28       assert.strictEqual(last(["2", "10"], d3.descending), "10");
       
    29       assert.strictEqual(last(["2", NaN, "10"], d3.descending), "10");
       
    30       assert.strictEqual(last([2, NaN, 10], d3.descending), 2);
       
    31     },
       
    32     "returns the last of equal values": function(last) {
       
    33       var a = new Object(), b = new Object(), c = new Object();
       
    34       assert.strictEqual(last([a, b, c], function() { return 0; }), c);
       
    35     },
       
    36     "returns undefined for an empty array": function(last) {
       
    37       assert.isUndefined(last([]));
       
    38     }
       
    39   }
       
    40 });
       
    41 
       
    42 suite.export(module);