UNPKG

molstar

Version:

A comprehensive macromolecular library.

41 lines 2.47 kB
/** * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ import { SortedRanges } from '../sorted-ranges'; import { OrderedSet } from '../ordered-set'; import { SortedArray } from '../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 = 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 = SortedRanges.ofSortedRanges([1, 2, 3, 4]); var a1134 = SortedRanges.ofSortedRanges([1, 1, 3, 4]); test('size', SortedRanges.size(a1234), 4); test('size', SortedRanges.size(a1134), 3); test('min/max', [SortedRanges.min(a1234), SortedRanges.max(a1234)], [1, 4]); test('start/end', [SortedRanges.start(a1234), SortedRanges.end(a1234)], [1, 5]); testIterator('two ranges', SortedRanges.ofSortedRanges([1, 2, 3, 4]), OrderedSet.ofBounds(1, 5), { index: [0, 1], start: [0, 2], end: [2, 4] }); testIterator('first range', SortedRanges.ofSortedRanges([1, 2, 3, 4]), SortedArray.ofSortedArray([2]), { index: [0], start: [0], end: [1] }); testIterator('second range', SortedRanges.ofSortedRanges([1, 2, 3, 4]), SortedArray.ofSortedArray([4]), { index: [1], start: [0], end: [1] }); testIterator('set not in ranges', SortedRanges.ofSortedRanges([1, 2, 3, 4]), SortedArray.ofSortedArray([10]), { index: [], start: [], end: [] }); testIterator('set in second range and beyond', SortedRanges.ofSortedRanges([1, 2, 3, 4]), SortedArray.ofSortedArray([3, 10]), { index: [1], start: [0], end: [1] }); testIterator('length 1 range', SortedRanges.ofSortedRanges([1, 1, 3, 4]), SortedArray.ofSortedArray([0, 1, 10]), { index: [0], start: [1], end: [2] }); }); //# sourceMappingURL=sorted-ranges.spec.js.map