Add tree test

This commit is contained in:
Ansis Brammanis
2013-02-13 14:40:37 -05:00
parent 9a4d4ab9c5
commit b80bbc1fbe
3 changed files with 19 additions and 3 deletions
+4 -2
View File
@@ -42,14 +42,16 @@ iD.History = function(context) {
merge: function(entities) {
var base = tree.graph(),
var base = stack[0].graph.base(),
newentities = Object.keys(entities).filter(function(i) {
return !base.entities.hasOwnProperty(i) && !base.entities[i];
return !base.entities[i];
});
for (var i = 0; i < stack.length; i++) {
stack[i].graph.rebase(entities);
}
tree.rebase(newentities);
dispatch.change();
+5 -1
View File
@@ -1,3 +1,5 @@
iD.Tree = function(graph) {
var rtree = new RTree(),
@@ -32,7 +34,9 @@ iD.Tree = function(graph) {
rebase: function(entities) {
for (var i = 0; i < entities.length; i++) {
insert(graph.entity(entities[i]), true);
if (!graph.hasOwnProperty(entities[i])) {
insert(graph.entity(entities[i]), true);
}
}
rebased = true;
return tree;
+10
View File
@@ -12,6 +12,16 @@ describe("iD.Tree", function() {
tree.rebase(['n']);
expect(tree.intersects(iD.geo.Extent([0, 0], [2, 2]), tree.graph())).to.eql([node]);
});
it("does not insert if entity has a modified version", function() {
var node = iD.Node({ id: 'n', loc: [1, 1]}),
node_ = node.update({ loc: [10, 10]}),
g = tree.graph().replace(node_);
expect(tree.intersects(iD.geo.Extent([9, 9], [11, 11]), g)).to.eql([node_]);
tree.graph().rebase({ 'n': node });
tree.rebase(['n']);
expect(tree.intersects(iD.geo.Extent([0, 0], [2, 2]), tree.graph())).to.eql([]);
});
});
describe("#intersects", function() {