@@ -21,7 +21,7 @@ function progress(id,x,total) {
2121include 'test_territories.php ' ;
2222include 'test_encodes.php ' ;
2323
24- echo "Mapcode Unittest version 2.1.0 <BR> " ;
24+ echo "Mapcode Unittest version 2.1.1 <BR> " ;
2525echo "Mapcode PHP version " . mapcode_phpversion . "<BR> " ;
2626echo "Mapcode DATA version " . mapcode_dataversion . "<BR> " ;
2727if ($ redivar ) echo "Mapcode fast_encode loaded<BR> " ;
@@ -349,37 +349,73 @@ function test_encodes()
349349 }
350350}
351351
352+ function distance_tests ()
353+ {
354+ if (mapcode_phpversion>='2.1.1 ' ) {
355+ $ coordpairs = array (
356+ // lat1, lon1, lat2, lon2, expected distance * 100000
357+ // lat1, lon1, lat2, lon2, expected distance * 100000
358+ 1 ,1 ,1 ,1 ,0 ,
359+ 0 ,0 ,0 ,1 ,11131949079 ,
360+ 89 ,0 ,89 ,1 ,194279300 ,
361+ 3 ,0 ,3 ,1 ,11116693130 ,
362+ -3 ,0 ,-3 ,1 ,11116693130 ,
363+ -3 ,-179.5 ,-3 ,179.5 ,11116693130 ,
364+ -3 ,179.5 ,-3 ,-179.5 ,11116693130 ,
365+ 3 ,8 ,3 ,9 ,11116693130 ,
366+ 3 ,-8 ,3 ,-9 ,11116693130 ,
367+ 3 ,-0.5 ,3 ,0.5 ,11116693130 ,
368+ 54 ,5 ,54.000001 ,5 ,11095 ,
369+ 54 ,5 ,54 ,5.000001 ,6543 ,
370+ 54 ,5 ,54.000001 ,5.000001 ,12880 ,
371+ 90 ,0 ,90 ,50 ,0 ,
372+ 0.11 ,0.22 ,0.12 ,0.2333 ,185011466 ,
373+ -1 );
374+
375+ for ($ i =0 ;$ coordpairs [$ i ]!=-1 ;$ i +=5 ) {
376+ $ GLOBALS ['nrTests ' ]++;
377+ $ distance = distanceInMeters (
378+ $ coordpairs [$ i ],$ coordpairs [$ i +1 ],
379+ $ coordpairs [$ i +2 ],$ coordpairs [$ i +3 ]);
380+ if ( floor (0.5 +(100000.0 * $ distance )) != $ coordpairs [$ i +4 ] ) {
381+ $ GLOBALS ['nrErrors ' ]++;
382+ echo '*** ERROR *** distanceInMeters ' .$ i .' failed: ' .$ distance .'<BR> ' ;
383+ }
384+ }
385+ }
386+ }
387+
352388
353389$ next_corner_to_test = 0 ;
354390function test_corner_encodes ()
355391{
356- $ tests_per_timeslot = 5 ;
357- $ last = dataLastRecord (ccode_earth);
358- for ($ m =$ GLOBALS ['next_corner_to_test ' ]; $ m <$ last ; $ m ++) {
359- if ($ GLOBALS ['nrErrors ' ]>20 ) {
360- echo 'Too many errors!<BR> ' ;
361- return 0 ;
362- }
363- if ($ tests_per_timeslot -- == 0 ) {
364- $ GLOBALS ['next_corner_to_test ' ] = $ m ;
392+ $ tests_per_timeslot = 5 ;
393+ $ last = dataLastRecord (ccode_earth);
394+ for ($ m =$ GLOBALS ['next_corner_to_test ' ]; $ m <$ last ; $ m ++) {
395+ if ($ GLOBALS ['nrErrors ' ]>20 ) {
396+ echo 'Too many errors!<BR> ' ;
397+ return 0 ;
398+ }
399+ if ($ tests_per_timeslot -- == 0 ) {
400+ $ GLOBALS ['next_corner_to_test ' ] = $ m ;
365401 echo '<script>progress("prog1", ' .$ m .', ' .$ last .');</script> ' ;
366- return 1 ;
367- }
368- $ mm = minmaxSetup ($ m );
402+ return 1 ;
403+ }
404+ $ mm = minmaxSetup ($ m );
369405 // center
370- test_encode_decode ( "" , ($ mm ->miny +$ mm ->maxy )/2000000 , ($ mm ->minx +$ mm ->maxx )/2000000 , 0 ,0 );
406+ test_encode_decode ( "" , ($ mm ->miny +$ mm ->maxy )/2000000 , ($ mm ->minx +$ mm ->maxx )/2000000 , 0 ,0 );
371407 // corner just inside
372- test_encode_decode ( "" , $ mm ->miny /1000000.0 , $ mm ->minx /1000000.0 , 0 ,0 );
408+ test_encode_decode ( "" , $ mm ->miny /1000000.0 , $ mm ->minx /1000000.0 , 0 ,0 );
373409 // corner just outside y
374- test_encode_decode ( "" , ($ mm ->miny -0.000001 )/1000000.0 , ($ mm ->minx )/1000000.0 , 0 ,0 );
410+ test_encode_decode ( "" , ($ mm ->miny -0.000001 )/1000000.0 , ($ mm ->minx )/1000000.0 , 0 ,0 );
375411 // corner just outside x
376- test_encode_decode ( "" , ($ mm ->miny )/1000000.0 , ($ mm ->minx -0.000001 )/1000000.0 , 0 ,0 );
377- // corner opposite just inside
378- test_encode_decode ( "" , ($ mm ->maxy -0.000001 )/1000000.0 , ($ mm ->maxx -0.000001 )/1000000.0 , 0 ,0 );
379- // corner opposite just outside
380- test_encode_decode ( "" , ($ mm ->maxy )/1000000.0 , ($ mm ->maxx )/1000000.0 , 0 ,0 );
381- }
382- return 0 ;
412+ test_encode_decode ( "" , ($ mm ->miny )/1000000.0 , ($ mm ->minx -0.000001 )/1000000.0 , 0 ,0 );
413+ // corner opposite just inside
414+ test_encode_decode ( "" , ($ mm ->maxy -0.000001 )/1000000.0 , ($ mm ->maxx -0.000001 )/1000000.0 , 0 ,0 );
415+ // corner opposite just outside
416+ test_encode_decode ( "" , ($ mm ->maxy )/1000000.0 , ($ mm ->maxx )/1000000.0 , 0 ,0 );
417+ }
418+ return 0 ;
383419}
384420
385421
@@ -388,6 +424,9 @@ function test_corner_encodes()
388424 echo '<HR>Character tests<BR> ' ;
389425 alphabet_tests ();
390426
427+ echo '<HR>Distance tests<BR> ' ;
428+ distance_tests ();
429+
391430 echo '<HR>Territory tests<BR> ' ;
392431 echo MAX_CCODE . " territories<BR> " ;
393432 test_territories (); // uses test_territory()
0 commit comments