toolkit/javascript/d3/test/core/permute-test.js
changeset 47 c0b4a8b5a012
equal deleted inserted replaced
46:efd9c589177a 47:c0b4a8b5a012
       
     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);