'use strict'; const { mod, Range, Core } = require('./core.js'); test('ranges overlap correctly', () => { const a = new Range(7, 1, 8); const b = new Range(0, 2, 8); const c = new Range(3, 5, 8); expect(a.overlaps(a)).toBe(true); expect(b.overlaps(b)).toBe(true); expect(c.overlaps(c)).toBe(true); expect(a.overlaps(b)).toBe(true); expect(b.overlaps(a)).toBe(true); expect(a.overlaps(c)).toBe(false); expect(b.overlaps(c)).toBe(false); expect(c.overlaps(a)).toBe(false); expect(c.overlaps(b)).toBe(false); }); test('get non-overlapping ranges in a core', () => { const CORESIZE = 8000; const core = new Core(CORESIZE); for (let loop=0; loop<500; loop++) { const ranges = core.getRanges([20, 10, 5, 5]); expect(ranges.length).toBe(4); expect(mod(ranges[0].end - ranges[0].start + 1, CORESIZE)).toBe(20); expect(mod(ranges[1].end - ranges[1].start + 1, CORESIZE)).toBe(10); expect(mod(ranges[2].end - ranges[2].start + 1, CORESIZE)).toBe(5); expect(mod(ranges[3].end - ranges[3].start + 1, CORESIZE)).toBe(5); for (let i=0; i