The branch, master has been updated via 136921c9cd6deb049de02868a2d0231f9652a788 (commit) via 361544ecf7eb0bc988c8e5808ed65fc5f4d9dfed (commit) via 98a770b415007e5320b3972b73c76aae26e69aa8 (commit) via 936461597eb279034f01143b635260e2eb1c51ca (commit) via 9b007f992029e37e8e2ac1e0bd4f239f54961c07 (commit) from 9e566cdd350cd2516447f1a453a7e3bbca53f223 (commit)
- Log ----------------------------------------------------------------- commit 136921c9cd6deb049de02868a2d0231f9652a788 Merge: 361544e 9e566cd Author: Madhura Jayaratne madhura.cj@gmail.com Date: Wed Aug 24 10:01:46 2011 +0530
Merge branch 'master' of ssh://phpmyadmin.git.sourceforge.net/gitroot/phpmyadmin/phpmyadmin
commit 361544ecf7eb0bc988c8e5808ed65fc5f4d9dfed Author: Madhura Jayaratne madhura.cj@gmail.com Date: Wed Aug 24 10:00:35 2011 +0530
Take common code to PMA_GIS_GeomTest class
commit 98a770b415007e5320b3972b73c76aae26e69aa8 Author: Madhura Jayaratne madhura.cj@gmail.com Date: Wed Aug 24 09:58:00 2011 +0530
More tests for scaleRow method
commit 936461597eb279034f01143b635260e2eb1c51ca Author: Madhura Jayaratne madhura.cj@gmail.com Date: Wed Aug 24 09:51:44 2011 +0530
tests for scaleRow method
commit 9b007f992029e37e8e2ac1e0bd4f239f54961c07 Author: Madhura Jayaratne madhura.cj@gmail.com Date: Wed Aug 24 09:40:08 2011 +0530
Min-max calculation for polygons needs not consider inner rings
-----------------------------------------------------------------------
Summary of changes: libraries/gis/pma_gis_multipolygon.php | 18 ++++-------- libraries/gis/pma_gis_polygon.php | 19 +++---------- test/classes/gis/PMA_GIS_Geom_test.php | 14 ++++++++++ test/classes/gis/PMA_GIS_Linestring_test.php | 14 ---------- test/classes/gis/PMA_GIS_Multilinestring_test.php | 20 ++++++++++++++ test/classes/gis/PMA_GIS_Multipoint_test.php | 20 ++++++++++++++ test/classes/gis/PMA_GIS_Multipolygon_test.php | 20 ++++++++++++++ test/classes/gis/PMA_GIS_Point_test.php | 20 ++++++++++++++ test/classes/gis/PMA_GIS_Polygon_test.php | 29 +++++++++++++++++++++ 9 files changed, 134 insertions(+), 40 deletions(-)
diff --git a/libraries/gis/pma_gis_multipolygon.php b/libraries/gis/pma_gis_multipolygon.php index d04ccde..4932eb5 100644 --- a/libraries/gis/pma_gis_multipolygon.php +++ b/libraries/gis/pma_gis_multipolygon.php @@ -48,21 +48,15 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry $polygons = explode(")),((", $multipolygon);
foreach ($polygons as $polygon) { - // If the polygon doesnt have an inner polygon + // If the polygon doesn't have an inner ring, use polygon itself if (strpos($polygon, "),(") === false) { - $min_max = $this->setMinMax($polygon, $min_max); + $ring = $polygon; } else { - // Seperate outer and inner polygons + // Seperate outer ring and use it to determin min-max $parts = explode("),(", $polygon); - $outer = $parts[0]; - $inner = array_slice($parts, 1); - - $min_max = $this->setMinMax($outer, $min_max); - - foreach ($inner as $inner_poly) { - $min_max = $this->setMinMax($inner_poly, $min_max); - } + $ring = $parts[0]; } + $min_max = $this->setMinMax($ring, $min_max); }
return $min_max; @@ -374,7 +368,7 @@ class PMA_GIS_Multipolygon extends PMA_GIS_Geometry // Determines whether each line ring is an inner ring or an outer ring. // If it's an inner ring get a point on the surface which can be used to // correctly classify inner rings to their respective outer rings. - include_once './libraries/gis/pma_gis_polygon.php'; + include_once 'libraries/gis/pma_gis_polygon.php'; foreach ($row_data['parts'] as $i => $ring) { $row_data['parts'][$i]['isOuter'] = PMA_GIS_Polygon::isOuterRing($ring['points']); } diff --git a/libraries/gis/pma_gis_polygon.php b/libraries/gis/pma_gis_polygon.php index 8f461ad..b8594aa 100644 --- a/libraries/gis/pma_gis_polygon.php +++ b/libraries/gis/pma_gis_polygon.php @@ -40,27 +40,18 @@ class PMA_GIS_Polygon extends PMA_GIS_Geometry */ public function scaleRow($spatial) { - $min_max = array(); - // Trim to remove leading 'POLYGON((' and trailing '))' $polygon = substr($spatial, 9, (strlen($spatial) - 11));
- // If the polygon doesnt have an inner polygon + // If the polygon doesn't have an inner ring, use polygon itself if (strpos($polygon, "),(") === false) { - $min_max = $this->setMinMax($polygon, $min_max); + $ring = $polygon; } else { - // Seperate outer and inner polygons + // Seperate outer ring and use it to determin min-max $parts = explode("),(", $polygon); - $outer = $parts[0]; - $inner = array_slice($parts, 1); - - $min_max = $this->setMinMax($outer, $min_max); - - foreach ($inner as $inner_poly) { - $min_max = $this->setMinMax($inner_poly, $min_max); - } + $ring = $parts[0]; } - return $min_max; + return $this->setMinMax($ring, array()); }
/** diff --git a/test/classes/gis/PMA_GIS_Geom_test.php b/test/classes/gis/PMA_GIS_Geom_test.php index d7637eb..8176a92 100644 --- a/test/classes/gis/PMA_GIS_Geom_test.php +++ b/test/classes/gis/PMA_GIS_Geom_test.php @@ -56,5 +56,19 @@ abstract class PMA_GIS_GeomTest extends PHPUnit_Framework_TestCase ); } } + + /** + * test scaleRow method + * + * @param string $spatial spatial data of a row + * @param array $min_max expected results + * + * @dataProvider providerForTestScaleRow + * @return nothing + */ + public function testScaleRow($spatial, $min_max) + { + $this->assertEquals($this->object->scaleRow($spatial), $min_max); + } } ?> \ No newline at end of file diff --git a/test/classes/gis/PMA_GIS_Linestring_test.php b/test/classes/gis/PMA_GIS_Linestring_test.php index 05413e1..76bfe05 100644 --- a/test/classes/gis/PMA_GIS_Linestring_test.php +++ b/test/classes/gis/PMA_GIS_Linestring_test.php @@ -140,20 +140,6 @@ class PMA_GIS_LinestringTest extends PMA_GIS_GeomTest }
/** - * test scaleRow method - * - * @param string $spatial spatial data of a row - * @param array $min_max expected results - * - * @dataProvider providerForTestScaleRow - * @return nothing - */ - public function testScaleRow($spatial, $min_max) - { - $this->assertEquals($this->object->scaleRow($spatial), $min_max); - } - - /** * data provider for testScaleRow * * @return data for testScaleRow diff --git a/test/classes/gis/PMA_GIS_Multilinestring_test.php b/test/classes/gis/PMA_GIS_Multilinestring_test.php index a0ab50f..636c028 100644 --- a/test/classes/gis/PMA_GIS_Multilinestring_test.php +++ b/test/classes/gis/PMA_GIS_Multilinestring_test.php @@ -198,5 +198,25 @@ class PMA_GIS_MultilinestringTest extends PMA_GIS_GeomTest ) ); } + + /** + * data provider for testScaleRow + * + * @return data for testScaleRow + */ + public function providerForTestScaleRow() + { + return array( + array( + 'MULTILINESTRING((36 14,47 23,62 75),(36 10,17 23,178 53))', + array( + 'minX' => 17, + 'maxX' => 178, + 'minY' => 10, + 'maxY' => 75 + ) + ) + ); + } } ?> \ No newline at end of file diff --git a/test/classes/gis/PMA_GIS_Multipoint_test.php b/test/classes/gis/PMA_GIS_Multipoint_test.php index 1d5fcdf..57b7594 100644 --- a/test/classes/gis/PMA_GIS_Multipoint_test.php +++ b/test/classes/gis/PMA_GIS_Multipoint_test.php @@ -142,5 +142,25 @@ class PMA_GIS_MultipointTest extends PMA_GIS_GeomTest ) ); } + + /** + * data provider for testScaleRow + * + * @return data for testScaleRow + */ + public function providerForTestScaleRow() + { + return array( + array( + 'MULTIPOINT(12 35,48 75,69 23,25 45,14 53,35 78)', + array( + 'minX' => 12, + 'maxX' => 69, + 'minY' => 23, + 'maxY' => 78 + ) + ) + ); + } } ?> \ No newline at end of file diff --git a/test/classes/gis/PMA_GIS_Multipolygon_test.php b/test/classes/gis/PMA_GIS_Multipolygon_test.php index 1589f9d..6e92e86 100644 --- a/test/classes/gis/PMA_GIS_Multipolygon_test.php +++ b/test/classes/gis/PMA_GIS_Multipolygon_test.php @@ -226,5 +226,25 @@ class PMA_GIS_MultipolygonTest extends PMA_GIS_GeomTest ) ); } + + /** + * data provider for testScaleRow + * + * @return data for testScaleRow + */ + public function providerForTestScaleRow() + { + return array( + array( + 'MULTIPOLYGON(((136 40,147 83,16 75,136 40)),((105 0,56 20,78 73,105 0)))', + array( + 'minX' => 16, + 'maxX' => 147, + 'minY' => 0, + 'maxY' => 83 + ) + ) + ); + } } ?> diff --git a/test/classes/gis/PMA_GIS_Point_test.php b/test/classes/gis/PMA_GIS_Point_test.php index 9f9ef21..bca1e4c 100644 --- a/test/classes/gis/PMA_GIS_Point_test.php +++ b/test/classes/gis/PMA_GIS_Point_test.php @@ -144,5 +144,25 @@ class PMA_GIS_PointTest extends PMA_GIS_GeomTest ) ); } + + /** + * data provider for testScaleRow + * + * @return data for testScaleRow + */ + public function providerForTestScaleRow() + { + return array( + array( + 'POINT(12 35)', + array( + 'minX' => 12, + 'maxX' => 12, + 'minY' => 35, + 'maxY' => 35, + ) + ) + ); + } } ?> \ No newline at end of file diff --git a/test/classes/gis/PMA_GIS_Polygon_test.php b/test/classes/gis/PMA_GIS_Polygon_test.php index e4941d3..0686295 100644 --- a/test/classes/gis/PMA_GIS_Polygon_test.php +++ b/test/classes/gis/PMA_GIS_Polygon_test.php @@ -315,5 +315,34 @@ class PMA_GIS_PolygonTest extends PMA_GIS_GeomTest ) ); } + + /** + * data provider for testScaleRow + * + * @return data for testScaleRow + */ + public function providerForTestScaleRow() + { + return array( + array( + 'POLYGON((123 0,23 30,17 63,123 0))', + array( + 'minX' => 17, + 'maxX' => 123, + 'minY' => 0, + 'maxY' => 63, + ) + ), + array( + 'POLYGON((35 10,10 20,15 40,45 45,35 10),(20 30,35 32,30 20,20 30)))', + array( + 'minX' => 10, + 'maxX' => 45, + 'minY' => 10, + 'maxY' => 45 + ) + ), + ); + } } ?> \ No newline at end of file
hooks/post-receive