rittenhop-ghost/versions/5.94.2/node_modules/discontinuous-range/test/main-test.js

97 lines
3.4 KiB
JavaScript
Raw Normal View History

var assert = require('assert');
var DRange = require('../index.js');
describe('add sets', function() {
it('should allow adding numbers', function () {
var drange = DRange(5);
assert.equal('[ 5 ]', drange.toString());
drange.add(6);
assert.equal('[ 5-6 ]', drange.toString());
drange.add(8);
assert.equal('[ 5-6, 8 ]', drange.toString());
drange.add(7);
assert.equal('[ 5-8 ]', drange.toString());
assert.equal(drange.length, 4);
});
it('should allow adding ranges of numbers', function () {
var drange = DRange(1,5);
assert.equal('[ 1-5 ]', drange.toString());
drange.add(6,10);
assert.equal('[ 1-10 ]', drange.toString());
drange.add(15,20);
assert.equal('[ 1-10, 15-20 ]', drange.toString());
drange.add(0,14);
assert.equal('[ 0-20 ]', drange.toString());
assert.equal(drange.length, 21);
});
it('should allow adding another DiscontinuousRange', function () {
var drange = DRange(1,5);
drange.add(15,20);
var erange = DRange(6);
erange.add(17, 30);
drange.add(erange);
assert.equal('[ 1-6, 15-30 ]', drange.toString());
assert.equal(drange.length, 22);
});
});
describe('subtract sets', function() {
it('should allow subtracting numbers', function () {
var drange = DRange(1, 10);
drange.subtract(5);
assert.equal('[ 1-4, 6-10 ]', drange.toString());
drange.subtract(7);
assert.equal('[ 1-4, 6, 8-10 ]', drange.toString());
drange.subtract(6);
assert.equal('[ 1-4, 8-10 ]', drange.toString());
assert.equal(drange.length, 7);
});
it('should allow subtracting ranges of numbers', function () {
var drange = DRange(1, 100);
drange.subtract(5, 15);
assert.equal('[ 1-4, 16-100 ]', drange.toString());
drange.subtract(90, 200);
assert.equal('[ 1-4, 16-89 ]', drange.toString());
assert.equal(drange.length, 78);
});
it('should allow subtracting another DiscontinuousRange', function () {
var drange = DRange(0,100);
var erange = DRange(6);
erange.add(17, 30);
drange.subtract(erange);
assert.equal('[ 0-5, 7-16, 31-100 ]', drange.toString());
assert.equal(drange.length, 86);
});
});
describe('index sets', function() {
it('should appropriately retrieve numbers in range by index', function () {
var drange = DRange(0, 9);
drange.add(20, 29);
drange.add(40, 49);
assert.equal(drange.index(5), 5);
assert.equal(drange.index(15), 25);
assert.equal(drange.index(25), 45);
assert.equal(drange.length, 30);
});
});
describe('clone sets', function() {
it('should be able to clone a DiscontinuousRange that doesn\'t affect the original', function () {
var drange = DRange(0, 9);
var erange = drange.clone();
erange.subtract(5);
assert.equal('[ 0-9 ]', drange.toString());
assert.equal('[ 0-4, 6-9 ]', erange.toString());
});
});
var all_numbers = new DRange(1, 100);
var bad_numbers = DRange(13).add(8).add(60,80);
var good_numbers = all_numbers.clone().subtract(bad_numbers);
console.log(good_numbers.toString());
var random_good_number = good_numbers.index(Math.floor(Math.random() * good_numbers.length));
console.log(random_good_number);