molstar
Version:
A comprehensive macromolecular library.
43 lines • 2.88 kB
JavaScript
"use strict";
/**
* Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
Object.defineProperty(exports, "__esModule", { value: true });
var sorted_ranges_1 = require("../sorted-ranges");
var ordered_set_1 = require("../ordered-set");
var sorted_array_1 = require("../sorted-array");
describe('rangesArray', function () {
function test(name, a, b) {
it(name, function () { return expect(a).toEqual(b); });
}
function testIterator(name, ranges, set, expectedValues) {
it("iterator, " + name, function () {
var rangesIt = sorted_ranges_1.SortedRanges.transientSegments(ranges, set);
var index = expectedValues.index, start = expectedValues.start, end = expectedValues.end;
var i = 0;
while (rangesIt.hasNext) {
var segment = rangesIt.move();
expect(segment.index).toBe(index[i]);
expect(segment.start).toBe(start[i]);
expect(segment.end).toBe(end[i]);
++i;
}
expect(i).toBe(index.length);
});
}
var a1234 = sorted_ranges_1.SortedRanges.ofSortedRanges([1, 2, 3, 4]);
var a1134 = sorted_ranges_1.SortedRanges.ofSortedRanges([1, 1, 3, 4]);
test('size', sorted_ranges_1.SortedRanges.size(a1234), 4);
test('size', sorted_ranges_1.SortedRanges.size(a1134), 3);
test('min/max', [sorted_ranges_1.SortedRanges.min(a1234), sorted_ranges_1.SortedRanges.max(a1234)], [1, 4]);
test('start/end', [sorted_ranges_1.SortedRanges.start(a1234), sorted_ranges_1.SortedRanges.end(a1234)], [1, 5]);
testIterator('two ranges', sorted_ranges_1.SortedRanges.ofSortedRanges([1, 2, 3, 4]), ordered_set_1.OrderedSet.ofBounds(1, 5), { index: [0, 1], start: [0, 2], end: [2, 4] });
testIterator('first range', sorted_ranges_1.SortedRanges.ofSortedRanges([1, 2, 3, 4]), sorted_array_1.SortedArray.ofSortedArray([2]), { index: [0], start: [0], end: [1] });
testIterator('second range', sorted_ranges_1.SortedRanges.ofSortedRanges([1, 2, 3, 4]), sorted_array_1.SortedArray.ofSortedArray([4]), { index: [1], start: [0], end: [1] });
testIterator('set not in ranges', sorted_ranges_1.SortedRanges.ofSortedRanges([1, 2, 3, 4]), sorted_array_1.SortedArray.ofSortedArray([10]), { index: [], start: [], end: [] });
testIterator('set in second range and beyond', sorted_ranges_1.SortedRanges.ofSortedRanges([1, 2, 3, 4]), sorted_array_1.SortedArray.ofSortedArray([3, 10]), { index: [1], start: [0], end: [1] });
testIterator('length 1 range', sorted_ranges_1.SortedRanges.ofSortedRanges([1, 1, 3, 4]), sorted_array_1.SortedArray.ofSortedArray([0, 1, 10]), { index: [0], start: [1], end: [2] });
});
//# sourceMappingURL=sorted-ranges.spec.js.map