Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b61a63b

Browse files
authored
Merge pull request mgechev#114 from pkerpedjiev/master
Fix for Issue mgechev#112 (interval-tree bug)
2 parents 2ede1f3 + 5870065 commit b61a63b

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

src/data-structures/interval-tree.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676

7777
function addNode(node, side, interval) {
7878
var child = new exports.Node(interval[0], interval[1]);
79+
child.max = interval[1];
7980
child.parentNode = node;
8081
node[side] = child;
8182
if (node.max < interval[1]) {
@@ -113,6 +114,7 @@
113114
exports.IntervalTree.prototype.add = function (interval) {
114115
if (!this.root) {
115116
this.root = new exports.Node(interval[0], interval[1]);
117+
this.root.max = interval[1];
116118
return;
117119
}
118120
addHelper(this.root, interval);
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
'use strict';
2+
3+
var mod = require('../../src/data-structures/interval-tree.js');
4+
var IntervalTree = mod.IntervalTree;
5+
6+
describe('IntervalTree', function () {
7+
it('should correctly detect intersections', function () {
8+
var it = new IntervalTree();
9+
10+
it.add([10383734, 10594186])
11+
it.add([10383734, 10594186])
12+
it.add([8891125, 9095610])
13+
it.add([9495571, 9677853])
14+
it.add([10093457, 10257167])
15+
it.add([9303743, 9404967])
16+
it.intersects([9303743, 9303744])
17+
expect(it.intersects([9303743, 9303744])).toBe(true)
18+
expect(it.intersects([10383734, 10383734])).toBe(true);
19+
20+
it.add([9495571, 9677853])
21+
it.add([9303743, 9404967])
22+
23+
expect(it.intersects([9303743, 9303744])).toBe(true)
24+
expect(it.intersects([9303742, 9303742])).toBe(false)
25+
26+
expect(it.intersects([9404967,9404967])).toBe(true)
27+
expect(it.intersects([9404968,9404969])).toBe(false)
28+
29+
it = new IntervalTree();
30+
31+
expect(it.intersects([1,2])).toBe(false);
32+
33+
it.add([1,2]);
34+
expect(it.contains(0.4)).toBe(false);
35+
expect(it.contains(1.4)).toBe(true);
36+
37+
expect(it.intersects([0,3])).toBe(true);
38+
expect(it.intersects([1.5,1.6])).toBe(true);
39+
expect(it.intersects([2.1,3.0])).toBe(false);
40+
41+
it.add([1.4,2.1]);
42+
43+
expect(it.intersects([0,3])).toBe(true);
44+
expect(it.intersects([1.5,1.6])).toBe(true);
45+
46+
expect(it.intersects([2.1,3.0])).toBe(true);
47+
});
48+
});

0 commit comments

Comments
 (0)