toolkit/javascript/d3/test/core/range-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.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);