diff -r efd9c589177a -r c0b4a8b5a012 toolkit/javascript/d3/test/core/range-test.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolkit/javascript/d3/test/core/range-test.js Thu Apr 10 14:20:23 2014 +0200 @@ -0,0 +1,93 @@ +require("../env"); +require("../../d3"); + +var vows = require("vows"), + assert = require("assert"); + +var suite = vows.describe("d3.range"); + +suite.addBatch({ + "range": { + topic: function() { + return d3.range; + }, + "start is an inclusive lower bound": function(range) { + assert.equal(range(5)[0], 0); + assert.equal(range(1, 5)[0], 1); + assert.equal(range(5, 1, -1)[0], 5); + }, + "stop is an exclusive upper bound": function(range) { + assert.equal(range(5)[4], 4); + assert.equal(range(1, 5)[3], 4); + assert.equal(range(5, 1, -1)[3], 2); + }, + "with one argument, returns integers [0 … stop)": function(range) { + assert.deepEqual(range(0), []); + assert.deepEqual(range(1), [0]); + assert.deepEqual(range(5), [0, 1, 2, 3, 4]); + }, + "with two arguments, returns integers [start … stop)": function(range) { + assert.deepEqual(range(0, 5), [0, 1, 2, 3, 4]); + assert.deepEqual(range(5, 9), [5, 6, 7, 8]); + }, + "with three arguments, returns start + k * step": function(range) { + assert.deepEqual(range(0, 5, 1), [0, 1, 2, 3, 4]); + assert.deepEqual(range(5, 9, .5), [5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5]); + assert.deepEqual(range(5, 8.5, .5), [5, 5.5, 6, 6.5, 7, 7.5, 8]); + assert.deepEqual(range(2, 0, -.5), [2, 1.5, 1, .5]); + }, + "returns an ascending range if step is positive": function(range) { + assert.deepEqual(range(0, 5, 1), [0, 1, 2, 3, 4]); + }, + "returns a descending range if step is negative": function(range) { + assert.deepEqual(range(5, 0, -1), [5, 4, 3, 2, 1]); + }, + "returns an empty range if start, stop or step are NaN": function(range) { + assert.isEmpty(range(0, NaN)); + assert.isEmpty(range(1, NaN)); + assert.isEmpty(range(-1, NaN)); + assert.isEmpty(range(0, undefined)); + assert.isEmpty(range(1, undefined)); + assert.isEmpty(range(-1, undefined)); + assert.isEmpty(range(NaN, 0)); + assert.isEmpty(range(NaN, 1)); + assert.isEmpty(range(NaN, -1)); + assert.isEmpty(range(undefined, 0)); + assert.isEmpty(range(undefined, 1)); + assert.isEmpty(range(undefined, -1)); + assert.isEmpty(range(NaN, NaN)); + assert.isEmpty(range(undefined, undefined)); + assert.isEmpty(range(NaN, NaN, NaN)); + assert.isEmpty(range(undefined, undefined, undefined)); + assert.isEmpty(range(0, 10, NaN)); + assert.isEmpty(range(10, 0, NaN)); + assert.isEmpty(range(0, 10, undefined)); + assert.isEmpty(range(10, 0, undefined)); + }, + "returns an empty range if start equals stop": function(range) { + assert.isEmpty(range(10, 10)); + assert.isEmpty(range(10, 10, 1)); + assert.isEmpty(range(10, 10, -1)); + assert.isEmpty(range(10, 10, -.5)); + assert.isEmpty(range(10, 10, .5)); + assert.isEmpty(range(0, 0)); + assert.isEmpty(range(0, 0, 1)); + assert.isEmpty(range(0, 0, -1)); + assert.isEmpty(range(0, 0, -.5)); + assert.isEmpty(range(0, 0, .5)); + }, + "returns an empty range if stop is less than start and step is positive": function(range) { + assert.isEmpty(range(20, 10)); + assert.isEmpty(range(20, 10, 2)); + assert.isEmpty(range(20, 10, 1)); + assert.isEmpty(range(20, 10, .5)); + }, + "returns an empty range if stop is greater than start and step is negative": function(range) { + assert.isEmpty(range(10, 20, -2)); + assert.isEmpty(range(10, 20, -1)); + assert.isEmpty(range(10, 20, -.5)); + } + } +}); + +suite.export(module);