|
1 require("../env"); |
|
2 require("../../d3"); |
|
3 |
|
4 var vows = require("vows"), |
|
5 assert = require("assert"); |
|
6 |
|
7 var suite = vows.describe("d3.permute"); |
|
8 |
|
9 suite.addBatch({ |
|
10 "permute": { |
|
11 topic: function() { |
|
12 return d3.permute; |
|
13 }, |
|
14 "permutes according to the specified index": function(permute) { |
|
15 assert.deepEqual(permute([3, 4, 5], [2, 1, 0]), [5, 4, 3]); |
|
16 assert.deepEqual(permute([3, 4, 5], [2, 0, 1]), [5, 3, 4]); |
|
17 assert.deepEqual(permute([3, 4, 5], [0, 1, 2]), [3, 4, 5]); |
|
18 }, |
|
19 "does not modify the input array": function(permute) { |
|
20 var input = [3, 4, 5]; |
|
21 permute(input, [2, 1, 0]); |
|
22 assert.deepEqual(input, [3, 4, 5]); |
|
23 }, |
|
24 "can duplicate input values": function(permute) { |
|
25 assert.deepEqual(permute([3, 4, 5], [0, 1, 0]), [3, 4, 3]); |
|
26 assert.deepEqual(permute([3, 4, 5], [2, 2, 2]), [5, 5, 5]); |
|
27 assert.deepEqual(permute([3, 4, 5], [0, 1, 1]), [3, 4, 4]); |
|
28 }, |
|
29 "can return more elements": function(permute) { |
|
30 assert.deepEqual(permute([3, 4, 5], [0, 0, 1, 2]), [3, 3, 4, 5]); |
|
31 assert.deepEqual(permute([3, 4, 5], [0, 1, 1, 1]), [3, 4, 4, 4]); |
|
32 }, |
|
33 "can return fewer elements": function(permute) { |
|
34 assert.deepEqual(permute([3, 4, 5], [0]), [3]); |
|
35 assert.deepEqual(permute([3, 4, 5], [1, 2]), [4, 5]); |
|
36 assert.deepEqual(permute([3, 4, 5], []), []); |
|
37 }, |
|
38 "can return undefined elements": function(permute) { |
|
39 var v1 = permute([3, 4, 5], [10]); |
|
40 assert.equal(v1.length, 1); |
|
41 assert.isUndefined(v1[0]); |
|
42 var v2 = permute([3, 4, 5], [-1]); |
|
43 assert.equal(v2.length, 1); |
|
44 assert.isUndefined(v2[0]); |
|
45 var v3 = permute([3, 4, 5], [0, -1]); |
|
46 assert.equal(v3.length, 2); |
|
47 assert.equal(v3[0], 3); |
|
48 assert.isUndefined(v3[1]); |
|
49 } |
|
50 } |
|
51 }); |
|
52 |
|
53 suite.export(module); |