@@ -202,4 +202,128 @@ public static function providerToArray() : array
202202 ['POINT ZM (4.5 5.6 6.7 7.8) ' , [4.5 , 5.6 , 6.7 , 7.8 ]],
203203 ];
204204 }
205+
206+ #[DataProvider('providerIsEqualTo ' )]
207+ public function testIsEqualTo (string $ wkt1 , int $ srid1 , string $ wkt2 , int $ srid2 , bool $ isEqual ): void
208+ {
209+ $ point1 = Point::fromText ($ wkt1 , $ srid1 );
210+ $ point2 = Point::fromText ($ wkt2 , $ srid2 );
211+
212+ self ::assertSame ($ isEqual , $ point1 ->isEqualTo ($ point2 ));
213+ self ::assertSame ($ isEqual , $ point2 ->isEqualTo ($ point1 ));
214+ }
215+
216+ public static function providerIsEqualTo (): array
217+ {
218+ return [
219+ ['POINT EMPTY ' , 0 , 'POINT EMPTY ' , 0 , true ],
220+ ['POINT EMPTY ' , 0 , 'POINT EMPTY ' , 4326 , false ],
221+ ['POINT Z EMPTY ' , 0 , 'POINT Z EMPTY ' , 0 , true ],
222+ ['POINT Z EMPTY ' , 0 , 'POINT Z EMPTY ' , 4326 , false ],
223+ ['POINT M EMPTY ' , 0 , 'POINT M EMPTY ' , 0 , true ],
224+ ['POINT M EMPTY ' , 0 , 'POINT M EMPTY ' , 4326 , false ],
225+ ['POINT ZM EMPTY ' , 0 , 'POINT ZM EMPTY ' , 0 , true ],
226+ ['POINT ZM EMPTY ' , 0 , 'POINT ZM EMPTY ' , 4326 , false ],
227+
228+ ['POINT EMPTY ' , 0 , 'POINT Z EMPTY ' , 0 , false ],
229+ ['POINT EMPTY ' , 0 , 'POINT M EMPTY ' , 0 , false ],
230+ ['POINT EMPTY ' , 0 , 'POINT ZM EMPTY ' , 0 , false ],
231+ ['POINT Z EMPTY ' , 0 , 'POINT M EMPTY ' , 0 , false ],
232+ ['POINT Z EMPTY ' , 0 , 'POINT ZM EMPTY ' , 0 , false ],
233+ ['POINT M EMPTY ' , 0 , 'POINT ZM EMPTY ' , 0 , false ],
234+
235+ ['POINT (1 2) ' , 0 , 'POINT (1 2) ' , 0 , true ],
236+ ['POINT (1 2) ' , 0 , 'POINT (0 2) ' , 0 , false ],
237+ ['POINT (1 2) ' , 0 , 'POINT (1 0) ' , 0 , false ],
238+ ['POINT (1 2) ' , 0 , 'POINT (1 2) ' , 4326 , false ],
239+
240+ ['POINT Z (1 2 3) ' , 0 , 'POINT Z (1 2 3) ' , 0 , true ],
241+ ['POINT Z (1 2 3) ' , 0 , 'POINT Z (0 2 3) ' , 0 , false ],
242+ ['POINT Z (1 2 3) ' , 0 , 'POINT Z (1 0 3) ' , 0 , false ],
243+ ['POINT Z (1 2 3) ' , 0 , 'POINT Z (1 2 0) ' , 0 , false ],
244+ ['POINT Z (1 2 3) ' , 0 , 'POINT Z (1 2 3) ' , 4326 , false ],
245+
246+ ['POINT M (1 2 3) ' , 0 , 'POINT M (1 2 3) ' , 0 , true ],
247+ ['POINT M (1 2 3) ' , 0 , 'POINT M (0 2 3) ' , 0 , false ],
248+ ['POINT M (1 2 3) ' , 0 , 'POINT M (1 0 3) ' , 0 , false ],
249+ ['POINT M (1 2 3) ' , 0 , 'POINT M (1 2 0) ' , 0 , false ],
250+ ['POINT M (1 2 3) ' , 0 , 'POINT M (1 2 3) ' , 4326 , false ],
251+
252+ ['POINT ZM (1 2 3 4) ' , 0 , 'POINT ZM (1 2 3 4) ' , 0 , true ],
253+ ['POINT ZM (1 2 3 4) ' , 0 , 'POINT ZM (0 2 3 4) ' , 0 , false ],
254+ ['POINT ZM (1 2 3 4) ' , 0 , 'POINT ZM (1 0 3 4) ' , 0 , false ],
255+ ['POINT ZM (1 2 3 4) ' , 0 , 'POINT ZM (1 2 0 4) ' , 0 , false ],
256+ ['POINT ZM (1 2 3 4) ' , 0 , 'POINT ZM (1 2 3 0) ' , 0 , false ],
257+ ['POINT ZM (1 2 3 4) ' , 0 , 'POINT ZM (1 2 3 4) ' , 4326 , false ],
258+
259+ ['POINT (1 2) ' , 0 , 'POINT Z (1 2 0) ' , 0 , false ],
260+ ['POINT (1 2) ' , 0 , 'POINT M (1 2 0) ' , 0 , false ],
261+ ['POINT (1 2) ' , 0 , 'POINT ZM (1 2 0 0) ' , 0 , false ],
262+ ['POINT Z (1 2 3) ' , 0 , 'POINT M (1 2 3) ' , 0 , false ],
263+ ['POINT Z (1 2 3) ' , 0 , 'POINT ZM (1 2 3 4) ' , 0 , false ],
264+ ['POINT M (1 2 3) ' , 0 , 'POINT ZM (1 2 3 4) ' , 0 , false ],
265+ ];
266+ }
267+
268+ #[DataProvider('providerIsSpatiallyEqualTo ' )]
269+ public function testIsSpatiallyEqualTo (string $ wkt1 , int $ srid1 , string $ wkt2 , int $ srid2 , bool $ isEqual ): void
270+ {
271+ $ point1 = Point::fromText ($ wkt1 , $ srid1 );
272+ $ point2 = Point::fromText ($ wkt2 , $ srid2 );
273+
274+ self ::assertSame ($ isEqual , $ point1 ->isSpatiallyEqualTo ($ point2 ));
275+ self ::assertSame ($ isEqual , $ point2 ->isSpatiallyEqualTo ($ point1 ));
276+ }
277+
278+ public static function providerIsSpatiallyEqualTo (): array
279+ {
280+ return [
281+ ['POINT EMPTY ' , 0 , 'POINT EMPTY ' , 0 , true ],
282+ ['POINT EMPTY ' , 0 , 'POINT EMPTY ' , 4326 , false ],
283+ ['POINT Z EMPTY ' , 0 , 'POINT Z EMPTY ' , 0 , true ],
284+ ['POINT Z EMPTY ' , 0 , 'POINT Z EMPTY ' , 4326 , false ],
285+ ['POINT M EMPTY ' , 0 , 'POINT M EMPTY ' , 0 , true ],
286+ ['POINT M EMPTY ' , 0 , 'POINT M EMPTY ' , 4326 , false ],
287+ ['POINT ZM EMPTY ' , 0 , 'POINT ZM EMPTY ' , 0 , true ],
288+ ['POINT ZM EMPTY ' , 0 , 'POINT ZM EMPTY ' , 4326 , false ],
289+
290+ ['POINT EMPTY ' , 0 , 'POINT Z EMPTY ' , 0 , false ],
291+ ['POINT EMPTY ' , 0 , 'POINT M EMPTY ' , 0 , true ],
292+ ['POINT EMPTY ' , 0 , 'POINT ZM EMPTY ' , 0 , false ],
293+ ['POINT Z EMPTY ' , 0 , 'POINT M EMPTY ' , 0 , false ],
294+ ['POINT Z EMPTY ' , 0 , 'POINT ZM EMPTY ' , 0 , true ],
295+ ['POINT M EMPTY ' , 0 , 'POINT ZM EMPTY ' , 0 , false ],
296+
297+ ['POINT (1 2) ' , 0 , 'POINT (1 2) ' , 0 , true ],
298+ ['POINT (1 2) ' , 0 , 'POINT (0 2) ' , 0 , false ],
299+ ['POINT (1 2) ' , 0 , 'POINT (1 0) ' , 0 , false ],
300+ ['POINT (1 2) ' , 0 , 'POINT (1 2) ' , 4326 , false ],
301+
302+ ['POINT Z (1 2 3) ' , 0 , 'POINT Z (1 2 3) ' , 0 , true ],
303+ ['POINT Z (1 2 3) ' , 0 , 'POINT Z (0 2 3) ' , 0 , false ],
304+ ['POINT Z (1 2 3) ' , 0 , 'POINT Z (1 0 3) ' , 0 , false ],
305+ ['POINT Z (1 2 3) ' , 0 , 'POINT Z (1 2 0) ' , 0 , false ],
306+ ['POINT Z (1 2 3) ' , 0 , 'POINT Z (1 2 3) ' , 4326 , false ],
307+
308+ ['POINT M (1 2 3) ' , 0 , 'POINT M (1 2 3) ' , 0 , true ],
309+ ['POINT M (1 2 3) ' , 0 , 'POINT M (0 2 3) ' , 0 , false ],
310+ ['POINT M (1 2 3) ' , 0 , 'POINT M (1 0 3) ' , 0 , false ],
311+ ['POINT M (1 2 3) ' , 0 , 'POINT M (1 2 0) ' , 0 , true ],
312+ ['POINT M (1 2 3) ' , 0 , 'POINT M (1 2 3) ' , 4326 , false ],
313+
314+ ['POINT ZM (1 2 3 4) ' , 0 , 'POINT ZM (1 2 3 4) ' , 0 , true ],
315+ ['POINT ZM (1 2 3 4) ' , 0 , 'POINT ZM (0 2 3 4) ' , 0 , false ],
316+ ['POINT ZM (1 2 3 4) ' , 0 , 'POINT ZM (1 0 3 4) ' , 0 , false ],
317+ ['POINT ZM (1 2 3 4) ' , 0 , 'POINT ZM (1 2 0 4) ' , 0 , false ],
318+ ['POINT ZM (1 2 3 4) ' , 0 , 'POINT ZM (1 2 3 0) ' , 0 , true ],
319+ ['POINT ZM (1 2 3 4) ' , 0 , 'POINT ZM (1 2 3 4) ' , 4326 , false ],
320+
321+ ['POINT (1 2) ' , 0 , 'POINT Z (1 2 0) ' , 0 , false ],
322+ ['POINT (1 2) ' , 0 , 'POINT M (1 2 0) ' , 0 , true ],
323+ ['POINT (1 2) ' , 0 , 'POINT ZM (1 2 0 0) ' , 0 , false ],
324+ ['POINT Z (1 2 3) ' , 0 , 'POINT M (1 2 3) ' , 0 , false ],
325+ ['POINT Z (1 2 3) ' , 0 , 'POINT ZM (1 2 3 4) ' , 0 , true ],
326+ ['POINT M (1 2 3) ' , 0 , 'POINT ZM (1 2 3 4) ' , 0 , false ],
327+ ];
328+ }
205329}
0 commit comments