|
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); |