From f15c2951d08df58d37cbd048cf69216b6bd821b7 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Mon, 18 Feb 2013 21:13:49 +0100 Subject: [PATCH 1/2] Adding RTree tests --- test/spec/ol/structs/rtree.test.js | 62 ++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 test/spec/ol/structs/rtree.test.js diff --git a/test/spec/ol/structs/rtree.test.js b/test/spec/ol/structs/rtree.test.js new file mode 100644 index 0000000000..f307be320e --- /dev/null +++ b/test/spec/ol/structs/rtree.test.js @@ -0,0 +1,62 @@ +goog.provide('ol.test.structs.RTree'); + + +describe('ol.structs.RTree', function() { + + describe('put and find', function() { + var rTree = new ol.structs.RTree(); + rTree.put(new ol.Rectangle(0, 0, 1, 1), 1); + rTree.put(new ol.Rectangle(1, 1, 4, 4), 2); + rTree.put(new ol.Rectangle(2, 2, 3, 3), 3); + rTree.put(new ol.Rectangle(-5, -5, -4, -4), 4); + rTree.put(new ol.Rectangle(-4, -4, -1, -1), 5); + rTree.put(new ol.Rectangle(-3, -3, -2, -2), 6); + + it('stores items', function() { + expect(goog.object.getCount(rTree.find(new ol.Rectangle( + Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY, + Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY)))).toBe(6); + }); + + it('filters by rectangle', function() { + var result; + result = goog.object.getValues(rTree.find(new ol.Rectangle(2, 2, 3, 3))); + expect(result).toContain(2); + expect(result).toContain(3); + expect(result.length).toBe(2); + result = goog.object.getValues( + rTree.find(new ol.Rectangle(-1, -1, 2, 2))); + expect(result).toContain(1); + expect(result).toContain(2); + expect(result).toContain(3); + expect(result).toContain(5); + expect(result.length).toBe(4); + expect(goog.object.getCount(rTree.find(new ol.Rectangle(5, 5, 6, 6)))) + .toBe(0); + }); + + it('can store thosands of items and find fast', function() { + for (var i = 7; i <= 10000; ++i) { + rTree.put(new ol.Rectangle(Math.random() * -10, Math.random() * -10, + Math.random() * 10, Math.random() * 10), i); + } + expect(goog.object.getCount( + rTree.find(new ol.Rectangle(-10, -10, 10, 10)))).toBe(10000); + var result = rTree.find(new ol.Rectangle(0, 0, 0, 0)); + expect(goog.object.getCount(result)).toBe(9995); + var values = goog.object.getValues(result); + expect(values).toContain(1); + expect(values).not.toContain(2); + expect(values).not.toContain(3); + expect(values).not.toContain(4); + expect(values).not.toContain(5); + expect(values).not.toContain(6); + expect(values).toContain(7); + }); + + }); + +}); + +goog.require('ol.Rectangle'); +goog.require('ol.structs.RTree'); From f6c93d85b0a9d3a57cfdf5d332e664792495f8f2 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Tue, 19 Feb 2013 14:12:38 +0100 Subject: [PATCH 2/2] Making linter happy --- src/ol/renderer/canvas/canvasvectorlayerrenderer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js index 6d6e2a1aab..7801bd1cd9 100644 --- a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js +++ b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js @@ -200,7 +200,7 @@ ol.renderer.canvas.VectorLayer.prototype.renderFrame = if (goog.isNull(tileGrid)) { // lazy tile source creation to match the view projection tileGrid = ol.tilegrid.createForProjection( - view2DState.projection, + view2DState.projection, 22, // should be no harm in going big here - ideally, it would be ∞ new ol.Size(512, 512)); this.tileGrid_ = tileGrid;