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