range-test.js 1.78 KB

'use strict';

var main = require('../package.json').main;
var schedule = require('../' + main);

module.exports = {
  "step defaults to 1": function(test) {
    var range = new schedule.Range(2, 6);

    test.equals(1, range.step);

    test.done();
  },
  "when step is 1": {
    "setUp": function(done) {
      this.range = new schedule.Range(2, 6, 1);

      done();
    },
    "includes start value": function(test) {
      test.ok(this.range.contains(2));

      test.done();
    },
    "includes end value": function(test) {
      test.ok(this.range.contains(6));

      test.done();
    },
    "includes value between start and end": function(test) {
      test.ok(this.range.contains(3));

      test.done();
    },
    "excludes values outside of start and end": function(test) {
      test.ok(!this.range.contains(1));
      test.ok(!this.range.contains(7));

      test.done();
    }
  },
  "when step > 1": {
    "setUp": function(done) {
      this.range = new schedule.Range(2, 6, 2);

      done();
    },
    "includes start value": function(test) {
      test.ok(this.range.contains(2));

      test.done();
    },
    "excludes end value": function(test) {
      test.ok(!this.range.contains(6));

      test.done();
    },
    "includes value between start and end that is evenly divisible by step": function(test) {
      test.ok(this.range.contains(4));

      test.done();
    },
    "excludes value between start and end that is not evenly divisible by step": function(test) {
      test.ok(!this.range.contains(5));

      test.done();
    },
    "excludes values outside of start and end": function(test) {
      test.ok(!this.range.contains(1));
      test.ok(!this.range.contains(7));

      test.done();
    }
  }

};