Add test for new GetMinDist
This commit is contained in:
		
							parent
							
								
									782baf54a3
								
							
						
					
					
						commit
						84a604f70b
					
				| @ -436,5 +436,72 @@ BOOST_AUTO_TEST_CASE(regression_test) | |||||||
|     BOOST_CHECK_EQUAL(result_ln, result); |     BOOST_CHECK_EQUAL(result_ln, result); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void TestRectangle(double width, double height, double center_lat, double center_lon) | ||||||
|  | { | ||||||
|  |     FixedPointCoordinate center(center_lat*COORDINATE_PRECISION, center_lon*COORDINATE_PRECISION); | ||||||
|  | 
 | ||||||
|  |     TestStaticRTree::RectangleT rect; | ||||||
|  |     rect.min_lat = center.lat - height/2.0 * COORDINATE_PRECISION; | ||||||
|  |     rect.max_lat = center.lat + height/2.0 * COORDINATE_PRECISION; | ||||||
|  |     rect.min_lon = center.lon - width/2.0  * COORDINATE_PRECISION; | ||||||
|  |     rect.max_lon = center.lon + width/2.0  * COORDINATE_PRECISION; | ||||||
|  | 
 | ||||||
|  |     unsigned offset = 5*COORDINATE_PRECISION; | ||||||
|  |     FixedPointCoordinate north(rect.max_lat + offset, center.lon); | ||||||
|  |     FixedPointCoordinate south(rect.min_lat - offset, center.lon); | ||||||
|  |     FixedPointCoordinate west(center.lat, rect.min_lon - offset); | ||||||
|  |     FixedPointCoordinate east(center.lat, rect.max_lon + offset); | ||||||
|  |     FixedPointCoordinate north_east(rect.max_lat + offset, rect.max_lon + offset); | ||||||
|  |     FixedPointCoordinate north_west(rect.max_lat + offset, rect.min_lon - offset); | ||||||
|  |     FixedPointCoordinate south_east(rect.min_lat - offset, rect.max_lon + offset); | ||||||
|  |     FixedPointCoordinate south_west(rect.min_lat - offset, rect.min_lon - offset); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     /* Distance to line segments of rectangle */ | ||||||
|  |     BOOST_CHECK_EQUAL( | ||||||
|  |         rect.GetMinDist(north), | ||||||
|  |         FixedPointCoordinate::ApproximateEuclideanDistance(north, FixedPointCoordinate(rect.max_lat, north.lon)) | ||||||
|  |     ); | ||||||
|  |     BOOST_CHECK_EQUAL( | ||||||
|  |         rect.GetMinDist(south), | ||||||
|  |         FixedPointCoordinate::ApproximateEuclideanDistance(south, FixedPointCoordinate(rect.min_lat, south.lon)) | ||||||
|  |     ); | ||||||
|  |     BOOST_CHECK_EQUAL( | ||||||
|  |         rect.GetMinDist(west), | ||||||
|  |         FixedPointCoordinate::ApproximateEuclideanDistance(west, FixedPointCoordinate(west.lat, rect.min_lon)) | ||||||
|  |     ); | ||||||
|  |     BOOST_CHECK_EQUAL( | ||||||
|  |         rect.GetMinDist(east), | ||||||
|  |         FixedPointCoordinate::ApproximateEuclideanDistance(east, FixedPointCoordinate(east.lat, rect.max_lon)) | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     /* Distance to corner points */ | ||||||
|  |     BOOST_CHECK_EQUAL( | ||||||
|  |         rect.GetMinDist(north_east), | ||||||
|  |         FixedPointCoordinate::ApproximateEuclideanDistance(north_east, FixedPointCoordinate(rect.max_lat, rect.max_lon)) | ||||||
|  |     ); | ||||||
|  |     BOOST_CHECK_EQUAL( | ||||||
|  |         rect.GetMinDist(north_west), | ||||||
|  |         FixedPointCoordinate::ApproximateEuclideanDistance(north_west, FixedPointCoordinate(rect.max_lat, rect.min_lon)) | ||||||
|  |     ); | ||||||
|  |     BOOST_CHECK_EQUAL( | ||||||
|  |         rect.GetMinDist(south_east), | ||||||
|  |         FixedPointCoordinate::ApproximateEuclideanDistance(south_east, FixedPointCoordinate(rect.min_lat, rect.max_lon)) | ||||||
|  |     ); | ||||||
|  |     BOOST_CHECK_EQUAL( | ||||||
|  |         rect.GetMinDist(south_west), | ||||||
|  |         FixedPointCoordinate::ApproximateEuclideanDistance(south_west, FixedPointCoordinate(rect.min_lat, rect.min_lon)) | ||||||
|  |     ); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | BOOST_AUTO_TEST_CASE(rectangle_test) | ||||||
|  | { | ||||||
|  |     TestRectangle(10, 10, 5, 5); | ||||||
|  |     TestRectangle(10, 10, -5, 5); | ||||||
|  |     TestRectangle(10, 10, 5, -5); | ||||||
|  |     TestRectangle(10, 10, -5, -5); | ||||||
|  |     TestRectangle(10, 10, 0, 0); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| BOOST_AUTO_TEST_SUITE_END() | BOOST_AUTO_TEST_SUITE_END() | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user