toolkit/javascript/d3/test/core/last-test.js
changeset 47 c0b4a8b5a012
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolkit/javascript/d3/test/core/last-test.js	Thu Apr 10 14:20:23 2014 +0200
@@ -0,0 +1,42 @@
+require("../env");
+require("../../d3");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.last");
+
+suite.addBatch({
+  "last": {
+    topic: function() {
+      return d3.last;
+    },
+    "compares using natural order by default": function(last) {
+      assert.strictEqual(last([1, 0]), 1);
+      assert.strictEqual(last(["1", 0]), "1");
+      assert.strictEqual(last(["2", "10"]), "2");
+      assert.strictEqual(last(["2", NaN, "10"]), "2");
+      assert.strictEqual(last([2, NaN, 10]), 10);
+    },
+    "compares using optional comparator": function(last) {
+      var i = 0, aa, bb, o = new Object();
+      assert.strictEqual(last([1, o], function(a, b) { aa = a; bb = b; return ++i; }), 1);
+      assert.strictEqual(aa, 1);
+      assert.strictEqual(bb, o);
+      assert.strictEqual(last([1, 0], d3.descending), 0);
+      assert.strictEqual(last(["1", 0], d3.descending), 0);
+      assert.strictEqual(last(["2", "10"], d3.descending), "10");
+      assert.strictEqual(last(["2", NaN, "10"], d3.descending), "10");
+      assert.strictEqual(last([2, NaN, 10], d3.descending), 2);
+    },
+    "returns the last of equal values": function(last) {
+      var a = new Object(), b = new Object(), c = new Object();
+      assert.strictEqual(last([a, b, c], function() { return 0; }), c);
+    },
+    "returns undefined for an empty array": function(last) {
+      assert.isUndefined(last([]));
+    }
+  }
+});
+
+suite.export(module);