From 658953b130a091478006c8a1a800e4cdf203474f Mon Sep 17 00:00:00 2001 From: ahocevar Date: Mon, 15 Sep 2008 11:51:50 +0000 Subject: [PATCH] Fixed fatal typo that broke getComponentString when working with two-point geometries. Added tests to check that everything works as expected now. r=pagameba (pullup #1730) git-svn-id: http://svn.openlayers.org/trunk/openlayers@8016 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Renderer/SVG.js | 2 +- tests/Renderer/SVG.html | 23 ++++++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/OpenLayers/Renderer/SVG.js b/lib/OpenLayers/Renderer/SVG.js index 807c09973a..dddabda2fd 100644 --- a/lib/OpenLayers/Renderer/SVG.js +++ b/lib/OpenLayers/Renderer/SVG.js @@ -661,7 +661,7 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, { // If so, add the coordinate of the intersection with the // valid range bounds. if (i > 0) { - if (this.getShortString(components[i + 1])) { + if (this.getShortString(components[i - 1])) { strings.push(this.clipLine(components[i], components[i-1])); } diff --git a/tests/Renderer/SVG.html b/tests/Renderer/SVG.html index 79f6963feb..b9a15c9823 100644 --- a/tests/Renderer/SVG.html +++ b/tests/Renderer/SVG.html @@ -437,7 +437,7 @@ return; } - t.plan(1); + t.plan(3); var r = new OpenLayers.Renderer.SVG(document.body); r.setSize(new OpenLayers.Size(0, 0)); @@ -448,16 +448,29 @@ } r.setExtent(new OpenLayers.Bounds(0, 0, 0, 0)); + var node = document.createElement('div'); + var geometry = new OpenLayers.Geometry.LineString([ new OpenLayers.Geometry.Point(0, -5000), new OpenLayers.Geometry.Point(10000, 0), new OpenLayers.Geometry.Point(0, 5000) ]); - - var node = document.createElement('div'); - r.drawLineString(node, geometry); - t.eq(node.getAttribute("points"), "0,10000,15000,2500,15000,-2500,0,-10000", "Geometry correctly clipped at inValidRange bounds"); + t.eq(node.getAttribute("points"), "0,10000,15000,2500,15000,-2500,0,-10000", "Line with 3 points correctly clipped at inValidRange bounds"); + + geometry = new OpenLayers.Geometry.LineString([ + new OpenLayers.Geometry.Point(0, -5000), + new OpenLayers.Geometry.Point(10000, 0) + ]); + r.drawLineString(node, geometry); + t.eq(node.getAttribute("points"), "0,10000,15000,2500", "2-point line with 2nd point outside range correctly clipped at inValidRange bounds"); + + var geometry = new OpenLayers.Geometry.LineString([ + new OpenLayers.Geometry.Point(10000, 0), + new OpenLayers.Geometry.Point(0, 5000) + ]); + r.drawLineString(node, geometry); + t.eq(node.getAttribute("points"), "15000,-2500,0,-10000", "2-point line with 1st point outside range correctly clipped at inValidRange bounds"); }