1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
# Top-level coverage tests for ST_FRECHETDISTANCE function.
# NULL handling
SELECT ST_FRECHETDISTANCE(NULL,NULL);
SELECT ST_FRECHETDISTANCE(NULL,'');
# Test error wrong number of arguments.
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
DO ST_FRECHETDISTANCE('LINESTRING(0 0, 0 1)');
# Test error forwarding from geometry parsing.
--error ER_GIS_INVALID_DATA
DO ST_FRECHETDISTANCE('','');
--error ER_SRS_NOT_FOUND
SELECT ST_FRECHETDISTANCE(0xffffffff01020000000500000000000000000000000000000000000000000000000000F03F000000000000F03F000000000000F03F00000000000000400000000000000040000000000000F03F00000000000000400000000000000040,0xffffffff01020000000500000000000000000000000000000000000000000000000000F03F000000000000F03F000000000000F03F00000000000000400000000000000040000000000000F03F00000000000000400000000000000040);
--error ER_GIS_DIFFERENT_SRIDS
DO ST_FRECHETDISTANCE
(ST_GEOMFROMTEXT('LINESTRING(0 0,1 1,2 1,1 2,2 2)', 4326),
ST_GEOMFROMTEXT('LINESTRING(0 1,1 0,1 1,1 2,1 3)', 0));
# Test error on unsupported types.
# there are no unsupported types
# Test error on not implemented types.
--error ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS
DO ST_FRECHETDISTANCE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(0 1)'));
--error ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS
DO ST_FRECHETDISTANCE(ST_GEOMFROMTEXT('LINESTRING(0 0, 0 1)'), ST_GEOMFROMTEXT('MULTIPOINT(0 1)'));
--error ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS
DO ST_FRECHETDISTANCE(ST_GEOMFROMTEXT('LINESTRING(0 0, 0 1)'), ST_GEOMFROMTEXT('MULTILINESTRING((0 0, 1 0))'));
--error ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS
DO ST_FRECHETDISTANCE(ST_GEOMFROMTEXT('LINESTRING(0 0, 0 1)'), ST_GEOMFROMTEXT('POLYGON((0 0, 1 0, 1 1, 0 0))'));
--error ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS
DO ST_FRECHETDISTANCE(ST_GEOMFROMTEXT('LINESTRING(0 0, 0 1)'), ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 0)))'));
--error ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS
DO ST_FRECHETDISTANCE(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 0)))', 4326), ST_GEOMFROMTEXT('LINESTRING(0 0, 0 1)', 4326));
--error ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS
DO ST_FRECHETDISTANCE(ST_GEOMFROMTEXT('LINESTRING(0 0, 0 1)'), ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0, 0 1))'));
--error ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS
DO ST_FRECHETDISTANCE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0, 0 1))'), ST_GEOMFROMTEXT('LINESTRING(0 0, 0 1)'));
--error ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS
DO ST_FRECHETDISTANCE(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0, 0 1))', 4326), ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(0 0, 0 1))', 4326));
# Test error due to numeric overflow.
--error ER_DATA_OUT_OF_RANGE
DO ST_FRECHETDISTANCE(ST_GEOMFROMTEXT('LINESTRING(0 0, 0 1e308, 1e308 1e308)'), ST_GEOMFROMTEXT('LINESTRING(0 0, 0 1)'));
# Excercise code on supported types.
# Cartesian
SELECT
ROUND(
ST_FRECHETDISTANCE
(ST_GEOMFROMTEXT('LINESTRING(0 0,1 1,2 1,1 2,2 2)', 0),
ST_GEOMFROMTEXT('LINESTRING(0 1,1 0,1 1,1 2,1 3)', 0)),
2
) AS dfd;
# Geographic
SELECT
ROUND(
ST_FRECHETDISTANCE
(ST_GEOMFROMTEXT('LINESTRING(0 0,1 1,2 1,1 2,2 2)', 4326),
ST_GEOMFROMTEXT('LINESTRING(0 1,1 0,1 1,1 2,1 3)', 4326),
'foot'),
2
) AS dfd;
# End of top-level coverage test.
|