@tanishiking/aho-corasick
Version:
TypeScript implementation of the Aho-Corasick algorithm for efficient string matching
46 lines (45 loc) • 2.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var interval_1 = require("./interval");
var interval_node_1 = require("./interval-node");
describe('IntervalNode', function () {
describe('findOverlaps', function () {
var intervals = [
new interval_1.Interval(0, 2),
new interval_1.Interval(1, 3),
new interval_1.Interval(2, 4),
new interval_1.Interval(3, 5),
new interval_1.Interval(4, 6),
new interval_1.Interval(5, 7),
];
var node = new interval_node_1.IntervalNode(intervals);
// median = 3
test('left', function () {
var overlaps = node.findOverlaps(new interval_1.Interval(1, 2)).sort(function (a, b) { return a.start - b.start; });
expect(overlaps).toHaveLength(3);
expect(overlaps[0]).toEqual(new interval_1.Interval(0, 2));
expect(overlaps[1]).toEqual(new interval_1.Interval(1, 3));
expect(overlaps[2]).toEqual(new interval_1.Interval(2, 4));
});
test('right', function () {
var overlaps = node.findOverlaps(new interval_1.Interval(5, 6)).sort(function (a, b) { return a.start - b.start; });
expect(overlaps).toHaveLength(3);
expect(overlaps[0]).toEqual(new interval_1.Interval(3, 5));
expect(overlaps[1]).toEqual(new interval_1.Interval(4, 6));
expect(overlaps[2]).toEqual(new interval_1.Interval(5, 7));
});
test('interval', function () {
var overlaps = node.findOverlaps(new interval_1.Interval(1, 3)).sort(function (a, b) { return a.start - b.start; });
expect(overlaps).toHaveLength(3);
expect(overlaps[0]).toEqual(new interval_1.Interval(0, 2));
expect(overlaps[1]).toEqual(new interval_1.Interval(2, 4));
expect(overlaps[2]).toEqual(new interval_1.Interval(3, 5));
});
test('do not contains itself', function () {
var overlaps = node.findOverlaps(new interval_1.Interval(5, 7)).sort(function (a, b) { return a.start - b.start; });
expect(overlaps).toHaveLength(2);
expect(overlaps[0]).toEqual(new interval_1.Interval(3, 5));
expect(overlaps[1]).toEqual(new interval_1.Interval(4, 6));
});
});
});