From 3169d5325e9a8a19fec2d06461f79186df53458d Mon Sep 17 00:00:00 2001 From: Gwendolen Lynch Date: Tue, 5 Mar 2024 03:33:52 +0100 Subject: [PATCH 1/9] Docker set-up for PostGIS 3.2, 3.3 & 3.4 --- docker/docker-compose.yml | 30 ++++++++++++++++++++++++++++++ docker/run-13-32.sh | 11 +++++++++++ docker/run-13-33.sh | 11 +++++++++++ docker/run-13-34.sh | 11 +++++++++++ 4 files changed, 63 insertions(+) create mode 100755 docker/run-13-32.sh create mode 100755 docker/run-13-33.sh create mode 100755 docker/run-13-34.sh diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 590d099c..e004d9ab 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -43,6 +43,27 @@ services: networks: - db-13-31 + db-13-32: + image: postgis/postgis:13-3.2-alpine + environment: + POSTGRES_PASSWORD: postgres + networks: + - db-13-32 + + db-13-33: + image: postgis/postgis:13-3.3-alpine + environment: + POSTGRES_PASSWORD: postgres + networks: + - db-13-33 + + db-13-34: + image: postgis/postgis:13-3.4-alpine + environment: + POSTGRES_PASSWORD: postgres + networks: + - db-13-34 + networks: db-11-30: name: doctrine-postgis-11-30 @@ -62,3 +83,12 @@ networks: db-13-31: name: doctrine-postgis-13-31 driver: bridge + db-13-32: + name: doctrine-postgis-13-32 + driver: bridge + db-13-33: + name: doctrine-postgis-13-33 + driver: bridge + db-13-34: + name: doctrine-postgis-13-34 + driver: bridge diff --git a/docker/run-13-32.sh b/docker/run-13-32.sh new file mode 100755 index 00000000..37ac538b --- /dev/null +++ b/docker/run-13-32.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +echo " +Running with: + +* Postgres 13 +* PostGIS 3.2 +" + +docker run -it --rm --network doctrine-postgis-13-32 -e DB_HOST=db-13-32 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-13-33.sh b/docker/run-13-33.sh new file mode 100755 index 00000000..a11b3b53 --- /dev/null +++ b/docker/run-13-33.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +echo " +Running with: + +* Postgres 13 +* PostGIS 3.3 +" + +docker run -it --rm --network doctrine-postgis-13-33 -e DB_HOST=db-13-33 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-13-34.sh b/docker/run-13-34.sh new file mode 100755 index 00000000..9489906b --- /dev/null +++ b/docker/run-13-34.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +echo " +Running with: + +* Postgres 13 +* PostGIS 3.4 +" + +docker run -it --rm --network doctrine-postgis-13-34 -e DB_HOST=db-13-34 -v "${PWD}":/app doctrine-postgis-php "$@" From cb80b93cec9f32e7828ef1bbb0247005b001d565 Mon Sep 17 00:00:00 2001 From: Gwendolen Lynch Date: Tue, 5 Mar 2024 11:44:21 +0100 Subject: [PATCH 2/9] Versioned groups generation --- tools/generate-functions.php | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tools/generate-functions.php b/tools/generate-functions.php index 11c8e16e..afd79426 100644 --- a/tools/generate-functions.php +++ b/tools/generate-functions.php @@ -265,6 +265,45 @@ public static function configure(Configuration $configuration): void return ob_get_clean(); } +function normalize_versioned_groups(array $queries): array +{ + $postGisVersions = ['3.0', '3.1', '3.2', '3.3', '3.4']; + + $queryGroups = []; + foreach ($queries as $query) { + if (!isset($query['groups'])) { + continue; + } + foreach ($query['groups'] as $group) { + $version = str_replace('postgis-', '', $group); + if (in_array($version, $postGisVersions, true)) { + $queryGroups[$version] = $version; + } + } + } + rsort($queryGroups, SORT_NUMERIC); + + $highest = reset($queryGroups); + if (false === $highest) { + return $queries; + } + + $needed = array_map(fn ($v) => "postgis-$v", array_filter($postGisVersions, fn ($v) => $v > $highest)); + foreach ($queries as &$query) { + if (!isset($query['groups'])) { + continue; + } + foreach ($query['groups'] as $group) { + if ($group === "postgis-$highest") { + $query['groups'] = [...$query['groups'], ...$needed]; + } + } + $query['groups'][] = 'versioned'; + } + + return $queries; +} + foreach ($functions as $name => $options) { $srcFile = $srcPath . '/' . $name . '.php'; $testFile = $testPath . '/' . $name . 'Test.php'; @@ -273,6 +312,8 @@ public static function configure(Configuration $configuration): void $options = array_replace_recursive($functions[$options['alias_for']], $options); } + $options['tests']['queries'] = normalize_versioned_groups($options['tests']['queries']); + file_put_contents($srcFile, " Date: Tue, 5 Mar 2024 11:54:07 +0100 Subject: [PATCH 3/9] PostGIS 3.2 tests --- tools/functions/geometry-editors.php | 7 +++++++ tools/functions/geometry-processing.php | 14 ++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/tools/functions/geometry-editors.php b/tools/functions/geometry-editors.php index 5240ea3d..eb2e9e61 100644 --- a/tools/functions/geometry-editors.php +++ b/tools/functions/geometry-editors.php @@ -141,6 +141,13 @@ 'value' => 'POLYGON((-71.1776848522251 42.39028965129018,-71.17768437663261 42.390382947800894,-71.17758443054647 42.39038266779171,-71.17758259272304 42.3902893647987,-71.1776848522251 42.39028965129018))', ], ], + [ + 'groups' => ['postgis-3.2'], + 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,743238 2967416))',2249),4326)) AS value", + 'result' => [ + 'value' => 'POLYGON((-71.1776848522251 42.3902896512903,-71.17768437663261 42.390382947801015,-71.17758443054647 42.390382667791854,-71.17758259272304 42.390289364798825,-71.1776848522251 42.3902896512903))', + ], + ], ], ], ], diff --git a/tools/functions/geometry-processing.php b/tools/functions/geometry-processing.php index 0815502c..f6422355 100644 --- a/tools/functions/geometry-processing.php +++ b/tools/functions/geometry-processing.php @@ -26,6 +26,13 @@ 'value' => 'POLYGON((150 90,149.0392640201615 80.2454838991936,146.19397662556435 70.86582838174553,141.57348061512727 62.221488349019914,135.3553390593274 54.64466094067266,127.77851165098015 48.42651938487277,119.13417161825454 43.80602337443568,109.75451610080648 40.96073597983849,100.00000000000009 40,90.24548389919367 40.96073597983846,80.86582838174562 43.806023374435625,72.22148834901998 48.426519384872684,64.64466094067271 54.644660940672544,58.42651938487281 62.221488349019786,53.80602337443571 70.86582838174539,50.9607359798385 80.24548389919345,50 89.99999999999984,50.96073597983845 99.75451610080624,53.80602337443559 109.13417161825431,58.42651938487263 117.77851165097995,64.64466094067248 125.35533905932724,72.22148834901971 131.57348061512715,80.86582838174532 136.19397662556426,90.24548389919335 139.03926402016148,99.99999999999977 140,109.75451610080616 139.03926402016157,119.13417161825426 136.19397662556443,127.77851165097987 131.57348061512744,135.35533905932718 125.35533905932758,141.5734806151271 117.77851165098036,146.19397662556423 109.13417161825477,149.03926402016145 99.75451610080674,150 90))', ], ], + [ + 'groups' => ['postgis-3.2'], + 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(100 90)'), 50, 'quad_segs=8')) AS value", + 'result' => [ + 'value' => 'POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,99.99999999999999 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90))', + ], + ], [ 'sql' => "SELECT ST_NPoints({function}(ST_GeomFromText('POINT(100 90)'), 50)) AS promisingcircle_pcount, ST_NPoints(ST_Buffer(ST_GeomFromText('POINT(100 90)'), 50, 2)) AS lamecircle_pcount", 'result' => [ @@ -191,6 +198,13 @@ 'value' => 'GEOMETRYCOLLECTION(POLYGON((150 90,149.0392640201615 80.2454838991936,146.19397662556435 70.86582838174553,141.57348061512727 62.221488349019914,135.3553390593274 54.64466094067266,127.77851165098015 48.42651938487277,119.13417161825454 43.80602337443568,109.75451610080648 40.96073597983849,100.00000000000009 40,90.24548389919367 40.96073597983846,80.86582838174562 43.806023374435625,72.22148834901998 48.426519384872684,64.64466094067271 54.644660940672544,60.13711795745844 60.13711795745844,129.86288204254154 129.86288204254154,135.35533905932718 125.35533905932758,141.5734806151271 117.77851165098036,146.19397662556423 109.13417161825477,149.03926402016145 99.75451610080674,150 90)),POLYGON((60.13711795745844 60.13711795745844,58.42651938487281 62.221488349019786,53.80602337443571 70.86582838174539,50.9607359798385 80.24548389919345,50 89.99999999999984,50.96073597983845 99.75451610080624,53.80602337443559 109.13417161825431,58.42651938487263 117.77851165097995,64.64466094067248 125.35533905932724,72.22148834901971 131.57348061512715,80.86582838174532 136.19397662556426,90.24548389919335 139.03926402016148,99.99999999999977 140,109.75451610080616 139.03926402016157,119.13417161825426 136.19397662556443,127.77851165097987 131.57348061512744,129.86288204254154 129.86288204254154,60.13711795745844 60.13711795745844)))', ], ], + [ + 'groups' => ['postgis-3.2'], + 'sql' => "SELECT ST_AsText({function}(ST_Buffer(ST_GeomFromText('POINT(100 90)'), 50), ST_MakeLine(ST_MakePoint(10, 10),ST_MakePoint(190, 190)))) AS value", + 'result' => [ + 'value' => 'GEOMETRYCOLLECTION(POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,60.13711795745844 60.13711795745844,129.86288204254154 129.86288204254154,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90)),POLYGON((60.13711795745844 60.13711795745844,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,99.99999999999999 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,129.86288204254154 129.86288204254154,60.13711795745844 60.13711795745844)))', + ], + ], ], ], ], From 0c1e94fb1c1cb6c8f795a4e3806c0ff2f6ab28ff Mon Sep 17 00:00:00 2001 From: Gwendolen Lynch Date: Tue, 5 Mar 2024 12:08:33 +0100 Subject: [PATCH 4/9] PostGIS 3.3 tests --- tools/functions/geometry-accessors.php | 8 ++++++++ tools/functions/geometry-processing.php | 16 ++++++++++++++++ .../spatial-relationships-measurement.php | 8 ++++++++ 3 files changed, 32 insertions(+) diff --git a/tools/functions/geometry-accessors.php b/tools/functions/geometry-accessors.php index 230fc6ae..f75058aa 100644 --- a/tools/functions/geometry-accessors.php +++ b/tools/functions/geometry-accessors.php @@ -27,11 +27,19 @@ 'tests' => [ 'queries' => [ [ + 'groups' => ['postgis-3.0', 'postgis-3.1', 'postgis-3.2'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('LINESTRING(1 1,0 0, -1 1)'))) AS value", 'result' => [ 'value' => 'MULTIPOINT(1 1,-1 1)', ], ], + [ + 'groups' => ['postgis-3.3'], + 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('LINESTRING(1 1,0 0, -1 1)'))) AS value", + 'result' => [ + 'value' => 'MULTIPOINT((1 1),(-1 1))', + ], + ], ], ], ], diff --git a/tools/functions/geometry-processing.php b/tools/functions/geometry-processing.php index f6422355..34201bb3 100644 --- a/tools/functions/geometry-processing.php +++ b/tools/functions/geometry-processing.php @@ -51,11 +51,19 @@ 'tests' => [ 'queries' => [ [ + 'groups' => ['postgis-3.0', 'postgis-3.1', 'postgis-3.2'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(1 2)'), ST_GeomFromText('POINT(-2 3)') )) AS value", 'result' => [ 'value' => 'MULTIPOINT(1 2,-2 3)', ], ], + [ + 'groups' => ['postgis-3.3'], + 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(1 2)'), ST_GeomFromText('POINT(-2 3)') )) AS value", + 'result' => [ + 'value' => 'MULTIPOINT((1 2),(-2 3))', + ], + ], ], ], ], @@ -228,11 +236,19 @@ 'tests' => [ 'queries' => [ [ + 'groups' => ['postgis-3.0', 'postgis-3.1', 'postgis-3.2'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(1 2)'), ST_GeomFromText('POINT(-2 3)'))) AS value", 'result' => [ 'value' => 'MULTIPOINT(1 2,-2 3)', ], ], + [ + 'groups' => ['postgis-3.3'], + 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(1 2)'), ST_GeomFromText('POINT(-2 3)'))) AS value", + 'result' => [ + 'value' => 'MULTIPOINT((1 2),(-2 3))', + ], + ], ], ], ], diff --git a/tools/functions/spatial-relationships-measurement.php b/tools/functions/spatial-relationships-measurement.php index 1a0eba54..5a9ee861 100644 --- a/tools/functions/spatial-relationships-measurement.php +++ b/tools/functions/spatial-relationships-measurement.php @@ -286,11 +286,19 @@ 'tests' => [ 'queries' => [ [ + 'groups' => ['postgis-3.0', 'postgis-3.1', 'postgis-3.2'], 'sql' => "SELECT {function}(ST_GeomFromText('LINESTRING(25 169,89 114,40 70,86 43)'), ST_GeomFromText('LINESTRING(171 154,20 140,71 74,161 53)')) AS value", 'result' => [ 'value' => -3, ], ], + [ + 'groups' => ['postgis-3.3'], + 'sql' => "SELECT {function}(ST_GeomFromText('LINESTRING(25 169,89 114,40 70,86 43)'), ST_GeomFromText('LINESTRING(171 154,20 140,71 74,161 53)')) AS value", + 'result' => [ + 'value' => 3.0, + ], + ], ], ], ], From ba90b5300ca1501aa27868e2dbd5feb6f902f039 Mon Sep 17 00:00:00 2001 From: Gwendolen Lynch Date: Tue, 5 Mar 2024 12:12:17 +0100 Subject: [PATCH 5/9] PostGIS 3.4 tests --- tools/functions/spatial-relationships-measurement.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/functions/spatial-relationships-measurement.php b/tools/functions/spatial-relationships-measurement.php index 5a9ee861..4b74d8a1 100644 --- a/tools/functions/spatial-relationships-measurement.php +++ b/tools/functions/spatial-relationships-measurement.php @@ -615,12 +615,21 @@ 'tests' => [ 'queries' => [ [ + 'groups' => ['postgis-3.0', 'postgis-3.1', 'postgis-3.2', 'postgis-3.3'], 'sql' => "SELECT ST_X(ST_GeomFromText(ST_AsText({function}(ST_GeomFromText('POINT(0 0)'), 100000, 0.785398163397448)))) as value1, ST_Y(ST_GeomFromText(ST_AsText({function}(ST_GeomFromText('POINT(0 0)'), 100000, 0.785398163397448)))) AS value2", 'result' => [ 'value1' => 0.635231029125537, 'value2' => 0.639472334729198, ], ], + [ + 'groups' => ['postgis-3.4'], + 'sql' => "SELECT ST_X(ST_GeomFromText(ST_AsText({function}(ST_GeomFromText('POINT(0 0)'), 100000, 0.785398163397448)))) as value1, ST_Y(ST_GeomFromText(ST_AsText({function}(ST_GeomFromText('POINT(0 0)'), 100000, 0.785398163397448)))) AS value2", + 'result' => [ + 'value1' => 70710.67811865476, + 'value2' => 70710.67811865475, + ], + ], ], ], ], From 112690d531ba15783d2effd2fc1df9fb20cf1db9 Mon Sep 17 00:00:00 2001 From: Gwendolen Lynch Date: Tue, 5 Mar 2024 12:36:31 +0100 Subject: [PATCH 6/9] Update README --- README.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7bb9518d..b0f8813c 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ library. | Dependency | Supported Versions | |:--------------|:-------------------| -| PostGIS | 3.0 and 3.1 | -| PostgreSQL | 11, 12 and 13 | +| PostGIS | >= 3.1 | +| PostgreSQL | >= 13 | | Doctrine ORM | ^2.19 and ^3.0 | | Doctrine DBAL | ^3.7 and ^4.0 | @@ -331,15 +331,21 @@ The script names follow the pattern To run the test suite against PostgreSQL 13 with PostGIS 3.1, use the script `./docker/run-13-31.sh`. +Tests are either PostGIS version specific (versioned) or agnostic, and are run +separately using PHPUnit groups. + +e.g. for PostGIS 3.1 and PostgreSQL 13 + ```bash -./docker/run-13-31.sh vendor/bin/phpunit --exclude-group=postgis-3.0 +./docker/run-13-31.sh vendor/bin/phpunit --exclude-group=versioned +./docker/run-13-31.sh vendor/bin/phpunit --group=postgis-3.1 ``` -Note, that we exclude tests targeted at PostGIS 3.0 here. When running tests -against PostGIS 3.0, exclude the tests for 3.1. +e.g. for PostGIS 3.0 and PostgreSQL 13 ```bash -./docker/run-13-30.sh vendor/bin/phpunit --exclude-group=postgis-3.1 +./docker/run-13-30.sh vendor/bin/phpunit --exclude-group=versioned +./docker/run-13-30.sh vendor/bin/phpunit --group=postgis-3.0 ``` License From 12cc6b23e3f578946b9fd6c8437447856ffc7b27 Mon Sep 17 00:00:00 2001 From: Gwendolen Lynch Date: Tue, 5 Mar 2024 12:37:10 +0100 Subject: [PATCH 7/9] Generate functions --- tests/Functions/ST_3DClosestPointTest.php | 5 +++ tests/Functions/ST_3DShortestLineTest.php | 5 +++ tests/Functions/ST_BoundaryTest.php | 38 ++++++++++++++++++ tests/Functions/ST_Box2dFromGeoHashTest.php | 10 +++++ tests/Functions/ST_BufferTest.php | 35 +++++++++++++++++ tests/Functions/ST_CentroidTest.php | 5 +++ tests/Functions/ST_CollectTest.php | 38 ++++++++++++++++++ tests/Functions/ST_GeomFromGeoHashTest.php | 5 +++ .../ST_LineCrossingDirectionTest.php | 36 +++++++++++++++++ .../ST_MinimumBoundingCircleTest.php | 5 +++ tests/Functions/ST_PointFromGeoHashTest.php | 5 +++ tests/Functions/ST_ProjectTest.php | 39 +++++++++++++++++++ tests/Functions/ST_ShiftLongitudeTest.php | 5 +++ tests/Functions/ST_ShortestLineTest.php | 5 +++ tests/Functions/ST_SplitTest.php | 35 +++++++++++++++++ tests/Functions/ST_TransformTest.php | 35 +++++++++++++++++ tests/Functions/ST_UnionTest.php | 38 ++++++++++++++++++ 17 files changed, 344 insertions(+) diff --git a/tests/Functions/ST_3DClosestPointTest.php b/tests/Functions/ST_3DClosestPointTest.php index 3d57f882..a835f053 100644 --- a/tests/Functions/ST_3DClosestPointTest.php +++ b/tests/Functions/ST_3DClosestPointTest.php @@ -52,6 +52,7 @@ protected function setUp(): void /** * @group postgis-3.0 + * @group versioned */ public function testQuery1(): void { @@ -82,6 +83,10 @@ public function testQuery1(): void /** * @group postgis-3.1 + * @group postgis-3.2 + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned */ public function testQuery2(): void { diff --git a/tests/Functions/ST_3DShortestLineTest.php b/tests/Functions/ST_3DShortestLineTest.php index f3d6f50d..0c4c2436 100644 --- a/tests/Functions/ST_3DShortestLineTest.php +++ b/tests/Functions/ST_3DShortestLineTest.php @@ -52,6 +52,7 @@ protected function setUp(): void /** * @group postgis-3.0 + * @group versioned */ public function testQuery1(): void { @@ -82,6 +83,10 @@ public function testQuery1(): void /** * @group postgis-3.1 + * @group postgis-3.2 + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned */ public function testQuery2(): void { diff --git a/tests/Functions/ST_BoundaryTest.php b/tests/Functions/ST_BoundaryTest.php index a1288f80..8d94c133 100644 --- a/tests/Functions/ST_BoundaryTest.php +++ b/tests/Functions/ST_BoundaryTest.php @@ -50,6 +50,12 @@ protected function setUp(): void $em->clear(); } + /** + * @group postgis-3.0 + * @group postgis-3.1 + * @group postgis-3.2 + * @group versioned + */ public function testQuery1(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Boundary(ST_GeomFromText(\'LINESTRING(1 1,0 0, -1 1)\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); @@ -76,4 +82,36 @@ public function testQuery1(): void $this->assertEqualsWithDelta($expected, $result, 0.001); } + + /** + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned + */ + public function testQuery2(): void + { + $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Boundary(ST_GeomFromText(\'LINESTRING(1 1,0 0, -1 1)\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); + + $result = $query->getSingleResult(); + + array_walk_recursive($result, static function (&$data): void { + if (is_resource($data)) { + $data = stream_get_contents($data); + + if (false !== ($pos = strpos($data, 'x'))) { + $data = substr($data, $pos + 1); + } + } + + if (is_string($data)) { + $data = trim($data); + } + }); + + $expected = [ + 'value' => 'MULTIPOINT((1 1),(-1 1))', +]; + + $this->assertEqualsWithDelta($expected, $result, 0.001); + } } diff --git a/tests/Functions/ST_Box2dFromGeoHashTest.php b/tests/Functions/ST_Box2dFromGeoHashTest.php index 678fdedf..8906aac3 100644 --- a/tests/Functions/ST_Box2dFromGeoHashTest.php +++ b/tests/Functions/ST_Box2dFromGeoHashTest.php @@ -52,6 +52,7 @@ protected function setUp(): void /** * @group postgis-3.0 + * @group versioned */ public function testQuery1(): void { @@ -82,6 +83,10 @@ public function testQuery1(): void /** * @group postgis-3.1 + * @group postgis-3.2 + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned */ public function testQuery2(): void { @@ -139,6 +144,7 @@ public function testQuery3(): void /** * @group postgis-3.0 + * @group versioned */ public function testQuery4(): void { @@ -169,6 +175,10 @@ public function testQuery4(): void /** * @group postgis-3.1 + * @group postgis-3.2 + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned */ public function testQuery5(): void { diff --git a/tests/Functions/ST_BufferTest.php b/tests/Functions/ST_BufferTest.php index 3b352625..3cc03e87 100644 --- a/tests/Functions/ST_BufferTest.php +++ b/tests/Functions/ST_BufferTest.php @@ -52,6 +52,7 @@ protected function setUp(): void /** * @group postgis-3.0 + * @group versioned */ public function testQuery1(): void { @@ -82,6 +83,7 @@ public function testQuery1(): void /** * @group postgis-3.1 + * @group versioned */ public function testQuery2(): void { @@ -110,7 +112,40 @@ public function testQuery2(): void $this->assertEqualsWithDelta($expected, $result, 0.001); } + /** + * @group postgis-3.2 + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned + */ public function testQuery3(): void + { + $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Buffer(ST_GeomFromText(\'POINT(100 90)\'), 50, \'quad_segs=8\')) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); + + $result = $query->getSingleResult(); + + array_walk_recursive($result, static function (&$data): void { + if (is_resource($data)) { + $data = stream_get_contents($data); + + if (false !== ($pos = strpos($data, 'x'))) { + $data = substr($data, $pos + 1); + } + } + + if (is_string($data)) { + $data = trim($data); + } + }); + + $expected = [ + 'value' => 'POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,99.99999999999999 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90))', +]; + + $this->assertEqualsWithDelta($expected, $result, 0.001); + } + + public function testQuery4(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_NPoints(ST_Buffer(ST_GeomFromText(\'POINT(100 90)\'), 50)) AS promisingcircle_pcount, ST_NPoints(ST_Buffer(ST_GeomFromText(\'POINT(100 90)\'), 50, 2)) AS lamecircle_pcount FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); diff --git a/tests/Functions/ST_CentroidTest.php b/tests/Functions/ST_CentroidTest.php index 0de84124..f1dd4132 100644 --- a/tests/Functions/ST_CentroidTest.php +++ b/tests/Functions/ST_CentroidTest.php @@ -52,6 +52,7 @@ protected function setUp(): void /** * @group postgis-3.0 + * @group versioned */ public function testQuery1(): void { @@ -82,6 +83,10 @@ public function testQuery1(): void /** * @group postgis-3.1 + * @group postgis-3.2 + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned */ public function testQuery2(): void { diff --git a/tests/Functions/ST_CollectTest.php b/tests/Functions/ST_CollectTest.php index a3ec1869..5b5bdf8a 100644 --- a/tests/Functions/ST_CollectTest.php +++ b/tests/Functions/ST_CollectTest.php @@ -50,6 +50,12 @@ protected function setUp(): void $em->clear(); } + /** + * @group postgis-3.0 + * @group postgis-3.1 + * @group postgis-3.2 + * @group versioned + */ public function testQuery1(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Collect(ST_GeomFromText(\'POINT(1 2)\'), ST_GeomFromText(\'POINT(-2 3)\') )) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); @@ -76,4 +82,36 @@ public function testQuery1(): void $this->assertEqualsWithDelta($expected, $result, 0.001); } + + /** + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned + */ + public function testQuery2(): void + { + $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Collect(ST_GeomFromText(\'POINT(1 2)\'), ST_GeomFromText(\'POINT(-2 3)\') )) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); + + $result = $query->getSingleResult(); + + array_walk_recursive($result, static function (&$data): void { + if (is_resource($data)) { + $data = stream_get_contents($data); + + if (false !== ($pos = strpos($data, 'x'))) { + $data = substr($data, $pos + 1); + } + } + + if (is_string($data)) { + $data = trim($data); + } + }); + + $expected = [ + 'value' => 'MULTIPOINT((1 2),(-2 3))', +]; + + $this->assertEqualsWithDelta($expected, $result, 0.001); + } } diff --git a/tests/Functions/ST_GeomFromGeoHashTest.php b/tests/Functions/ST_GeomFromGeoHashTest.php index e01da9a1..ad6021bd 100644 --- a/tests/Functions/ST_GeomFromGeoHashTest.php +++ b/tests/Functions/ST_GeomFromGeoHashTest.php @@ -52,6 +52,7 @@ protected function setUp(): void /** * @group postgis-3.0 + * @group versioned */ public function testQuery1(): void { @@ -82,6 +83,10 @@ public function testQuery1(): void /** * @group postgis-3.1 + * @group postgis-3.2 + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned */ public function testQuery2(): void { diff --git a/tests/Functions/ST_LineCrossingDirectionTest.php b/tests/Functions/ST_LineCrossingDirectionTest.php index b3251147..9c7e11f6 100644 --- a/tests/Functions/ST_LineCrossingDirectionTest.php +++ b/tests/Functions/ST_LineCrossingDirectionTest.php @@ -49,6 +49,12 @@ protected function setUp(): void $em->clear(); } + /** + * @group postgis-3.0 + * @group postgis-3.1 + * @group postgis-3.2 + * @group versioned + */ public function testQuery1(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_LineCrossingDirection(ST_GeomFromText(\'LINESTRING(25 169,89 114,40 70,86 43)\'), ST_GeomFromText(\'LINESTRING(171 154,20 140,71 74,161 53)\')) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); @@ -73,4 +79,34 @@ public function testQuery1(): void $this->assertEqualsWithDelta($expected, $result, 0.001); } + + /** + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned + */ + public function testQuery2(): void + { + $query = $this->_getEntityManager()->createQuery('SELECT ST_LineCrossingDirection(ST_GeomFromText(\'LINESTRING(25 169,89 114,40 70,86 43)\'), ST_GeomFromText(\'LINESTRING(171 154,20 140,71 74,161 53)\')) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); + + $result = $query->getSingleResult(); + + array_walk_recursive($result, static function (&$data): void { + if (is_resource($data)) { + $data = stream_get_contents($data); + + if (false !== ($pos = strpos($data, 'x'))) { + $data = substr($data, $pos + 1); + } + } + + $data = (float) $data; + }); + + $expected = [ + 'value' => 3.0, +]; + + $this->assertEqualsWithDelta($expected, $result, 0.001); + } } diff --git a/tests/Functions/ST_MinimumBoundingCircleTest.php b/tests/Functions/ST_MinimumBoundingCircleTest.php index b84b2be9..f90c7afa 100644 --- a/tests/Functions/ST_MinimumBoundingCircleTest.php +++ b/tests/Functions/ST_MinimumBoundingCircleTest.php @@ -52,6 +52,7 @@ protected function setUp(): void /** * @group postgis-3.0 + * @group versioned */ public function testQuery1(): void { @@ -82,6 +83,10 @@ public function testQuery1(): void /** * @group postgis-3.1 + * @group postgis-3.2 + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned */ public function testQuery2(): void { diff --git a/tests/Functions/ST_PointFromGeoHashTest.php b/tests/Functions/ST_PointFromGeoHashTest.php index 5fb18fd5..ec2a3990 100644 --- a/tests/Functions/ST_PointFromGeoHashTest.php +++ b/tests/Functions/ST_PointFromGeoHashTest.php @@ -52,6 +52,7 @@ protected function setUp(): void /** * @group postgis-3.0 + * @group versioned */ public function testQuery1(): void { @@ -82,6 +83,10 @@ public function testQuery1(): void /** * @group postgis-3.1 + * @group postgis-3.2 + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned */ public function testQuery2(): void { diff --git a/tests/Functions/ST_ProjectTest.php b/tests/Functions/ST_ProjectTest.php index 1a08e797..adaebda1 100644 --- a/tests/Functions/ST_ProjectTest.php +++ b/tests/Functions/ST_ProjectTest.php @@ -50,6 +50,13 @@ protected function setUp(): void $em->clear(); } + /** + * @group postgis-3.0 + * @group postgis-3.1 + * @group postgis-3.2 + * @group postgis-3.3 + * @group versioned + */ public function testQuery1(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_X(ST_GeomFromText(ST_AsText(ST_Project(ST_GeomFromText(\'POINT(0 0)\'), 100000, 0.785398163397448)))) as value1, ST_Y(ST_GeomFromText(ST_AsText(ST_Project(ST_GeomFromText(\'POINT(0 0)\'), 100000, 0.785398163397448)))) AS value2 FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); @@ -77,4 +84,36 @@ public function testQuery1(): void $this->assertEqualsWithDelta($expected, $result, 0.001); } + + /** + * @group postgis-3.4 + * @group versioned + */ + public function testQuery2(): void + { + $query = $this->_getEntityManager()->createQuery('SELECT ST_X(ST_GeomFromText(ST_AsText(ST_Project(ST_GeomFromText(\'POINT(0 0)\'), 100000, 0.785398163397448)))) as value1, ST_Y(ST_GeomFromText(ST_AsText(ST_Project(ST_GeomFromText(\'POINT(0 0)\'), 100000, 0.785398163397448)))) AS value2 FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); + + $result = $query->getSingleResult(); + + array_walk_recursive($result, static function (&$data): void { + if (is_resource($data)) { + $data = stream_get_contents($data); + + if (false !== ($pos = strpos($data, 'x'))) { + $data = substr($data, $pos + 1); + } + } + + if (is_string($data)) { + $data = trim($data); + } + }); + + $expected = [ + 'value1' => 70710.67811865476, + 'value2' => 70710.67811865475, +]; + + $this->assertEqualsWithDelta($expected, $result, 0.001); + } } diff --git a/tests/Functions/ST_ShiftLongitudeTest.php b/tests/Functions/ST_ShiftLongitudeTest.php index 42cd5375..edd4b1e1 100644 --- a/tests/Functions/ST_ShiftLongitudeTest.php +++ b/tests/Functions/ST_ShiftLongitudeTest.php @@ -52,6 +52,7 @@ protected function setUp(): void /** * @group postgis-3.0 + * @group versioned */ public function testQuery1(): void { @@ -82,6 +83,10 @@ public function testQuery1(): void /** * @group postgis-3.1 + * @group postgis-3.2 + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned */ public function testQuery2(): void { diff --git a/tests/Functions/ST_ShortestLineTest.php b/tests/Functions/ST_ShortestLineTest.php index 3cce458d..22225b81 100644 --- a/tests/Functions/ST_ShortestLineTest.php +++ b/tests/Functions/ST_ShortestLineTest.php @@ -52,6 +52,7 @@ protected function setUp(): void /** * @group postgis-3.0 + * @group versioned */ public function testQuery1(): void { @@ -82,6 +83,10 @@ public function testQuery1(): void /** * @group postgis-3.1 + * @group postgis-3.2 + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned */ public function testQuery2(): void { diff --git a/tests/Functions/ST_SplitTest.php b/tests/Functions/ST_SplitTest.php index f66e8730..ff504715 100644 --- a/tests/Functions/ST_SplitTest.php +++ b/tests/Functions/ST_SplitTest.php @@ -52,6 +52,7 @@ protected function setUp(): void /** * @group postgis-3.0 + * @group versioned */ public function testQuery1(): void { @@ -82,6 +83,7 @@ public function testQuery1(): void /** * @group postgis-3.1 + * @group versioned */ public function testQuery2(): void { @@ -109,4 +111,37 @@ public function testQuery2(): void $this->assertEqualsWithDelta($expected, $result, 0.001); } + + /** + * @group postgis-3.2 + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned + */ + public function testQuery3(): void + { + $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Split(ST_Buffer(ST_GeomFromText(\'POINT(100 90)\'), 50), ST_MakeLine(ST_MakePoint(10, 10),ST_MakePoint(190, 190)))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); + + $result = $query->getSingleResult(); + + array_walk_recursive($result, static function (&$data): void { + if (is_resource($data)) { + $data = stream_get_contents($data); + + if (false !== ($pos = strpos($data, 'x'))) { + $data = substr($data, $pos + 1); + } + } + + if (is_string($data)) { + $data = trim($data); + } + }); + + $expected = [ + 'value' => 'GEOMETRYCOLLECTION(POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,60.13711795745844 60.13711795745844,129.86288204254154 129.86288204254154,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90)),POLYGON((60.13711795745844 60.13711795745844,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,99.99999999999999 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,129.86288204254154 129.86288204254154,60.13711795745844 60.13711795745844)))', +]; + + $this->assertEqualsWithDelta($expected, $result, 0.001); + } } diff --git a/tests/Functions/ST_TransformTest.php b/tests/Functions/ST_TransformTest.php index db320bb6..971bedfc 100644 --- a/tests/Functions/ST_TransformTest.php +++ b/tests/Functions/ST_TransformTest.php @@ -52,6 +52,7 @@ protected function setUp(): void /** * @group postgis-3.0 + * @group versioned */ public function testQuery1(): void { @@ -82,6 +83,7 @@ public function testQuery1(): void /** * @group postgis-3.1 + * @group versioned */ public function testQuery2(): void { @@ -109,4 +111,37 @@ public function testQuery2(): void $this->assertEqualsWithDelta($expected, $result, 0.001); } + + /** + * @group postgis-3.2 + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned + */ + public function testQuery3(): void + { + $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Transform(ST_GeomFromText(\'POLYGON((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,743238 2967416))\',2249),4326)) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); + + $result = $query->getSingleResult(); + + array_walk_recursive($result, static function (&$data): void { + if (is_resource($data)) { + $data = stream_get_contents($data); + + if (false !== ($pos = strpos($data, 'x'))) { + $data = substr($data, $pos + 1); + } + } + + if (is_string($data)) { + $data = trim($data); + } + }); + + $expected = [ + 'value' => 'POLYGON((-71.1776848522251 42.3902896512903,-71.17768437663261 42.390382947801015,-71.17758443054647 42.390382667791854,-71.17758259272304 42.390289364798825,-71.1776848522251 42.3902896512903))', +]; + + $this->assertEqualsWithDelta($expected, $result, 0.001); + } } diff --git a/tests/Functions/ST_UnionTest.php b/tests/Functions/ST_UnionTest.php index 014d2dd1..42fbfc97 100644 --- a/tests/Functions/ST_UnionTest.php +++ b/tests/Functions/ST_UnionTest.php @@ -50,6 +50,12 @@ protected function setUp(): void $em->clear(); } + /** + * @group postgis-3.0 + * @group postgis-3.1 + * @group postgis-3.2 + * @group versioned + */ public function testQuery1(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Union(ST_GeomFromText(\'POINT(1 2)\'), ST_GeomFromText(\'POINT(-2 3)\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); @@ -76,4 +82,36 @@ public function testQuery1(): void $this->assertEqualsWithDelta($expected, $result, 0.001); } + + /** + * @group postgis-3.3 + * @group postgis-3.4 + * @group versioned + */ + public function testQuery2(): void + { + $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Union(ST_GeomFromText(\'POINT(1 2)\'), ST_GeomFromText(\'POINT(-2 3)\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); + + $result = $query->getSingleResult(); + + array_walk_recursive($result, static function (&$data): void { + if (is_resource($data)) { + $data = stream_get_contents($data); + + if (false !== ($pos = strpos($data, 'x'))) { + $data = substr($data, $pos + 1); + } + } + + if (is_string($data)) { + $data = trim($data); + } + }); + + $expected = [ + 'value' => 'MULTIPOINT((1 2),(-2 3))', +]; + + $this->assertEqualsWithDelta($expected, $result, 0.001); + } } From 15ecb0e6ece793b2ffed9ed98793a13ff5293a47 Mon Sep 17 00:00:00 2001 From: Gwendolen Lynch Date: Wed, 6 Mar 2024 06:03:12 +0100 Subject: [PATCH 8/9] Update CI matrix --- .github/workflows/ci.yml | 165 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 155 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b7fc23d1..a70af6ca 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,40 +17,169 @@ jobs: - php: '8.0' postgres: '11' postgis: '3.0' - phpunit-flags: '--exclude-group=postgis-3.1' + phpunit-flags: '--exclude-group=versioned' + composer-flags: '--prefer-stable --prefer-lowest' + - php: '8.0' + postgres: '11' + postgis: '3.0' + phpunit-flags: '--group=postgis-3.0' composer-flags: '--prefer-stable --prefer-lowest' # PostgresSQL / PostGIS matrix with ORM + # PHP 8.1, Postgres 11, ORM 2.9 + - php: '8.1' + postgres: '11' + postgis: '3.0' + orm: '2.9' + phpunit-flags: '--exclude-group=versioned' - php: '8.1' postgres: '11' postgis: '3.0' orm: '2.9' - phpunit-flags: '--exclude-group=postgis-3.1' + phpunit-flags: '--group=postgis-3.0' + - php: '8.1' + postgres: '11' + postgis: '3.1' + orm: '2.9' + phpunit-flags: '--exclude-group=versioned' - php: '8.1' postgres: '11' postgis: '3.1' orm: '2.9' - phpunit-flags: '--exclude-group=postgis-3.0' + phpunit-flags: '--group=postgis-3.1' + - php: '8.1' + postgres: '11' + postgis: '3.2' + orm: '2.9' + phpunit-flags: '--exclude-group=versioned' + - php: '8.1' + postgres: '11' + postgis: '3.2' + orm: '2.9' + phpunit-flags: '--group=postgis-3.2' + - php: '8.1' + postgres: '11' + postgis: '3.3' + orm: '2.9' + phpunit-flags: '--exclude-group=versioned' + - php: '8.1' + postgres: '11' + postgis: '3.3' + orm: '2.9' + phpunit-flags: '--group=postgis-3.3' + - php: '8.1' + postgres: '11' + postgis: '3.4' + orm: '2.9' + phpunit-flags: '--exclude-group=versioned' + - php: '8.1' + postgres: '11' + postgis: '3.4' + orm: '2.9' + phpunit-flags: '--group=postgis-3.4' + # PHP 8.1, Postgres 12, ORM 2.9 - php: '8.1' postgres: '12' postgis: '3.0' orm: '2.9' - phpunit-flags: '--exclude-group=postgis-3.1' + phpunit-flags: '--exclude-group=versioned' + - php: '8.1' + postgres: '12' + postgis: '3.0' + orm: '2.9' + phpunit-flags: '--group=postgis-3.0' + - php: '8.1' + postgres: '12' + postgis: '3.1' + orm: '2.9' + phpunit-flags: '--exclude-group=versioned' - php: '8.1' postgres: '12' postgis: '3.1' orm: '2.9' - phpunit-flags: '--exclude-group=postgis-3.0' + phpunit-flags: '--group=postgis-3.1' + - php: '8.1' + postgres: '12' + postgis: '3.2' + orm: '2.9' + phpunit-flags: '--exclude-group=versioned' + - php: '8.1' + postgres: '12' + postgis: '3.2' + orm: '2.9' + phpunit-flags: '--group=postgis-3.2' + - php: '8.1' + postgres: '12' + postgis: '3.3' + orm: '2.9' + phpunit-flags: '--exclude-group=versioned' + - php: '8.1' + postgres: '12' + postgis: '3.3' + orm: '2.9' + phpunit-flags: '--group=postgis-3.3' + - php: '8.1' + postgres: '12' + postgis: '3.4' + orm: '2.9' + phpunit-flags: '--exclude-group=versioned' + - php: '8.1' + postgres: '12' + postgis: '3.4' + orm: '2.9' + phpunit-flags: '--group=postgis-3.4' + # PHP 8.1, Postgres 13, ORM 2.9 + - php: '8.1' + postgres: '13' + postgis: '3.0' + orm: '2.9' + phpunit-flags: '--exclude-group=versioned' - php: '8.1' postgres: '13' postgis: '3.0' orm: '2.9' - phpunit-flags: '--exclude-group=postgis-3.1' + phpunit-flags: '--group=postgis-3.0' - php: '8.1' postgres: '13' postgis: '3.1' orm: '2.9' - phpunit-flags: '--exclude-group=postgis-3.0' + phpunit-flags: '--exclude-group=versioned' + - php: '8.1' + postgres: '13' + postgis: '3.1' + orm: '2.9' + phpunit-flags: '--group=postgis-3.1' + - php: '8.1' + postgres: '13' + postgis: '3.2' + orm: '2.9' + phpunit-flags: '--exclude-group=versioned' + - php: '8.1' + postgres: '13' + postgis: '3.2' + orm: '2.9' + phpunit-flags: '--group=postgis-3.2' + - php: '8.1' + postgres: '13' + postgis: '3.3' + orm: '2.9' + phpunit-flags: '--exclude-group=versioned' + - php: '8.1' + postgres: '13' + postgis: '3.3' + orm: '2.9' + phpunit-flags: '--group=postgis-3.3' + - php: '8.1' + postgres: '13' + postgis: '3.4' + orm: '2.9' + phpunit-flags: '--exclude-group=versioned' + code-coverage: 'yes' + - php: '8.1' + postgres: '13' + postgis: '3.4' + orm: '2.9' + phpunit-flags: '--group=postgis-3.4' code-coverage: 'yes' # DBAL only @@ -58,18 +187,34 @@ jobs: postgres: '11' postgis: '3.0' dbal: '2.13' - phpunit-flags: '--exclude-group=postgis-3.1 --exclude-group=orm' + phpunit-flags: '--exclude-group=versioned,orm' + - php: '8.1' + postgres: '11' + postgis: '3.0' + dbal: '2.13' + phpunit-flags: '--group=postgis-3.0 --exclude-group=orm' + - php: '8.1' + postgres: '13' + postgis: '3.1' + dbal: '3.1' + phpunit-flags: '--exclude-group=versioned,orm' - php: '8.1' postgres: '13' postgis: '3.1' dbal: '3.1' - phpunit-flags: '--exclude-group=postgis-3.0 --exclude-group=orm' + phpunit-flags: '--group=postgis-3.1 --exclude-group=orm' # Next PHP version - php: '8.2' postgres: '13' postgis: '3.1' - phpunit-flags: '--exclude-group=postgis-3.0' + phpunit-flags: '--exclude-group=versioned' + composer-flags: '--ignore-platform-reqs' + experimental: true + - php: '8.2' + postgres: '13' + postgis: '3.1' + phpunit-flags: '--group=postgis-3.1' composer-flags: '--ignore-platform-reqs' experimental: true services: From a555bce269ae2404dc3637fbae0029a678ca9380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maxime=20H=C3=A9lias?= Date: Wed, 8 Oct 2025 11:50:10 +0200 Subject: [PATCH 9/9] update version --- .github/workflows/ci.yml | 279 ++++++------------ .github/workflows/static.yml | 4 + README.md | 20 +- composer.json | 2 +- docker/docker-compose.yml | 94 ++---- docker/run-11-30.sh | 11 - docker/run-11-31.sh | 11 - docker/run-12-30.sh | 11 - docker/run-12-31.sh | 11 - docker/run-13-30.sh | 11 - docker/run-13-31.sh | 11 - docker/run-13-32.sh | 11 - docker/run-13-33.sh | 11 - docker/run-13-34.sh | 11 - docker/run-14-32.sh | 11 + docker/run-15-34.sh | 11 + docker/run-16-34.sh | 11 + docker/run-17-36.sh | 11 + docker/run-18-36.sh | 11 + psalm-baseline.xml | 20 +- psalm.xml | 3 + tests/Driver/DriverTest.php | 17 +- tests/Driver/MiddlewareTest.php | 4 + tests/Driver/PostGISPlatformTest.php | 13 +- tests/Functions/ST_3DClosestPointTest.php | 38 --- tests/Functions/ST_3DShortestLineTest.php | 38 --- tests/Functions/ST_BoundaryTest.php | 8 +- tests/Functions/ST_Box2dFromGeoHashTest.php | 104 +------ tests/Functions/ST_BufferTest.php | 42 +-- tests/Functions/ST_CentroidTest.php | 38 --- tests/Functions/ST_CollectTest.php | 8 +- tests/Functions/ST_GeomFromGeoHashTest.php | 65 ---- .../ST_LineCrossingDirectionTest.php | 8 +- .../ST_MinimumBoundingCircleTest.php | 38 --- tests/Functions/ST_PointFromGeoHashTest.php | 65 ---- tests/Functions/ST_ProjectTest.php | 10 +- tests/Functions/ST_ShiftLongitudeTest.php | 38 --- tests/Functions/ST_ShortestLineTest.php | 38 --- tests/Functions/ST_SplitTest.php | 42 +-- tests/Functions/ST_TransformTest.php | 70 +---- tests/Functions/ST_UnionTest.php | 8 +- tools/functions/geometry-accessors.php | 4 +- tools/functions/geometry-constructors.php | 51 +--- tools/functions/geometry-editors.php | 15 - tools/functions/geometry-processing.php | 54 +--- .../spatial-relationships-measurement.php | 40 +-- tools/generate-functions.php | 4 +- 47 files changed, 275 insertions(+), 1161 deletions(-) delete mode 100755 docker/run-11-30.sh delete mode 100755 docker/run-11-31.sh delete mode 100755 docker/run-12-30.sh delete mode 100755 docker/run-12-31.sh delete mode 100755 docker/run-13-30.sh delete mode 100755 docker/run-13-31.sh delete mode 100755 docker/run-13-32.sh delete mode 100755 docker/run-13-33.sh delete mode 100755 docker/run-13-34.sh create mode 100755 docker/run-14-32.sh create mode 100755 docker/run-15-34.sh create mode 100755 docker/run-16-34.sh create mode 100755 docker/run-17-36.sh create mode 100755 docker/run-18-36.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a70af6ca..17b43f6b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,220 +3,99 @@ name: CI on: push: pull_request: - schedule: - - cron: '0 0 * * 0' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: tests: name: Tests (PHP ${{ matrix.php }}, PostgreSQL ${{ matrix.postgres }}, PostGIS ${{ matrix.postgis }}, ORM ${{ matrix.orm || 'default' }}, DBAL ${{ matrix.dbal || 'default' }}) runs-on: ubuntu-latest strategy: + fail-fast: false matrix: include: # Lowest deps - - php: '8.0' - postgres: '11' - postgis: '3.0' - phpunit-flags: '--exclude-group=versioned' - composer-flags: '--prefer-stable --prefer-lowest' - - php: '8.0' - postgres: '11' - postgis: '3.0' - phpunit-flags: '--group=postgis-3.0' - composer-flags: '--prefer-stable --prefer-lowest' - - # PostgresSQL / PostGIS matrix with ORM - # PHP 8.1, Postgres 11, ORM 2.9 - - php: '8.1' - postgres: '11' - postgis: '3.0' - orm: '2.9' - phpunit-flags: '--exclude-group=versioned' - - php: '8.1' - postgres: '11' - postgis: '3.0' - orm: '2.9' - phpunit-flags: '--group=postgis-3.0' - php: '8.1' - postgres: '11' - postgis: '3.1' - orm: '2.9' - phpunit-flags: '--exclude-group=versioned' - - php: '8.1' - postgres: '11' - postgis: '3.1' - orm: '2.9' - phpunit-flags: '--group=postgis-3.1' - - php: '8.1' - postgres: '11' + postgres: '14' postgis: '3.2' - orm: '2.9' phpunit-flags: '--exclude-group=versioned' + composer-flags: '--prefer-stable --prefer-lowest' - php: '8.1' - postgres: '11' + postgres: '14' postgis: '3.2' - orm: '2.9' phpunit-flags: '--group=postgis-3.2' + composer-flags: '--prefer-stable --prefer-lowest' + + # PostgresSQL / PostGIS matrix with ORM + # PHP 8.1, Postgres 15, ORM 2.19 - php: '8.1' - postgres: '11' - postgis: '3.3' - orm: '2.9' - phpunit-flags: '--exclude-group=versioned' - - php: '8.1' - postgres: '11' - postgis: '3.3' - orm: '2.9' - phpunit-flags: '--group=postgis-3.3' - - php: '8.1' - postgres: '11' + postgres: '15' postgis: '3.4' - orm: '2.9' + orm: '2.19' phpunit-flags: '--exclude-group=versioned' - php: '8.1' - postgres: '11' + postgres: '15' postgis: '3.4' - orm: '2.9' + orm: '2.19' phpunit-flags: '--group=postgis-3.4' - # PHP 8.1, Postgres 12, ORM 2.9 - - php: '8.1' - postgres: '12' - postgis: '3.0' - orm: '2.9' - phpunit-flags: '--exclude-group=versioned' - - php: '8.1' - postgres: '12' - postgis: '3.0' - orm: '2.9' - phpunit-flags: '--group=postgis-3.0' - - php: '8.1' - postgres: '12' - postgis: '3.1' - orm: '2.9' - phpunit-flags: '--exclude-group=versioned' - - php: '8.1' - postgres: '12' - postgis: '3.1' - orm: '2.9' - phpunit-flags: '--group=postgis-3.1' - - php: '8.1' - postgres: '12' - postgis: '3.2' - orm: '2.9' - phpunit-flags: '--exclude-group=versioned' - - php: '8.1' - postgres: '12' - postgis: '3.2' - orm: '2.9' - phpunit-flags: '--group=postgis-3.2' - - php: '8.1' - postgres: '12' - postgis: '3.3' - orm: '2.9' - phpunit-flags: '--exclude-group=versioned' - - php: '8.1' - postgres: '12' - postgis: '3.3' - orm: '2.9' - phpunit-flags: '--group=postgis-3.3' + + # PHP 8.1, Postgres 16, ORM 2.19 - php: '8.1' - postgres: '12' + postgres: '16' postgis: '3.4' - orm: '2.9' + orm: '2.19' phpunit-flags: '--exclude-group=versioned' - php: '8.1' - postgres: '12' + postgres: '16' postgis: '3.4' - orm: '2.9' + orm: '2.19' phpunit-flags: '--group=postgis-3.4' - # PHP 8.1, Postgres 13, ORM 2.9 - - php: '8.1' - postgres: '13' - postgis: '3.0' - orm: '2.9' - phpunit-flags: '--exclude-group=versioned' - - php: '8.1' - postgres: '13' - postgis: '3.0' - orm: '2.9' - phpunit-flags: '--group=postgis-3.0' - - php: '8.1' - postgres: '13' - postgis: '3.1' - orm: '2.9' - phpunit-flags: '--exclude-group=versioned' - - php: '8.1' - postgres: '13' - postgis: '3.1' - orm: '2.9' - phpunit-flags: '--group=postgis-3.1' - - php: '8.1' - postgres: '13' - postgis: '3.2' - orm: '2.9' - phpunit-flags: '--exclude-group=versioned' - - php: '8.1' - postgres: '13' - postgis: '3.2' - orm: '2.9' - phpunit-flags: '--group=postgis-3.2' + + # PHP 8.1, Postgres 17, ORM 3.5 - php: '8.1' - postgres: '13' - postgis: '3.3' - orm: '2.9' + postgres: '17' + postgis: '3.6' + orm: '3.5' phpunit-flags: '--exclude-group=versioned' - php: '8.1' - postgres: '13' - postgis: '3.3' - orm: '2.9' - phpunit-flags: '--group=postgis-3.3' + postgres: '17' + postgis: '3.6' + orm: '3.5' + phpunit-flags: '--group=postgis-3.6' + + # PHP 8.1, Postgres 18, ORM 3.5 - php: '8.1' - postgres: '13' - postgis: '3.4' - orm: '2.9' + postgres: '18' + postgis: '3.6' + orm: '3.5' phpunit-flags: '--exclude-group=versioned' - code-coverage: 'yes' - php: '8.1' - postgres: '13' - postgis: '3.4' - orm: '2.9' - phpunit-flags: '--group=postgis-3.4' + postgres: '18' + postgis: '3.6' + orm: '3.5' + phpunit-flags: '--group=postgis-3.6' code-coverage: 'yes' - # DBAL only - - php: '8.1' - postgres: '11' - postgis: '3.0' - dbal: '2.13' - phpunit-flags: '--exclude-group=versioned,orm' - - php: '8.1' - postgres: '11' - postgis: '3.0' - dbal: '2.13' - phpunit-flags: '--group=postgis-3.0 --exclude-group=orm' - - php: '8.1' - postgres: '13' - postgis: '3.1' - dbal: '3.1' - phpunit-flags: '--exclude-group=versioned,orm' - - php: '8.1' - postgres: '13' - postgis: '3.1' - dbal: '3.1' - phpunit-flags: '--group=postgis-3.1 --exclude-group=orm' + # DBAL only v3 & v4 + - php: '8.1' + postgres: '18' + postgis: '3.6' + dbal: '3.7' + phpunit-flags: '--group=postgis-3.6 --exclude-group=orm' + - php: '8.4' + postgres: '18' + postgis: '3.6' + dbal: '4.3' + phpunit-flags: '--group=postgis-3.6 --exclude-group=orm' # Next PHP version - - php: '8.2' - postgres: '13' - postgis: '3.1' + - php: 'latest' + postgres: '18' + postgis: '3.6' phpunit-flags: '--exclude-group=versioned' - composer-flags: '--ignore-platform-reqs' - experimental: true - - php: '8.2' - postgres: '13' - postgis: '3.1' - phpunit-flags: '--group=postgis-3.1' - composer-flags: '--ignore-platform-reqs' - experimental: true + services: postgis: image: postgis/postgis:${{ matrix.postgres }}-${{ matrix.postgis }}-alpine @@ -232,14 +111,25 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: pdo_pgsql - coverage: pcov + extensions: pdo_pgsql, pgsql + coverage: ${{ matrix.code-coverage == 'yes' && 'xdebug' || 'none' }} + + - name: Get Composer cache directory + id: composer-cache + run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: Cache Composer dependencies + uses: actions/cache@v4 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-composer- - name: Install Doctrine ORM if: matrix.orm != '' @@ -254,20 +144,25 @@ jobs: - name: Install dependencies run: | composer update --no-interaction --no-progress --prefer-dist ${{ matrix.composer-flags }} - composer info -D - - - name: Run tests - if: matrix.code-coverage != 'yes' - run: vendor/bin/phpunit ${{ matrix.phpunit-flags }} + composer show -D - - name: Run tests with code coverage + - name: Create coverage directory if: matrix.code-coverage == 'yes' - run: vendor/bin/phpunit --coverage-clover build/logs/clover.xml ${{ matrix.phpunit-flags }} + run: mkdir -p build/logs - - name: Upload coverage results to Coveralls - if: matrix.code-coverage == 'yes' - env: - COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Run tests run: | - composer global require php-coveralls/php-coveralls - php-coveralls -v --coverage_clover=build/logs/clover.xml + if [ "${{ matrix.code-coverage }}" == "yes" ]; then + vendor/bin/phpunit --coverage-clover build/logs/clover.xml ${{ matrix.phpunit-flags }} + else + vendor/bin/phpunit ${{ matrix.phpunit-flags }} + fi + + - name: Upload coverage to Coveralls + if: matrix.code-coverage == 'yes' && success() + uses: coverallsapp/github-action@v2 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + file: build/logs/clover.xml + flag-name: php-${{ matrix.php }}-pg${{ matrix.postgres }}-postgis${{ matrix.postgis }} + parallel: true diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index ca7be467..fd01e3c9 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -4,6 +4,10 @@ on: push: pull_request: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: php-cs-fixer: name: PHP-CS-Fixer diff --git a/README.md b/README.md index b0f8813c..0481e3bd 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ library. | Dependency | Supported Versions | |:--------------|:-------------------| -| PostGIS | >= 3.1 | -| PostgreSQL | >= 13 | +| PostGIS | >= 3.2 | +| PostgreSQL | >= 14 | | Doctrine ORM | ^2.19 and ^3.0 | | Doctrine DBAL | ^3.7 and ^4.0 | @@ -328,24 +328,24 @@ PHP container connected to specific database containers. The script names follow the pattern `run--.sh`. -To run the test suite against PostgreSQL 13 with PostGIS 3.1, use the script -`./docker/run-13-31.sh`. +To run the test suite against PostgreSQL 18 with PostGIS 3.6, use the script +`./docker/run-18-36.sh`. Tests are either PostGIS version specific (versioned) or agnostic, and are run separately using PHPUnit groups. -e.g. for PostGIS 3.1 and PostgreSQL 13 +e.g. for PostGIS 3.6 and PostgreSQL 18 ```bash -./docker/run-13-31.sh vendor/bin/phpunit --exclude-group=versioned -./docker/run-13-31.sh vendor/bin/phpunit --group=postgis-3.1 +./docker/run-18-36.sh vendor/bin/phpunit --exclude-group=versioned +./docker/run-18-36.sh vendor/bin/phpunit --group=postgis-3.6 ``` -e.g. for PostGIS 3.0 and PostgreSQL 13 +e.g. for PostGIS 3.2 and PostgreSQL 14 ```bash -./docker/run-13-30.sh vendor/bin/phpunit --exclude-group=versioned -./docker/run-13-30.sh vendor/bin/phpunit --group=postgis-3.0 +./docker/run-14-32.sh vendor/bin/phpunit --exclude-group=versioned +./docker/run-14-32.sh vendor/bin/phpunit --group=postgis-3.2 ``` License diff --git a/composer.json b/composer.json index 5311fc7e..2f8c2acc 100644 --- a/composer.json +++ b/composer.json @@ -31,7 +31,7 @@ "doctrine/orm": "^2.19 || ^3.0", "friendsofphp/php-cs-fixer": "^3.13", "phpunit/phpunit": "^9.6", - "vimeo/psalm": "^5.9", + "vimeo/psalm": "^6.13", "symfony/doctrine-bridge": "^6.4", "symfony/doctrine-messenger": "^6.4" }, diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index e004d9ab..be2f13fa 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,94 +1,54 @@ -version: '3.7' - services: - db-11-30: - image: postgis/postgis:11-3.0-alpine - environment: - POSTGRES_PASSWORD: postgres - networks: - - db-11-30 - - db-11-31: - image: postgis/postgis:11-3.1-alpine + db-14-32: + image: postgis/postgis:14-3.2-alpine environment: POSTGRES_PASSWORD: postgres networks: - - db-11-31 + - db-14-32 - db-12-30: - image: postgis/postgis:12-3.0-alpine + db-15-34: + image: postgis/postgis:15-3.4-alpine environment: POSTGRES_PASSWORD: postgres networks: - - db-12-30 + - db-15-34 - db-12-31: - image: postgis/postgis:12-3.1-alpine + db-16-34: + image: postgis/postgis:16-3.4-alpine environment: POSTGRES_PASSWORD: postgres networks: - - db-12-31 + - db-16-34 - db-13-30: - image: postgis/postgis:13-3.0-alpine + db-17-36: + image: postgis/postgis:17-3.6-alpine + platform: linux/amd64 environment: POSTGRES_PASSWORD: postgres networks: - - db-13-30 + - db-17-36 - db-13-31: - image: postgis/postgis:13-3.1-alpine + db-18-36: + image: postgis/postgis:18-3.6-alpine + platform: linux/amd64 environment: POSTGRES_PASSWORD: postgres networks: - - db-13-31 - - db-13-32: - image: postgis/postgis:13-3.2-alpine - environment: - POSTGRES_PASSWORD: postgres - networks: - - db-13-32 - - db-13-33: - image: postgis/postgis:13-3.3-alpine - environment: - POSTGRES_PASSWORD: postgres - networks: - - db-13-33 - - db-13-34: - image: postgis/postgis:13-3.4-alpine - environment: - POSTGRES_PASSWORD: postgres - networks: - - db-13-34 + - db-18-36 networks: - db-11-30: - name: doctrine-postgis-11-30 - driver: bridge - db-11-31: - name: doctrine-postgis-11-31 - driver: bridge - db-12-30: - name: doctrine-postgis-12-30 - driver: bridge - db-12-31: - name: doctrine-postgis-12-31 - driver: bridge - db-13-30: - name: doctrine-postgis-13-30 + db-14-32: + name: doctrine-postgis-14-32 driver: bridge - db-13-31: - name: doctrine-postgis-13-31 + db-15-34: + name: doctrine-postgis-15-34 driver: bridge - db-13-32: - name: doctrine-postgis-13-32 + db-16-34: + name: doctrine-postgis-16-34 driver: bridge - db-13-33: - name: doctrine-postgis-13-33 + db-17-36: + name: doctrine-postgis-17-36 driver: bridge - db-13-34: - name: doctrine-postgis-13-34 + db-18-36: + name: doctrine-postgis-18-36 driver: bridge diff --git a/docker/run-11-30.sh b/docker/run-11-30.sh deleted file mode 100755 index 6748c177..00000000 --- a/docker/run-11-30.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -set -e - -echo " -Running with: - -* Postgres 11 -* PostGIS 3.0 -" - -docker run -it --rm --network doctrine-postgis-11-30 -e DB_HOST=db-11-30 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-11-31.sh b/docker/run-11-31.sh deleted file mode 100755 index bc2b5ffc..00000000 --- a/docker/run-11-31.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -set -e - -echo " -Running with: - -* Postgres 11 -* PostGIS 3.1 -" - -docker run -it --rm --network doctrine-postgis-11-31 -e DB_HOST=db-11-31 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-12-30.sh b/docker/run-12-30.sh deleted file mode 100755 index 18416d4c..00000000 --- a/docker/run-12-30.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -set -e - -echo " -Running with: - -* Postgres 12 -* PostGIS 3.0 -" - -docker run -it --rm --network doctrine-postgis-12-30 -e DB_HOST=db-12-30 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-12-31.sh b/docker/run-12-31.sh deleted file mode 100755 index 480db3cd..00000000 --- a/docker/run-12-31.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -set -e - -echo " -Running with: - -* Postgres 12 -* PostGIS 3.1 -" - -docker run -it --rm --network doctrine-postgis-12-31 -e DB_HOST=db-12-31 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-13-30.sh b/docker/run-13-30.sh deleted file mode 100755 index a362d5d0..00000000 --- a/docker/run-13-30.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -set -e - -echo " -Running with: - -* Postgres 13 -* PostGIS 3.0 -" - -docker run -it --rm --network doctrine-postgis-13-30 -e DB_HOST=db-13-30 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-13-31.sh b/docker/run-13-31.sh deleted file mode 100755 index 88ac99ca..00000000 --- a/docker/run-13-31.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -set -e - -echo " -Running with: - -* Postgres 13 -* PostGIS 3.1 -" - -docker run -it --rm --network doctrine-postgis-13-31 -e DB_HOST=db-13-31 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-13-32.sh b/docker/run-13-32.sh deleted file mode 100755 index 37ac538b..00000000 --- a/docker/run-13-32.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -set -e - -echo " -Running with: - -* Postgres 13 -* PostGIS 3.2 -" - -docker run -it --rm --network doctrine-postgis-13-32 -e DB_HOST=db-13-32 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-13-33.sh b/docker/run-13-33.sh deleted file mode 100755 index a11b3b53..00000000 --- a/docker/run-13-33.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -set -e - -echo " -Running with: - -* Postgres 13 -* PostGIS 3.3 -" - -docker run -it --rm --network doctrine-postgis-13-33 -e DB_HOST=db-13-33 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-13-34.sh b/docker/run-13-34.sh deleted file mode 100755 index 9489906b..00000000 --- a/docker/run-13-34.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -set -e - -echo " -Running with: - -* Postgres 13 -* PostGIS 3.4 -" - -docker run -it --rm --network doctrine-postgis-13-34 -e DB_HOST=db-13-34 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-14-32.sh b/docker/run-14-32.sh new file mode 100755 index 00000000..26ff449c --- /dev/null +++ b/docker/run-14-32.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +echo " +Running with: + +* Postgres 14 +* PostGIS 3.2 +" + +docker run -it --rm --network doctrine-postgis-14-32 -e DB_HOST=db-14-32 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-15-34.sh b/docker/run-15-34.sh new file mode 100755 index 00000000..a0d08af7 --- /dev/null +++ b/docker/run-15-34.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +echo " +Running with: + +* Postgres 15 +* PostGIS 3.4 +" + +docker run -it --rm --network doctrine-postgis-15-34 -e DB_HOST=db-15-34 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-16-34.sh b/docker/run-16-34.sh new file mode 100755 index 00000000..2c7c87cc --- /dev/null +++ b/docker/run-16-34.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +echo " +Running with: + +* Postgres 16 +* PostGIS 3.4 +" + +docker run -it --rm --network doctrine-postgis-16-34 -e DB_HOST=db-16-34 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-17-36.sh b/docker/run-17-36.sh new file mode 100755 index 00000000..b39e82bb --- /dev/null +++ b/docker/run-17-36.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +echo " +Running with: + +* Postgres 17 +* PostGIS 3.6 +" + +docker run -it --rm --network doctrine-postgis-17-36 -e DB_HOST=db-17-36 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/docker/run-18-36.sh b/docker/run-18-36.sh new file mode 100755 index 00000000..8234411c --- /dev/null +++ b/docker/run-18-36.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +echo " +Running with: + +* Postgres 18 +* PostGIS 3.6 +" + +docker run -it --rm --network doctrine-postgis-18-36 -e DB_HOST=db-18-36 -v "${PWD}":/app doctrine-postgis-php "$@" diff --git a/psalm-baseline.xml b/psalm-baseline.xml index a7e678bf..1694c152 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,12 +1,14 @@ - + + + + + + - - - _conn]]> @@ -14,4 +16,14 @@ _conn]]> + + + + + + + + + + diff --git a/psalm.xml b/psalm.xml index 5153dcce..7ab1eadb 100644 --- a/psalm.xml +++ b/psalm.xml @@ -17,4 +17,7 @@ + + + diff --git a/tests/Driver/DriverTest.php b/tests/Driver/DriverTest.php index 3fdeff1c..58bf457f 100644 --- a/tests/Driver/DriverTest.php +++ b/tests/Driver/DriverTest.php @@ -5,9 +5,8 @@ namespace Jsor\Doctrine\PostGIS\Driver; use Doctrine\DBAL\Driver\API\ExceptionConverter; +use Doctrine\DBAL\Driver\Connection; use Doctrine\DBAL\Driver\PDO\PgSQL\Driver as PgSQLDriver; -use Doctrine\DBAL\Types\Type; -use Jsor\Doctrine\PostGIS\Types\PostGISType; use PHPUnit\Framework\TestCase; /** @@ -21,11 +20,8 @@ final class DriverTest extends TestCase { public function testConnect(): void { - static::assertFalse(Type::hasType(PostGISType::GEOGRAPHY)); - static::assertFalse(Type::hasType(PostGISType::GEOMETRY)); - $driver = $this->getDriver(); - $driver->connect([ + $conn = $driver->connect([ 'driver' => getenv('DB_TYPE'), 'user' => getenv('DB_USER'), 'password' => getenv('DB_PASSWORD'), @@ -34,8 +30,7 @@ public function testConnect(): void 'port' => getenv('DB_PORT'), ]); - static::assertTrue(Type::hasType(PostGISType::GEOGRAPHY)); - static::assertTrue(Type::hasType(PostGISType::GEOMETRY)); + static::assertInstanceOf(Connection::class, $conn); } public function testGetDatabasePlatform(): void @@ -47,11 +42,11 @@ public function testGetDatabasePlatform(): void public function providerVersions(): iterable { - yield ['11']; - yield ['12']; - yield ['13']; yield ['14']; yield ['15']; + yield ['16']; + yield ['17']; + yield ['18']; } /** @dataProvider providerVersions */ diff --git a/tests/Driver/MiddlewareTest.php b/tests/Driver/MiddlewareTest.php index e6705692..4f359e1a 100644 --- a/tests/Driver/MiddlewareTest.php +++ b/tests/Driver/MiddlewareTest.php @@ -5,6 +5,8 @@ namespace Jsor\Doctrine\PostGIS\Driver; use Doctrine\DBAL\Driver\PgSQL\Driver as PgSQLDriver; +use Doctrine\DBAL\Types\Type; +use Jsor\Doctrine\PostGIS\Types\PostGISType; use PHPUnit\Framework\TestCase; /** @@ -19,5 +21,7 @@ public function testWrap(): void $middleware = new Middleware(); static::assertInstanceOf(Driver::class, $middleware->wrap(new PgSQLDriver())); + static::assertTrue(Type::hasType(PostGISType::GEOGRAPHY)); + static::assertTrue(Type::hasType(PostGISType::GEOMETRY)); } } diff --git a/tests/Driver/PostGISPlatformTest.php b/tests/Driver/PostGISPlatformTest.php index 5756229b..b5073378 100644 --- a/tests/Driver/PostGISPlatformTest.php +++ b/tests/Driver/PostGISPlatformTest.php @@ -9,6 +9,7 @@ use Doctrine\DBAL\Schema\Schema; use Doctrine\DBAL\Schema\SchemaDiff; use Doctrine\DBAL\Schema\Table; +use Doctrine\DBAL\Types\NumberType; use Doctrine\DBAL\Types\Type; use Jsor\Doctrine\PostGIS\AbstractFunctionalTestCase; use Jsor\Doctrine\PostGIS\Schema\SchemaManager; @@ -140,7 +141,11 @@ public function testGetCreateTablesSql(): void $sql = (new PostGISPlatform())->getCreateTablesSQL([$table1, $table2]); static::assertCreateTableSql($sql); - static::assertContains('ALTER TABLE places ADD CONSTRAINT FK_FEAF6C55DF69572F FOREIGN KEY (points_id) REFERENCES points (id) NOT DEFERRABLE INITIALLY IMMEDIATE', $sql); + if (class_exists(NumberType::class)) { + static::assertContains('ALTER TABLE places ADD CONSTRAINT FK_FEAF6C55DF69572F FOREIGN KEY (points_id) REFERENCES points (id)', $sql); + } else { + static::assertContains('ALTER TABLE places ADD CONSTRAINT FK_FEAF6C55DF69572F FOREIGN KEY (points_id) REFERENCES points (id) NOT DEFERRABLE INITIALLY IMMEDIATE', $sql); + } } public function testGetCreateTableSqlSkipsAlreadyAddedTable(): void @@ -172,7 +177,11 @@ public function testGetDropTableSql(): void private static function assertCreateTableSql(array $sql): void { - $expected = 'CREATE TABLE points (id INT NOT NULL, text TEXT NOT NULL, tsvector TEXT NOT NULL, geometry geometry(GEOMETRY, 0) NOT NULL, point geometry(POINT, 0) NOT NULL, point_2d geometry(POINT, 3785) NOT NULL, point_3dz geometry(POINTZ, 3785) NOT NULL, point_3dm geometry(POINTM, 3785) NOT NULL, point_4d geometry(POINTZM, 3785) NOT NULL, point_2d_nullable geometry(POINT, 3785) DEFAULT NULL, point_2d_nosrid geometry(POINT, 0) NOT NULL, geography geography(GEOMETRY, 4326) NOT NULL, point_geography_2d geography(POINT, 4326) NOT NULL, point_geography_2d_srid geography(POINT, 4326) NOT NULL, PRIMARY KEY(id))'; + if (class_exists(NumberType::class)) { + $expected = 'CREATE TABLE points (id INT NOT NULL, text TEXT NOT NULL, tsvector TEXT NOT NULL, geometry geometry(GEOMETRY, 0) NOT NULL, point geometry(POINT, 0) NOT NULL, point_2d geometry(POINT, 3785) NOT NULL, point_3dz geometry(POINTZ, 3785) NOT NULL, point_3dm geometry(POINTM, 3785) NOT NULL, point_4d geometry(POINTZM, 3785) NOT NULL, point_2d_nullable geometry(POINT, 3785) DEFAULT NULL, point_2d_nosrid geometry(POINT, 0) NOT NULL, geography geography(GEOMETRY, 4326) NOT NULL, point_geography_2d geography(POINT, 4326) NOT NULL, point_geography_2d_srid geography(POINT, 4326) NOT NULL, PRIMARY KEY (id))'; + } else { + $expected = 'CREATE TABLE points (id INT NOT NULL, text TEXT NOT NULL, tsvector TEXT NOT NULL, geometry geometry(GEOMETRY, 0) NOT NULL, point geometry(POINT, 0) NOT NULL, point_2d geometry(POINT, 3785) NOT NULL, point_3dz geometry(POINTZ, 3785) NOT NULL, point_3dm geometry(POINTM, 3785) NOT NULL, point_4d geometry(POINTZM, 3785) NOT NULL, point_2d_nullable geometry(POINT, 3785) DEFAULT NULL, point_2d_nosrid geometry(POINT, 0) NOT NULL, geography geography(GEOMETRY, 4326) NOT NULL, point_geography_2d geography(POINT, 4326) NOT NULL, point_geography_2d_srid geography(POINT, 4326) NOT NULL, PRIMARY KEY(id))'; + } static::assertContains($expected, $sql); static::assertContains("COMMENT ON TABLE points IS 'This is a comment for table points'", $sql); diff --git a/tests/Functions/ST_3DClosestPointTest.php b/tests/Functions/ST_3DClosestPointTest.php index a835f053..eb67319d 100644 --- a/tests/Functions/ST_3DClosestPointTest.php +++ b/tests/Functions/ST_3DClosestPointTest.php @@ -50,10 +50,6 @@ protected function setUp(): void $em->clear(); } - /** - * @group postgis-3.0 - * @group versioned - */ public function testQuery1(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_AsEWKT(ST_3DClosestPoint(ST_GeomFromEWKT(\'LINESTRING (20 80 20, 98 190 1, 110 180 3, 50 75 1000)\'), ST_GeomFromEWKT(\'POINT(100 100 30)\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); @@ -74,40 +70,6 @@ public function testQuery1(): void } }); - $expected = [ - 'value' => 'POINT(54.6993798867619 128.935022917228 11.5475869506606)', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - /** - * @group postgis-3.1 - * @group postgis-3.2 - * @group postgis-3.3 - * @group postgis-3.4 - * @group versioned - */ - public function testQuery2(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsEWKT(ST_3DClosestPoint(ST_GeomFromEWKT(\'LINESTRING (20 80 20, 98 190 1, 110 180 3, 50 75 1000)\'), ST_GeomFromEWKT(\'POINT(100 100 30)\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - $expected = [ 'value' => 'POINT(54.69937988676193 128.93502291722837 11.547586950660556)', ]; diff --git a/tests/Functions/ST_3DShortestLineTest.php b/tests/Functions/ST_3DShortestLineTest.php index 0c4c2436..1703eb39 100644 --- a/tests/Functions/ST_3DShortestLineTest.php +++ b/tests/Functions/ST_3DShortestLineTest.php @@ -50,10 +50,6 @@ protected function setUp(): void $em->clear(); } - /** - * @group postgis-3.0 - * @group versioned - */ public function testQuery1(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_AsEWKT(ST_3DShortestLine(ST_GeomFromEWKT(\'LINESTRING (20 80 20, 98 190 1, 110 180 3, 50 75 1000)\'), ST_GeomFromEWKT(\'POINT(100 100 30)\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); @@ -74,40 +70,6 @@ public function testQuery1(): void } }); - $expected = [ - 'value' => 'LINESTRING(54.6993798867619 128.935022917228 11.5475869506606,100 100 30)', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - /** - * @group postgis-3.1 - * @group postgis-3.2 - * @group postgis-3.3 - * @group postgis-3.4 - * @group versioned - */ - public function testQuery2(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsEWKT(ST_3DShortestLine(ST_GeomFromEWKT(\'LINESTRING (20 80 20, 98 190 1, 110 180 3, 50 75 1000)\'), ST_GeomFromEWKT(\'POINT(100 100 30)\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - $expected = [ 'value' => 'LINESTRING(54.69937988676193 128.93502291722837 11.547586950660556,100 100 30)', ]; diff --git a/tests/Functions/ST_BoundaryTest.php b/tests/Functions/ST_BoundaryTest.php index 8d94c133..0c54715a 100644 --- a/tests/Functions/ST_BoundaryTest.php +++ b/tests/Functions/ST_BoundaryTest.php @@ -51,8 +51,6 @@ protected function setUp(): void } /** - * @group postgis-3.0 - * @group postgis-3.1 * @group postgis-3.2 * @group versioned */ @@ -84,8 +82,8 @@ public function testQuery1(): void } /** - * @group postgis-3.3 * @group postgis-3.4 + * @group postgis-3.6 * @group versioned */ public function testQuery2(): void @@ -109,8 +107,8 @@ public function testQuery2(): void }); $expected = [ - 'value' => 'MULTIPOINT((1 1),(-1 1))', -]; + 'value' => 'MULTIPOINT((1 1),(-1 1))', + ]; $this->assertEqualsWithDelta($expected, $result, 0.001); } diff --git a/tests/Functions/ST_Box2dFromGeoHashTest.php b/tests/Functions/ST_Box2dFromGeoHashTest.php index 8906aac3..cbc7227e 100644 --- a/tests/Functions/ST_Box2dFromGeoHashTest.php +++ b/tests/Functions/ST_Box2dFromGeoHashTest.php @@ -50,72 +50,7 @@ protected function setUp(): void $em->clear(); } - /** - * @group postgis-3.0 - * @group versioned - */ public function testQuery1(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_Box2dFromGeoHash(\'9qqj7nmxncgyy4d0dbxqz0\') AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - - $expected = [ - 'value' => 'BOX(-115.172816 36.114646,-115.172816 36.114646)', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - /** - * @group postgis-3.1 - * @group postgis-3.2 - * @group postgis-3.3 - * @group postgis-3.4 - * @group versioned - */ - public function testQuery2(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_Box2dFromGeoHash(\'9qqj7nmxncgyy4d0dbxqz0\') AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - - $expected = [ - 'value' => 'BOX(-115.17281600000001 36.11464599999999,-115.172816 36.114646)', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - public function testQuery3(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_Box2dFromGeoHash(\'9qqj7nmxncgyy4d0dbxqz0\', 0) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); @@ -143,44 +78,9 @@ public function testQuery3(): void } /** - * @group postgis-3.0 - * @group versioned - */ - public function testQuery4(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_Box2dFromGeoHash(\'9qqj7nmxncgyy4d0dbxqz0\', 10) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - - $expected = [ - 'value' => 'BOX(-115.17282128334 36.1146408319473,-115.172810554504 36.1146461963654)', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - /** - * @group postgis-3.1 - * @group postgis-3.2 - * @group postgis-3.3 - * @group postgis-3.4 - * @group versioned + * @group postgis-3.6 */ - public function testQuery5(): void + public function testQuery2(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_Box2dFromGeoHash(\'9qqj7nmxncgyy4d0dbxqz0\', 10) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); diff --git a/tests/Functions/ST_BufferTest.php b/tests/Functions/ST_BufferTest.php index 3cc03e87..d880b0b7 100644 --- a/tests/Functions/ST_BufferTest.php +++ b/tests/Functions/ST_BufferTest.php @@ -51,7 +51,8 @@ protected function setUp(): void } /** - * @group postgis-3.0 + * @group postgis-3.2 + * @group postgis-3.4 * @group versioned */ public function testQuery1(): void @@ -75,14 +76,14 @@ public function testQuery1(): void }); $expected = [ - 'value' => 'POLYGON((150 90,149.039264020162 80.2454838991936,146.193976625564 70.8658283817455,141.573480615127 62.2214883490199,135.355339059327 54.6446609406727,127.77851165098 48.4265193848728,119.134171618255 43.8060233744357,109.754516100806 40.9607359798385,100 40,90.2454838991937 40.9607359798385,80.8658283817456 43.8060233744356,72.22148834902 48.4265193848727,64.6446609406727 54.6446609406725,58.4265193848728 62.2214883490198,53.8060233744357 70.8658283817454,50.9607359798385 80.2454838991934,50 89.9999999999998,50.9607359798384 99.7545161008062,53.8060233744356 109.134171618254,58.4265193848726 117.77851165098,64.6446609406725 125.355339059327,72.2214883490197 131.573480615127,80.8658283817453 136.193976625564,90.2454838991934 139.039264020161,99.9999999999998 140,109.754516100806 139.039264020162,119.134171618254 136.193976625564,127.77851165098 131.573480615127,135.355339059327 125.355339059327,141.573480615127 117.77851165098,146.193976625564 109.134171618255,149.039264020162 99.7545161008065,150 90))', + 'value' => 'POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,99.99999999999999 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90))', ]; $this->assertEqualsWithDelta($expected, $result, 0.001); } /** - * @group postgis-3.1 + * @group postgis-3.6 * @group versioned */ public function testQuery2(): void @@ -106,46 +107,13 @@ public function testQuery2(): void }); $expected = [ - 'value' => 'POLYGON((150 90,149.0392640201615 80.2454838991936,146.19397662556435 70.86582838174553,141.57348061512727 62.221488349019914,135.3553390593274 54.64466094067266,127.77851165098015 48.42651938487277,119.13417161825454 43.80602337443568,109.75451610080648 40.96073597983849,100.00000000000009 40,90.24548389919367 40.96073597983846,80.86582838174562 43.806023374435625,72.22148834901998 48.426519384872684,64.64466094067271 54.644660940672544,58.42651938487281 62.221488349019786,53.80602337443571 70.86582838174539,50.9607359798385 80.24548389919345,50 89.99999999999984,50.96073597983845 99.75451610080624,53.80602337443559 109.13417161825431,58.42651938487263 117.77851165097995,64.64466094067248 125.35533905932724,72.22148834901971 131.57348061512715,80.86582838174532 136.19397662556426,90.24548389919335 139.03926402016148,99.99999999999977 140,109.75451610080616 139.03926402016157,119.13417161825426 136.19397662556443,127.77851165097987 131.57348061512744,135.35533905932718 125.35533905932758,141.5734806151271 117.77851165098036,146.19397662556423 109.13417161825477,149.03926402016145 99.75451610080674,150 90))', + 'value' => 'POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,100 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90))', ]; $this->assertEqualsWithDelta($expected, $result, 0.001); } - /** - * @group postgis-3.2 - * @group postgis-3.3 - * @group postgis-3.4 - * @group versioned - */ public function testQuery3(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Buffer(ST_GeomFromText(\'POINT(100 90)\'), 50, \'quad_segs=8\')) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - - $expected = [ - 'value' => 'POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,99.99999999999999 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90))', -]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - public function testQuery4(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_NPoints(ST_Buffer(ST_GeomFromText(\'POINT(100 90)\'), 50)) AS promisingcircle_pcount, ST_NPoints(ST_Buffer(ST_GeomFromText(\'POINT(100 90)\'), 50, 2)) AS lamecircle_pcount FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); diff --git a/tests/Functions/ST_CentroidTest.php b/tests/Functions/ST_CentroidTest.php index f1dd4132..4c40d855 100644 --- a/tests/Functions/ST_CentroidTest.php +++ b/tests/Functions/ST_CentroidTest.php @@ -50,10 +50,6 @@ protected function setUp(): void $em->clear(); } - /** - * @group postgis-3.0 - * @group versioned - */ public function testQuery1(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Centroid(ST_GeomFromText(\'MULTIPOINT(-1 0, -1 2, -1 3, -1 4, -1 7, 0 1, 0 3, 1 1, 2 0, 6 0, 7 8, 9 8, 10 6 )\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); @@ -74,40 +70,6 @@ public function testQuery1(): void } }); - $expected = [ - 'value' => 'POINT(2.30769230769231 3.30769230769231)', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - /** - * @group postgis-3.1 - * @group postgis-3.2 - * @group postgis-3.3 - * @group postgis-3.4 - * @group versioned - */ - public function testQuery2(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Centroid(ST_GeomFromText(\'MULTIPOINT(-1 0, -1 2, -1 3, -1 4, -1 7, 0 1, 0 3, 1 1, 2 0, 6 0, 7 8, 9 8, 10 6 )\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - $expected = [ 'value' => 'POINT(2.307692307692308 3.307692307692308)', ]; diff --git a/tests/Functions/ST_CollectTest.php b/tests/Functions/ST_CollectTest.php index 5b5bdf8a..3f60956d 100644 --- a/tests/Functions/ST_CollectTest.php +++ b/tests/Functions/ST_CollectTest.php @@ -51,8 +51,6 @@ protected function setUp(): void } /** - * @group postgis-3.0 - * @group postgis-3.1 * @group postgis-3.2 * @group versioned */ @@ -84,8 +82,8 @@ public function testQuery1(): void } /** - * @group postgis-3.3 * @group postgis-3.4 + * @group postgis-3.6 * @group versioned */ public function testQuery2(): void @@ -109,8 +107,8 @@ public function testQuery2(): void }); $expected = [ - 'value' => 'MULTIPOINT((1 2),(-2 3))', -]; + 'value' => 'MULTIPOINT((1 2),(-2 3))', + ]; $this->assertEqualsWithDelta($expected, $result, 0.001); } diff --git a/tests/Functions/ST_GeomFromGeoHashTest.php b/tests/Functions/ST_GeomFromGeoHashTest.php index ad6021bd..a8cde57d 100644 --- a/tests/Functions/ST_GeomFromGeoHashTest.php +++ b/tests/Functions/ST_GeomFromGeoHashTest.php @@ -50,72 +50,7 @@ protected function setUp(): void $em->clear(); } - /** - * @group postgis-3.0 - * @group versioned - */ public function testQuery1(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_GeomFromGeoHash(\'9qqj7nmxncgyy4d0dbxqz0\')) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - - $expected = [ - 'value' => 'POLYGON((-115.172816 36.114646,-115.172816 36.114646,-115.172816 36.114646,-115.172816 36.114646,-115.172816 36.114646))', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - /** - * @group postgis-3.1 - * @group postgis-3.2 - * @group postgis-3.3 - * @group postgis-3.4 - * @group versioned - */ - public function testQuery2(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_GeomFromGeoHash(\'9qqj7nmxncgyy4d0dbxqz0\')) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - - $expected = [ - 'value' => 'POLYGON((-115.17281600000001 36.11464599999999,-115.17281600000001 36.114646,-115.172816 36.114646,-115.172816 36.11464599999999,-115.17281600000001 36.11464599999999))', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - public function testQuery3(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_GeomFromGeoHash(\'9qqj7nmxncgyy4d0dbxqz0\', 4)) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); diff --git a/tests/Functions/ST_LineCrossingDirectionTest.php b/tests/Functions/ST_LineCrossingDirectionTest.php index 9c7e11f6..a749278e 100644 --- a/tests/Functions/ST_LineCrossingDirectionTest.php +++ b/tests/Functions/ST_LineCrossingDirectionTest.php @@ -50,8 +50,6 @@ protected function setUp(): void } /** - * @group postgis-3.0 - * @group postgis-3.1 * @group postgis-3.2 * @group versioned */ @@ -81,8 +79,8 @@ public function testQuery1(): void } /** - * @group postgis-3.3 * @group postgis-3.4 + * @group postgis-3.6 * @group versioned */ public function testQuery2(): void @@ -104,8 +102,8 @@ public function testQuery2(): void }); $expected = [ - 'value' => 3.0, -]; + 'value' => 3.0, + ]; $this->assertEqualsWithDelta($expected, $result, 0.001); } diff --git a/tests/Functions/ST_MinimumBoundingCircleTest.php b/tests/Functions/ST_MinimumBoundingCircleTest.php index f90c7afa..30487b1a 100644 --- a/tests/Functions/ST_MinimumBoundingCircleTest.php +++ b/tests/Functions/ST_MinimumBoundingCircleTest.php @@ -50,10 +50,6 @@ protected function setUp(): void $em->clear(); } - /** - * @group postgis-3.0 - * @group versioned - */ public function testQuery1(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_MinimumBoundingCircle(ST_GeomFromEWKT(\'MULTIPOINT((10 10), (20 20), (10 20), (15 19))\'), 2)) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); @@ -74,40 +70,6 @@ public function testQuery1(): void } }); - $expected = [ - 'value' => 'POLYGON((15 22.6536686473018,20.411961001462 20.411961001462,22.6536686473018 15,20.411961001462 9.58803899853803,15 7.3463313526982,9.58803899853803 9.58803899853803,7.3463313526982 15,9.58803899853803 20.411961001462,15 22.6536686473018))', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - /** - * @group postgis-3.1 - * @group postgis-3.2 - * @group postgis-3.3 - * @group postgis-3.4 - * @group versioned - */ - public function testQuery2(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_MinimumBoundingCircle(ST_GeomFromEWKT(\'MULTIPOINT((10 10), (20 20), (10 20), (15 19))\'), 2)) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - $expected = [ 'value' => 'POLYGON((15 22.653668647301796,20.411961001461968 20.41196100146197,22.653668647301796 15,20.41196100146197 9.58803899853803,15.000000000000002 7.346331352698204,9.58803899853803 9.588038998538028,7.346331352698204 14.999999999999998,9.588038998538028 20.411961001461968,14.999999999999998 22.653668647301796))', ]; diff --git a/tests/Functions/ST_PointFromGeoHashTest.php b/tests/Functions/ST_PointFromGeoHashTest.php index ec2a3990..770294b3 100644 --- a/tests/Functions/ST_PointFromGeoHashTest.php +++ b/tests/Functions/ST_PointFromGeoHashTest.php @@ -50,72 +50,7 @@ protected function setUp(): void $em->clear(); } - /** - * @group postgis-3.0 - * @group versioned - */ public function testQuery1(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_PointFromGeoHash(\'9qqj7nmxncgyy4d0dbxqz0\')) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - - $expected = [ - 'value' => 'POINT(-115.172816 36.114646)', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - /** - * @group postgis-3.1 - * @group postgis-3.2 - * @group postgis-3.3 - * @group postgis-3.4 - * @group versioned - */ - public function testQuery2(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_PointFromGeoHash(\'9qqj7nmxncgyy4d0dbxqz0\')) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - - $expected = [ - 'value' => 'POINT(-115.17281600000001 36.11464599999999)', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - public function testQuery3(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_PointFromGeoHash(\'9qqj7nmxncgyy4d0dbxqz0\', 4)) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); diff --git a/tests/Functions/ST_ProjectTest.php b/tests/Functions/ST_ProjectTest.php index adaebda1..284124da 100644 --- a/tests/Functions/ST_ProjectTest.php +++ b/tests/Functions/ST_ProjectTest.php @@ -51,10 +51,7 @@ protected function setUp(): void } /** - * @group postgis-3.0 - * @group postgis-3.1 * @group postgis-3.2 - * @group postgis-3.3 * @group versioned */ public function testQuery1(): void @@ -87,6 +84,7 @@ public function testQuery1(): void /** * @group postgis-3.4 + * @group postgis-3.6 * @group versioned */ public function testQuery2(): void @@ -110,9 +108,9 @@ public function testQuery2(): void }); $expected = [ - 'value1' => 70710.67811865476, - 'value2' => 70710.67811865475, -]; + 'value1' => 70710.67811865476, + 'value2' => 70710.67811865475, + ]; $this->assertEqualsWithDelta($expected, $result, 0.001); } diff --git a/tests/Functions/ST_ShiftLongitudeTest.php b/tests/Functions/ST_ShiftLongitudeTest.php index edd4b1e1..d954fcb9 100644 --- a/tests/Functions/ST_ShiftLongitudeTest.php +++ b/tests/Functions/ST_ShiftLongitudeTest.php @@ -50,10 +50,6 @@ protected function setUp(): void $em->clear(); } - /** - * @group postgis-3.0 - * @group versioned - */ public function testQuery1(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_ShiftLongitude(ST_GeomFromText(\'LINESTRING(-118.58 38.38, -118.20 38.45)\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); @@ -74,40 +70,6 @@ public function testQuery1(): void } }); - $expected = [ - 'value' => 'LINESTRING(241.42 38.38,241.8 38.45)', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - /** - * @group postgis-3.1 - * @group postgis-3.2 - * @group postgis-3.3 - * @group postgis-3.4 - * @group versioned - */ - public function testQuery2(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_ShiftLongitude(ST_GeomFromText(\'LINESTRING(-118.58 38.38, -118.20 38.45)\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - $expected = [ 'value' => 'LINESTRING(241.42000000000002 38.38,241.8 38.45)', ]; diff --git a/tests/Functions/ST_ShortestLineTest.php b/tests/Functions/ST_ShortestLineTest.php index 22225b81..0f27bcd9 100644 --- a/tests/Functions/ST_ShortestLineTest.php +++ b/tests/Functions/ST_ShortestLineTest.php @@ -50,10 +50,6 @@ protected function setUp(): void $em->clear(); } - /** - * @group postgis-3.0 - * @group versioned - */ public function testQuery1(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_ShortestLine(ST_GeomFromText(\'POINT(100 100)\'), ST_GeomFromText(\'LINESTRING(20 80, 98 190, 110 180, 50 75)\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); @@ -74,40 +70,6 @@ public function testQuery1(): void } }); - $expected = [ - 'value' => 'LINESTRING(100 100,73.0769230769231 115.384615384615)', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - /** - * @group postgis-3.1 - * @group postgis-3.2 - * @group postgis-3.3 - * @group postgis-3.4 - * @group versioned - */ - public function testQuery2(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_ShortestLine(ST_GeomFromText(\'POINT(100 100)\'), ST_GeomFromText(\'LINESTRING(20 80, 98 190, 110 180, 50 75)\'))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - $expected = [ 'value' => 'LINESTRING(100 100,73.07692307692307 115.38461538461539)', ]; diff --git a/tests/Functions/ST_SplitTest.php b/tests/Functions/ST_SplitTest.php index ff504715..ab1ad613 100644 --- a/tests/Functions/ST_SplitTest.php +++ b/tests/Functions/ST_SplitTest.php @@ -51,7 +51,8 @@ protected function setUp(): void } /** - * @group postgis-3.0 + * @group postgis-3.2 + * @group postgis-3.4 * @group versioned */ public function testQuery1(): void @@ -75,14 +76,14 @@ public function testQuery1(): void }); $expected = [ - 'value' => 'GEOMETRYCOLLECTION(POLYGON((150 90,149.039264020162 80.2454838991936,146.193976625564 70.8658283817455,141.573480615127 62.2214883490199,135.355339059327 54.6446609406727,127.77851165098 48.4265193848728,119.134171618255 43.8060233744357,109.754516100806 40.9607359798385,100 40,90.2454838991937 40.9607359798385,80.8658283817456 43.8060233744356,72.22148834902 48.4265193848727,64.6446609406727 54.6446609406725,60.1371179574584 60.1371179574584,129.862882042542 129.862882042542,135.355339059327 125.355339059327,141.573480615127 117.77851165098,146.193976625564 109.134171618255,149.039264020162 99.7545161008065,150 90)),POLYGON((60.1371179574584 60.1371179574584,58.4265193848728 62.2214883490198,53.8060233744357 70.8658283817454,50.9607359798385 80.2454838991934,50 89.9999999999998,50.9607359798384 99.7545161008062,53.8060233744356 109.134171618254,58.4265193848726 117.77851165098,64.6446609406725 125.355339059327,72.2214883490197 131.573480615127,80.8658283817453 136.193976625564,90.2454838991934 139.039264020161,99.9999999999998 140,109.754516100806 139.039264020162,119.134171618254 136.193976625564,127.77851165098 131.573480615127,129.862882042542 129.862882042542,60.1371179574584 60.1371179574584)))', + 'value' => 'GEOMETRYCOLLECTION(POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,60.13711795745844 60.13711795745844,129.86288204254154 129.86288204254154,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90)),POLYGON((60.13711795745844 60.13711795745844,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,99.99999999999999 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,129.86288204254154 129.86288204254154,60.13711795745844 60.13711795745844)))', ]; $this->assertEqualsWithDelta($expected, $result, 0.001); } /** - * @group postgis-3.1 + * @group postgis-3.6 * @group versioned */ public function testQuery2(): void @@ -106,42 +107,9 @@ public function testQuery2(): void }); $expected = [ - 'value' => 'GEOMETRYCOLLECTION(POLYGON((150 90,149.0392640201615 80.2454838991936,146.19397662556435 70.86582838174553,141.57348061512727 62.221488349019914,135.3553390593274 54.64466094067266,127.77851165098015 48.42651938487277,119.13417161825454 43.80602337443568,109.75451610080648 40.96073597983849,100.00000000000009 40,90.24548389919367 40.96073597983846,80.86582838174562 43.806023374435625,72.22148834901998 48.426519384872684,64.64466094067271 54.644660940672544,60.13711795745844 60.13711795745844,129.86288204254154 129.86288204254154,135.35533905932718 125.35533905932758,141.5734806151271 117.77851165098036,146.19397662556423 109.13417161825477,149.03926402016145 99.75451610080674,150 90)),POLYGON((60.13711795745844 60.13711795745844,58.42651938487281 62.221488349019786,53.80602337443571 70.86582838174539,50.9607359798385 80.24548389919345,50 89.99999999999984,50.96073597983845 99.75451610080624,53.80602337443559 109.13417161825431,58.42651938487263 117.77851165097995,64.64466094067248 125.35533905932724,72.22148834901971 131.57348061512715,80.86582838174532 136.19397662556426,90.24548389919335 139.03926402016148,99.99999999999977 140,109.75451610080616 139.03926402016157,119.13417161825426 136.19397662556443,127.77851165097987 131.57348061512744,129.86288204254154 129.86288204254154,60.13711795745844 60.13711795745844)))', + 'value' => 'GEOMETRYCOLLECTION(POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,60.13711795745844 60.13711795745844,129.86288204254154 129.86288204254154,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90)),POLYGON((60.13711795745844 60.13711795745844,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,100 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,129.86288204254154 129.86288204254154,60.13711795745844 60.13711795745844)))', ]; $this->assertEqualsWithDelta($expected, $result, 0.001); } - - /** - * @group postgis-3.2 - * @group postgis-3.3 - * @group postgis-3.4 - * @group versioned - */ - public function testQuery3(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Split(ST_Buffer(ST_GeomFromText(\'POINT(100 90)\'), 50), ST_MakeLine(ST_MakePoint(10, 10),ST_MakePoint(190, 190)))) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - - $expected = [ - 'value' => 'GEOMETRYCOLLECTION(POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,60.13711795745844 60.13711795745844,129.86288204254154 129.86288204254154,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90)),POLYGON((60.13711795745844 60.13711795745844,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,99.99999999999999 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,129.86288204254154 129.86288204254154,60.13711795745844 60.13711795745844)))', -]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } } diff --git a/tests/Functions/ST_TransformTest.php b/tests/Functions/ST_TransformTest.php index 971bedfc..d3eaecad 100644 --- a/tests/Functions/ST_TransformTest.php +++ b/tests/Functions/ST_TransformTest.php @@ -50,10 +50,6 @@ protected function setUp(): void $em->clear(); } - /** - * @group postgis-3.0 - * @group versioned - */ public function testQuery1(): void { $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Transform(ST_GeomFromText(\'POLYGON((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,743238 2967416))\',2249),4326)) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); @@ -75,73 +71,9 @@ public function testQuery1(): void }); $expected = [ - 'value' => 'POLYGON((-71.1776848522251 42.3902896512902,-71.1776843766326 42.3903829478009,-71.1775844305465 42.3903826677917,-71.177582592723 42.3902893647987,-71.1776848522251 42.3902896512902))', + 'value' => 'POLYGON((-71.1776848522251 42.3902896512903,-71.17768437663261 42.390382947801015,-71.17758443054647 42.390382667791854,-71.17758259272304 42.390289364798825,-71.1776848522251 42.3902896512903))', ]; $this->assertEqualsWithDelta($expected, $result, 0.001); } - - /** - * @group postgis-3.1 - * @group versioned - */ - public function testQuery2(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Transform(ST_GeomFromText(\'POLYGON((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,743238 2967416))\',2249),4326)) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - - $expected = [ - 'value' => 'POLYGON((-71.1776848522251 42.39028965129018,-71.17768437663261 42.390382947800894,-71.17758443054647 42.39038266779171,-71.17758259272304 42.3902893647987,-71.1776848522251 42.39028965129018))', - ]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } - - /** - * @group postgis-3.2 - * @group postgis-3.3 - * @group postgis-3.4 - * @group versioned - */ - public function testQuery3(): void - { - $query = $this->_getEntityManager()->createQuery('SELECT ST_AsText(ST_Transform(ST_GeomFromText(\'POLYGON((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,743238 2967416))\',2249),4326)) AS value FROM Jsor\\Doctrine\\PostGIS\\Entity\\PointsEntity point'); - - $result = $query->getSingleResult(); - - array_walk_recursive($result, static function (&$data): void { - if (is_resource($data)) { - $data = stream_get_contents($data); - - if (false !== ($pos = strpos($data, 'x'))) { - $data = substr($data, $pos + 1); - } - } - - if (is_string($data)) { - $data = trim($data); - } - }); - - $expected = [ - 'value' => 'POLYGON((-71.1776848522251 42.3902896512903,-71.17768437663261 42.390382947801015,-71.17758443054647 42.390382667791854,-71.17758259272304 42.390289364798825,-71.1776848522251 42.3902896512903))', -]; - - $this->assertEqualsWithDelta($expected, $result, 0.001); - } } diff --git a/tests/Functions/ST_UnionTest.php b/tests/Functions/ST_UnionTest.php index 42fbfc97..907593aa 100644 --- a/tests/Functions/ST_UnionTest.php +++ b/tests/Functions/ST_UnionTest.php @@ -51,8 +51,6 @@ protected function setUp(): void } /** - * @group postgis-3.0 - * @group postgis-3.1 * @group postgis-3.2 * @group versioned */ @@ -84,8 +82,8 @@ public function testQuery1(): void } /** - * @group postgis-3.3 * @group postgis-3.4 + * @group postgis-3.6 * @group versioned */ public function testQuery2(): void @@ -109,8 +107,8 @@ public function testQuery2(): void }); $expected = [ - 'value' => 'MULTIPOINT((1 2),(-2 3))', -]; + 'value' => 'MULTIPOINT((1 2),(-2 3))', + ]; $this->assertEqualsWithDelta($expected, $result, 0.001); } diff --git a/tools/functions/geometry-accessors.php b/tools/functions/geometry-accessors.php index f75058aa..d62f9e67 100644 --- a/tools/functions/geometry-accessors.php +++ b/tools/functions/geometry-accessors.php @@ -27,14 +27,14 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0', 'postgis-3.1', 'postgis-3.2'], + 'groups' => ['postgis-3.2'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('LINESTRING(1 1,0 0, -1 1)'))) AS value", 'result' => [ 'value' => 'MULTIPOINT(1 1,-1 1)', ], ], [ - 'groups' => ['postgis-3.3'], + 'groups' => ['postgis-3.4', 'postgis-3.6'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('LINESTRING(1 1,0 0, -1 1)'))) AS value", 'result' => [ 'value' => 'MULTIPOINT((1 1),(-1 1))', diff --git a/tools/functions/geometry-constructors.php b/tools/functions/geometry-constructors.php index 762527a5..c4a1021c 100644 --- a/tools/functions/geometry-constructors.php +++ b/tools/functions/geometry-constructors.php @@ -12,20 +12,6 @@ 'total_arguments' => 2, 'tests' => [ 'queries' => [ - [ - 'groups' => ['postgis-3.0'], - 'sql' => "SELECT {function}('9qqj7nmxncgyy4d0dbxqz0') AS value", - 'result' => [ - 'value' => 'BOX(-115.172816 36.114646,-115.172816 36.114646)', - ], - ], - [ - 'groups' => ['postgis-3.1'], - 'sql' => "SELECT {function}('9qqj7nmxncgyy4d0dbxqz0') AS value", - 'result' => [ - 'value' => 'BOX(-115.17281600000001 36.11464599999999,-115.172816 36.114646)', - ], - ], [ 'sql' => "SELECT {function}('9qqj7nmxncgyy4d0dbxqz0', 0) AS value", 'result' => [ @@ -33,14 +19,7 @@ ], ], [ - 'groups' => ['postgis-3.0'], - 'sql' => "SELECT {function}('9qqj7nmxncgyy4d0dbxqz0', 10) AS value", - 'result' => [ - 'value' => 'BOX(-115.17282128334 36.1146408319473,-115.172810554504 36.1146461963654)', - ], - ], - [ - 'groups' => ['postgis-3.1'], + 'groups' => ['postgis-3.6'], 'sql' => "SELECT {function}('9qqj7nmxncgyy4d0dbxqz0', 10) AS value", 'result' => [ 'value' => 'BOX(-115.17282128334045 36.11464083194733,-115.1728105545044 36.114646196365356)', @@ -133,20 +112,6 @@ 'total_arguments' => 2, 'tests' => [ 'queries' => [ - [ - 'groups' => ['postgis-3.0'], - 'sql' => "SELECT ST_AsText({function}('9qqj7nmxncgyy4d0dbxqz0')) AS value", - 'result' => [ - 'value' => 'POLYGON((-115.172816 36.114646,-115.172816 36.114646,-115.172816 36.114646,-115.172816 36.114646,-115.172816 36.114646))', - ], - ], - [ - 'groups' => ['postgis-3.1'], - 'sql' => "SELECT ST_AsText({function}('9qqj7nmxncgyy4d0dbxqz0')) AS value", - 'result' => [ - 'value' => 'POLYGON((-115.17281600000001 36.11464599999999,-115.17281600000001 36.114646,-115.172816 36.114646,-115.172816 36.11464599999999,-115.17281600000001 36.11464599999999))', - ], - ], [ 'sql' => "SELECT ST_AsText({function}('9qqj7nmxncgyy4d0dbxqz0', 4)) AS value", 'result' => [ @@ -487,20 +452,6 @@ 'total_arguments' => 2, 'tests' => [ 'queries' => [ - [ - 'groups' => ['postgis-3.0'], - 'sql' => "SELECT ST_AsText({function}('9qqj7nmxncgyy4d0dbxqz0')) AS value", - 'result' => [ - 'value' => 'POINT(-115.172816 36.114646)', - ], - ], - [ - 'groups' => ['postgis-3.1'], - 'sql' => "SELECT ST_AsText({function}('9qqj7nmxncgyy4d0dbxqz0')) AS value", - 'result' => [ - 'value' => 'POINT(-115.17281600000001 36.11464599999999)', - ], - ], [ 'sql' => "SELECT ST_AsText({function}('9qqj7nmxncgyy4d0dbxqz0', 4)) AS value", 'result' => [ diff --git a/tools/functions/geometry-editors.php b/tools/functions/geometry-editors.php index eb2e9e61..cfc20ab1 100644 --- a/tools/functions/geometry-editors.php +++ b/tools/functions/geometry-editors.php @@ -128,21 +128,6 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0'], - 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,743238 2967416))',2249),4326)) AS value", - 'result' => [ - 'value' => 'POLYGON((-71.1776848522251 42.3902896512902,-71.1776843766326 42.3903829478009,-71.1775844305465 42.3903826677917,-71.177582592723 42.3902893647987,-71.1776848522251 42.3902896512902))', - ], - ], - [ - 'groups' => ['postgis-3.1'], - 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,743238 2967416))',2249),4326)) AS value", - 'result' => [ - 'value' => 'POLYGON((-71.1776848522251 42.39028965129018,-71.17768437663261 42.390382947800894,-71.17758443054647 42.39038266779171,-71.17758259272304 42.3902893647987,-71.1776848522251 42.39028965129018))', - ], - ], - [ - 'groups' => ['postgis-3.2'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,743238 2967416))',2249),4326)) AS value", 'result' => [ 'value' => 'POLYGON((-71.1776848522251 42.3902896512903,-71.17768437663261 42.390382947801015,-71.17758443054647 42.390382667791854,-71.17758259272304 42.390289364798825,-71.1776848522251 42.3902896512903))', diff --git a/tools/functions/geometry-processing.php b/tools/functions/geometry-processing.php index 34201bb3..2594d919 100644 --- a/tools/functions/geometry-processing.php +++ b/tools/functions/geometry-processing.php @@ -13,24 +13,17 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0'], + 'groups' => ['postgis-3.2', 'postgis-3.4'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(100 90)'), 50, 'quad_segs=8')) AS value", 'result' => [ - 'value' => 'POLYGON((150 90,149.039264020162 80.2454838991936,146.193976625564 70.8658283817455,141.573480615127 62.2214883490199,135.355339059327 54.6446609406727,127.77851165098 48.4265193848728,119.134171618255 43.8060233744357,109.754516100806 40.9607359798385,100 40,90.2454838991937 40.9607359798385,80.8658283817456 43.8060233744356,72.22148834902 48.4265193848727,64.6446609406727 54.6446609406725,58.4265193848728 62.2214883490198,53.8060233744357 70.8658283817454,50.9607359798385 80.2454838991934,50 89.9999999999998,50.9607359798384 99.7545161008062,53.8060233744356 109.134171618254,58.4265193848726 117.77851165098,64.6446609406725 125.355339059327,72.2214883490197 131.573480615127,80.8658283817453 136.193976625564,90.2454838991934 139.039264020161,99.9999999999998 140,109.754516100806 139.039264020162,119.134171618254 136.193976625564,127.77851165098 131.573480615127,135.355339059327 125.355339059327,141.573480615127 117.77851165098,146.193976625564 109.134171618255,149.039264020162 99.7545161008065,150 90))', - ], - ], - [ - 'groups' => ['postgis-3.1'], - 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(100 90)'), 50, 'quad_segs=8')) AS value", - 'result' => [ - 'value' => 'POLYGON((150 90,149.0392640201615 80.2454838991936,146.19397662556435 70.86582838174553,141.57348061512727 62.221488349019914,135.3553390593274 54.64466094067266,127.77851165098015 48.42651938487277,119.13417161825454 43.80602337443568,109.75451610080648 40.96073597983849,100.00000000000009 40,90.24548389919367 40.96073597983846,80.86582838174562 43.806023374435625,72.22148834901998 48.426519384872684,64.64466094067271 54.644660940672544,58.42651938487281 62.221488349019786,53.80602337443571 70.86582838174539,50.9607359798385 80.24548389919345,50 89.99999999999984,50.96073597983845 99.75451610080624,53.80602337443559 109.13417161825431,58.42651938487263 117.77851165097995,64.64466094067248 125.35533905932724,72.22148834901971 131.57348061512715,80.86582838174532 136.19397662556426,90.24548389919335 139.03926402016148,99.99999999999977 140,109.75451610080616 139.03926402016157,119.13417161825426 136.19397662556443,127.77851165097987 131.57348061512744,135.35533905932718 125.35533905932758,141.5734806151271 117.77851165098036,146.19397662556423 109.13417161825477,149.03926402016145 99.75451610080674,150 90))', + 'value' => 'POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,99.99999999999999 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90))', ], ], [ - 'groups' => ['postgis-3.2'], + 'groups' => ['postgis-3.6'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(100 90)'), 50, 'quad_segs=8')) AS value", 'result' => [ - 'value' => 'POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,99.99999999999999 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90))', + 'value' => 'POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,100 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90))', ], ], [ @@ -51,14 +44,14 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0', 'postgis-3.1', 'postgis-3.2'], + 'groups' => ['postgis-3.2'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(1 2)'), ST_GeomFromText('POINT(-2 3)') )) AS value", 'result' => [ 'value' => 'MULTIPOINT(1 2,-2 3)', ], ], [ - 'groups' => ['postgis-3.3'], + 'groups' => ['postgis-3.4', 'postgis-3.6'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(1 2)'), ST_GeomFromText('POINT(-2 3)') )) AS value", 'result' => [ 'value' => 'MULTIPOINT((1 2),(-2 3))', @@ -135,14 +128,6 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0'], - 'sql' => "SELECT ST_AsText({function}(ST_GeomFromEWKT('MULTIPOINT((10 10), (20 20), (10 20), (15 19))'), 2)) AS value", - 'result' => [ - 'value' => 'POLYGON((15 22.6536686473018,20.411961001462 20.411961001462,22.6536686473018 15,20.411961001462 9.58803899853803,15 7.3463313526982,9.58803899853803 9.58803899853803,7.3463313526982 15,9.58803899853803 20.411961001462,15 22.6536686473018))', - ], - ], - [ - 'groups' => ['postgis-3.1'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromEWKT('MULTIPOINT((10 10), (20 20), (10 20), (15 19))'), 2)) AS value", 'result' => [ 'value' => 'POLYGON((15 22.653668647301796,20.411961001461968 20.41196100146197,22.653668647301796 15,20.41196100146197 9.58803899853803,15.000000000000002 7.346331352698204,9.58803899853803 9.588038998538028,7.346331352698204 14.999999999999998,9.588038998538028 20.411961001461968,14.999999999999998 22.653668647301796))', @@ -167,14 +152,6 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0'], - 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('LINESTRING(-118.58 38.38, -118.20 38.45)'))) AS value", - 'result' => [ - 'value' => 'LINESTRING(241.42 38.38,241.8 38.45)', - ], - ], - [ - 'groups' => ['postgis-3.1'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('LINESTRING(-118.58 38.38, -118.20 38.45)'))) AS value", 'result' => [ 'value' => 'LINESTRING(241.42000000000002 38.38,241.8 38.45)', @@ -193,24 +170,17 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0'], - 'sql' => "SELECT ST_AsText({function}(ST_Buffer(ST_GeomFromText('POINT(100 90)'), 50), ST_MakeLine(ST_MakePoint(10, 10),ST_MakePoint(190, 190)))) AS value", - 'result' => [ - 'value' => 'GEOMETRYCOLLECTION(POLYGON((150 90,149.039264020162 80.2454838991936,146.193976625564 70.8658283817455,141.573480615127 62.2214883490199,135.355339059327 54.6446609406727,127.77851165098 48.4265193848728,119.134171618255 43.8060233744357,109.754516100806 40.9607359798385,100 40,90.2454838991937 40.9607359798385,80.8658283817456 43.8060233744356,72.22148834902 48.4265193848727,64.6446609406727 54.6446609406725,60.1371179574584 60.1371179574584,129.862882042542 129.862882042542,135.355339059327 125.355339059327,141.573480615127 117.77851165098,146.193976625564 109.134171618255,149.039264020162 99.7545161008065,150 90)),POLYGON((60.1371179574584 60.1371179574584,58.4265193848728 62.2214883490198,53.8060233744357 70.8658283817454,50.9607359798385 80.2454838991934,50 89.9999999999998,50.9607359798384 99.7545161008062,53.8060233744356 109.134171618254,58.4265193848726 117.77851165098,64.6446609406725 125.355339059327,72.2214883490197 131.573480615127,80.8658283817453 136.193976625564,90.2454838991934 139.039264020161,99.9999999999998 140,109.754516100806 139.039264020162,119.134171618254 136.193976625564,127.77851165098 131.573480615127,129.862882042542 129.862882042542,60.1371179574584 60.1371179574584)))', - ], - ], - [ - 'groups' => ['postgis-3.1'], + 'groups' => ['postgis-3.2', 'postgis-3.4'], 'sql' => "SELECT ST_AsText({function}(ST_Buffer(ST_GeomFromText('POINT(100 90)'), 50), ST_MakeLine(ST_MakePoint(10, 10),ST_MakePoint(190, 190)))) AS value", 'result' => [ - 'value' => 'GEOMETRYCOLLECTION(POLYGON((150 90,149.0392640201615 80.2454838991936,146.19397662556435 70.86582838174553,141.57348061512727 62.221488349019914,135.3553390593274 54.64466094067266,127.77851165098015 48.42651938487277,119.13417161825454 43.80602337443568,109.75451610080648 40.96073597983849,100.00000000000009 40,90.24548389919367 40.96073597983846,80.86582838174562 43.806023374435625,72.22148834901998 48.426519384872684,64.64466094067271 54.644660940672544,60.13711795745844 60.13711795745844,129.86288204254154 129.86288204254154,135.35533905932718 125.35533905932758,141.5734806151271 117.77851165098036,146.19397662556423 109.13417161825477,149.03926402016145 99.75451610080674,150 90)),POLYGON((60.13711795745844 60.13711795745844,58.42651938487281 62.221488349019786,53.80602337443571 70.86582838174539,50.9607359798385 80.24548389919345,50 89.99999999999984,50.96073597983845 99.75451610080624,53.80602337443559 109.13417161825431,58.42651938487263 117.77851165097995,64.64466094067248 125.35533905932724,72.22148834901971 131.57348061512715,80.86582838174532 136.19397662556426,90.24548389919335 139.03926402016148,99.99999999999977 140,109.75451610080616 139.03926402016157,119.13417161825426 136.19397662556443,127.77851165097987 131.57348061512744,129.86288204254154 129.86288204254154,60.13711795745844 60.13711795745844)))', + 'value' => 'GEOMETRYCOLLECTION(POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,60.13711795745844 60.13711795745844,129.86288204254154 129.86288204254154,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90)),POLYGON((60.13711795745844 60.13711795745844,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,99.99999999999999 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,129.86288204254154 129.86288204254154,60.13711795745844 60.13711795745844)))', ], ], [ - 'groups' => ['postgis-3.2'], + 'groups' => ['postgis-3.6'], 'sql' => "SELECT ST_AsText({function}(ST_Buffer(ST_GeomFromText('POINT(100 90)'), 50), ST_MakeLine(ST_MakePoint(10, 10),ST_MakePoint(190, 190)))) AS value", 'result' => [ - 'value' => 'GEOMETRYCOLLECTION(POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,60.13711795745844 60.13711795745844,129.86288204254154 129.86288204254154,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90)),POLYGON((60.13711795745844 60.13711795745844,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,99.99999999999999 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,129.86288204254154 129.86288204254154,60.13711795745844 60.13711795745844)))', + 'value' => 'GEOMETRYCOLLECTION(POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.426519384872734,64.64466094067262 54.64466094067262,60.13711795745844 60.13711795745844,129.86288204254154 129.86288204254154,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90)),POLYGON((60.13711795745844 60.13711795745844,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,100 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,129.86288204254154 129.86288204254154,60.13711795745844 60.13711795745844)))', ], ], ], @@ -236,14 +206,14 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0', 'postgis-3.1', 'postgis-3.2'], + 'groups' => ['postgis-3.2'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(1 2)'), ST_GeomFromText('POINT(-2 3)'))) AS value", 'result' => [ 'value' => 'MULTIPOINT(1 2,-2 3)', ], ], [ - 'groups' => ['postgis-3.3'], + 'groups' => ['postgis-3.4', 'postgis-3.6'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(1 2)'), ST_GeomFromText('POINT(-2 3)'))) AS value", 'result' => [ 'value' => 'MULTIPOINT((1 2),(-2 3))', diff --git a/tools/functions/spatial-relationships-measurement.php b/tools/functions/spatial-relationships-measurement.php index 4b74d8a1..f52ddaad 100644 --- a/tools/functions/spatial-relationships-measurement.php +++ b/tools/functions/spatial-relationships-measurement.php @@ -13,14 +13,6 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0'], - 'sql' => "SELECT ST_AsEWKT({function}(ST_GeomFromEWKT('LINESTRING (20 80 20, 98 190 1, 110 180 3, 50 75 1000)'), ST_GeomFromEWKT('POINT(100 100 30)'))) AS value", - 'result' => [ - 'value' => 'POINT(54.6993798867619 128.935022917228 11.5475869506606)', - ], - ], - [ - 'groups' => ['postgis-3.1'], 'sql' => "SELECT ST_AsEWKT({function}(ST_GeomFromEWKT('LINESTRING (20 80 20, 98 190 1, 110 180 3, 50 75 1000)'), ST_GeomFromEWKT('POINT(100 100 30)'))) AS value", 'result' => [ 'value' => 'POINT(54.69937988676193 128.93502291722837 11.547586950660556)', @@ -121,14 +113,6 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0'], - 'sql' => "SELECT ST_AsEWKT({function}(ST_GeomFromEWKT('LINESTRING (20 80 20, 98 190 1, 110 180 3, 50 75 1000)'), ST_GeomFromEWKT('POINT(100 100 30)'))) AS value", - 'result' => [ - 'value' => 'LINESTRING(54.6993798867619 128.935022917228 11.5475869506606,100 100 30)', - ], - ], - [ - 'groups' => ['postgis-3.1'], 'sql' => "SELECT ST_AsEWKT({function}(ST_GeomFromEWKT('LINESTRING (20 80 20, 98 190 1, 110 180 3, 50 75 1000)'), ST_GeomFromEWKT('POINT(100 100 30)'))) AS value", 'result' => [ 'value' => 'LINESTRING(54.69937988676193 128.93502291722837 11.547586950660556,100 100 30)', @@ -179,14 +163,6 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0'], - 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('MULTIPOINT(-1 0, -1 2, -1 3, -1 4, -1 7, 0 1, 0 3, 1 1, 2 0, 6 0, 7 8, 9 8, 10 6 )'))) AS value", - 'result' => [ - 'value' => 'POINT(2.30769230769231 3.30769230769231)', - ], - ], - [ - 'groups' => ['postgis-3.1'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('MULTIPOINT(-1 0, -1 2, -1 3, -1 4, -1 7, 0 1, 0 3, 1 1, 2 0, 6 0, 7 8, 9 8, 10 6 )'))) AS value", 'result' => [ 'value' => 'POINT(2.307692307692308 3.307692307692308)', @@ -286,14 +262,14 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0', 'postgis-3.1', 'postgis-3.2'], + 'groups' => ['postgis-3.2'], 'sql' => "SELECT {function}(ST_GeomFromText('LINESTRING(25 169,89 114,40 70,86 43)'), ST_GeomFromText('LINESTRING(171 154,20 140,71 74,161 53)')) AS value", 'result' => [ 'value' => -3, ], ], [ - 'groups' => ['postgis-3.3'], + 'groups' => ['postgis-3.4', 'postgis-3.6'], 'sql' => "SELECT {function}(ST_GeomFromText('LINESTRING(25 169,89 114,40 70,86 43)'), ST_GeomFromText('LINESTRING(171 154,20 140,71 74,161 53)')) AS value", 'result' => [ 'value' => 3.0, @@ -615,7 +591,7 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0', 'postgis-3.1', 'postgis-3.2', 'postgis-3.3'], + 'groups' => ['postgis-3.2'], 'sql' => "SELECT ST_X(ST_GeomFromText(ST_AsText({function}(ST_GeomFromText('POINT(0 0)'), 100000, 0.785398163397448)))) as value1, ST_Y(ST_GeomFromText(ST_AsText({function}(ST_GeomFromText('POINT(0 0)'), 100000, 0.785398163397448)))) AS value2", 'result' => [ 'value1' => 0.635231029125537, @@ -623,7 +599,7 @@ ], ], [ - 'groups' => ['postgis-3.4'], + 'groups' => ['postgis-3.4', 'postgis-3.6'], 'sql' => "SELECT ST_X(ST_GeomFromText(ST_AsText({function}(ST_GeomFromText('POINT(0 0)'), 100000, 0.785398163397448)))) as value1, ST_Y(ST_GeomFromText(ST_AsText({function}(ST_GeomFromText('POINT(0 0)'), 100000, 0.785398163397448)))) AS value2", 'result' => [ 'value1' => 70710.67811865476, @@ -655,14 +631,6 @@ 'tests' => [ 'queries' => [ [ - 'groups' => ['postgis-3.0'], - 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(100 100)'), ST_GeomFromText('LINESTRING(20 80, 98 190, 110 180, 50 75)'))) AS value", - 'result' => [ - 'value' => 'LINESTRING(100 100,73.0769230769231 115.384615384615)', - ], - ], - [ - 'groups' => ['postgis-3.1'], 'sql' => "SELECT ST_AsText({function}(ST_GeomFromText('POINT(100 100)'), ST_GeomFromText('LINESTRING(20 80, 98 190, 110 180, 50 75)'))) AS value", 'result' => [ 'value' => 'LINESTRING(100 100,73.07692307692307 115.38461538461539)', diff --git a/tools/generate-functions.php b/tools/generate-functions.php index afd79426..33aa79d8 100644 --- a/tools/generate-functions.php +++ b/tools/generate-functions.php @@ -1,4 +1,6 @@ -