|
1 require("../env"); |
|
2 require("../../d3"); |
|
3 |
|
4 var vows = require("vows"), |
|
5 assert = require("assert"); |
|
6 |
|
7 var suite = vows.describe("d3.range"); |
|
8 |
|
9 suite.addBatch({ |
|
10 "range": { |
|
11 topic: function() { |
|
12 return d3.range; |
|
13 }, |
|
14 "start is an inclusive lower bound": function(range) { |
|
15 assert.equal(range(5)[0], 0); |
|
16 assert.equal(range(1, 5)[0], 1); |
|
17 assert.equal(range(5, 1, -1)[0], 5); |
|
18 }, |
|
19 "stop is an exclusive upper bound": function(range) { |
|
20 assert.equal(range(5)[4], 4); |
|
21 assert.equal(range(1, 5)[3], 4); |
|
22 assert.equal(range(5, 1, -1)[3], 2); |
|
23 }, |
|
24 "with one argument, returns integers [0 … stop)": function(range) { |
|
25 assert.deepEqual(range(0), []); |
|
26 assert.deepEqual(range(1), [0]); |
|
27 assert.deepEqual(range(5), [0, 1, 2, 3, 4]); |
|
28 }, |
|
29 "with two arguments, returns integers [start … stop)": function(range) { |
|
30 assert.deepEqual(range(0, 5), [0, 1, 2, 3, 4]); |
|
31 assert.deepEqual(range(5, 9), [5, 6, 7, 8]); |
|
32 }, |
|
33 "with three arguments, returns start + k * step": function(range) { |
|
34 assert.deepEqual(range(0, 5, 1), [0, 1, 2, 3, 4]); |
|
35 assert.deepEqual(range(5, 9, .5), [5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5]); |
|
36 assert.deepEqual(range(5, 8.5, .5), [5, 5.5, 6, 6.5, 7, 7.5, 8]); |
|
37 assert.deepEqual(range(2, 0, -.5), [2, 1.5, 1, .5]); |
|
38 }, |
|
39 "returns an ascending range if step is positive": function(range) { |
|
40 assert.deepEqual(range(0, 5, 1), [0, 1, 2, 3, 4]); |
|
41 }, |
|
42 "returns a descending range if step is negative": function(range) { |
|
43 assert.deepEqual(range(5, 0, -1), [5, 4, 3, 2, 1]); |
|
44 }, |
|
45 "returns an empty range if start, stop or step are NaN": function(range) { |
|
46 assert.isEmpty(range(0, NaN)); |
|
47 assert.isEmpty(range(1, NaN)); |
|
48 assert.isEmpty(range(-1, NaN)); |
|
49 assert.isEmpty(range(0, undefined)); |
|
50 assert.isEmpty(range(1, undefined)); |
|
51 assert.isEmpty(range(-1, undefined)); |
|
52 assert.isEmpty(range(NaN, 0)); |
|
53 assert.isEmpty(range(NaN, 1)); |
|
54 assert.isEmpty(range(NaN, -1)); |
|
55 assert.isEmpty(range(undefined, 0)); |
|
56 assert.isEmpty(range(undefined, 1)); |
|
57 assert.isEmpty(range(undefined, -1)); |
|
58 assert.isEmpty(range(NaN, NaN)); |
|
59 assert.isEmpty(range(undefined, undefined)); |
|
60 assert.isEmpty(range(NaN, NaN, NaN)); |
|
61 assert.isEmpty(range(undefined, undefined, undefined)); |
|
62 assert.isEmpty(range(0, 10, NaN)); |
|
63 assert.isEmpty(range(10, 0, NaN)); |
|
64 assert.isEmpty(range(0, 10, undefined)); |
|
65 assert.isEmpty(range(10, 0, undefined)); |
|
66 }, |
|
67 "returns an empty range if start equals stop": function(range) { |
|
68 assert.isEmpty(range(10, 10)); |
|
69 assert.isEmpty(range(10, 10, 1)); |
|
70 assert.isEmpty(range(10, 10, -1)); |
|
71 assert.isEmpty(range(10, 10, -.5)); |
|
72 assert.isEmpty(range(10, 10, .5)); |
|
73 assert.isEmpty(range(0, 0)); |
|
74 assert.isEmpty(range(0, 0, 1)); |
|
75 assert.isEmpty(range(0, 0, -1)); |
|
76 assert.isEmpty(range(0, 0, -.5)); |
|
77 assert.isEmpty(range(0, 0, .5)); |
|
78 }, |
|
79 "returns an empty range if stop is less than start and step is positive": function(range) { |
|
80 assert.isEmpty(range(20, 10)); |
|
81 assert.isEmpty(range(20, 10, 2)); |
|
82 assert.isEmpty(range(20, 10, 1)); |
|
83 assert.isEmpty(range(20, 10, .5)); |
|
84 }, |
|
85 "returns an empty range if stop is greater than start and step is negative": function(range) { |
|
86 assert.isEmpty(range(10, 20, -2)); |
|
87 assert.isEmpty(range(10, 20, -1)); |
|
88 assert.isEmpty(range(10, 20, -.5)); |
|
89 } |
|
90 } |
|
91 }); |
|
92 |
|
93 suite.export(module); |