class BoundingBoxTest < ActiveSupport::TestCase
def setup
@size_error_message = "The maximum bbox size is 0.25, and your request was too large. Either request a smaller area, or use planet.osm"
- @malformed_error_message = "The parameter bbox is required, and must be of the form min_lon,min_lat,max_lon,max_lat"
+ @malformed_error_message = "The parameter bbox must be of the form min_lon,min_lat,max_lon,max_lat"
@lon_order_error_message = "The minimum longitude must be less than the maximum longitude, but it wasn't"
@lat_order_error_message = "The minimum latitude must be less than the maximum latitude, but it wasn't"
@bbox_out_of_limits_error_message = "The latitudes must be between -90.0 and 90.0, and longitudes between -180.0 and 180.0"
@bad_positive_boundary_bbox = %w[181,91,0,0 0,0,181,91]
@bad_negative_boundary_bbox = %w[-181,-91,0,0 0,0,-181,-91]
- @bad_big_bbox = %w[-0.1,-0.1,1.1,1.1 10,10,11,11]
+ @bad_big_bbox = %w[-0.1,-0.1,1.1,1.1 10,10,11,11]
@bad_malformed_bbox = %w[-0.1 hello 10N2W10.1N2.1W]
- @bad_lat_mixed_bbox = %w[0,0.1,0.1,0 -0.1,80,0.1,70 0.24,54.34,0.25,54.33]
- @bad_lon_mixed_bbox = %w[80,-0.1,70,0.1 54.34,0.24,54.33,0.25]
+ @bad_lat_mixed_bbox = %w[0,0.1,0.1,0 -0.1,80,0.1,70 0.24,54.34,0.25,54.33]
+ @bad_lon_mixed_bbox = %w[80,-0.1,70,0.1 54.34,0.24,54.33,0.25]
@bad_limit_bbox = %w[-180.1,-90,180,90 -180,-90.1,180,90 -180,-90,180.1,90 -180,-90,180,90.1]
@good_bbox = %w[-0.1,-0.1,0.1,0.1 51.1,-0.1,51.2,0 -0.1,%20-0.1,%200.1,%200.1
-0.1edcd,-0.1d,0.1,0.1 -0.1E,-0.1E,0.1S,0.1N S0.1,W0.1,N0.1,E0.1]
def test_good_bbox_boundaries
@good_bbox.each do |bbox_string|
- assert_nothing_raised(OSM::APIBadBoundingBox) { BoundingBox.from_s(bbox_string).check_boundaries }
+ assert_nothing_raised { BoundingBox.from_s(bbox_string).check_boundaries }
end
end
@bad_negative_boundary_bbox.each do |bbox_string|
bbox = BoundingBox.from_bbox_params(:bbox => bbox_string)
array = bbox.to_a
- assert_equal -180, [array[0], array[2]].min
- assert_equal -90, [array[1], array[3]].min
+ assert_equal(-180, [array[0], array[2]].min)
+ assert_equal(-90, [array[1], array[3]].min)
end
end
def test_good_bbox_size
@good_bbox.each do |bbox_string|
- assert_nothing_raised(OSM::APIBadBoundingBox) { BoundingBox.from_s(bbox_string).check_size }
+ assert_nothing_raised { BoundingBox.from_s(bbox_string).check_size }
end
end
def test_size_to_big
@bad_big_bbox.each do |bbox_string|
bbox = nil
- assert_nothing_raised(OSM::APIBadBoundingBox) { bbox = BoundingBox.from_bbox_params(:bbox => bbox_string).check_boundaries }
+ assert_nothing_raised { bbox = BoundingBox.from_bbox_params(:bbox => bbox_string).check_boundaries }
exception = assert_raise(OSM::APIBadBoundingBox) { bbox.check_size }
assert_equal(@size_error_message, exception.message)
end
end
def test_complete
- assert !@bbox_from_nils.complete?, "should contain a nil"
- assert @bbox_from_string.complete?, "should not contain a nil"
+ assert_not_predicate @bbox_from_nils, :complete?, "should contain a nil"
+ assert_predicate @bbox_from_string, :complete?, "should not contain a nil"
end
def test_centre_lon
def test_add_bounds_to_no_underscore
bounds = @bbox_from_string.add_bounds_to({})
assert_equal 4, bounds.size
- assert_equal @min_lon.to_s, bounds["minlon"]
- assert_equal @min_lat.to_s, bounds["minlat"]
- assert_equal @max_lon.to_s, bounds["maxlon"]
- assert_equal @max_lat.to_s, bounds["maxlat"]
+ assert_equal format("%<lon>.7f", :lon => @min_lon), bounds["minlon"]
+ assert_equal format("%<lat>.7f", :lat => @min_lat), bounds["minlat"]
+ assert_equal format("%<lon>.7f", :lon => @max_lon), bounds["maxlon"]
+ assert_equal format("%<lat>.7f", :lat => @max_lat), bounds["maxlat"]
end
def test_add_bounds_to_with_underscore
bounds = @bbox_from_string.add_bounds_to({}, "_")
assert_equal 4, bounds.size
- assert_equal @min_lon.to_s, bounds["min_lon"]
- assert_equal @min_lat.to_s, bounds["min_lat"]
- assert_equal @max_lon.to_s, bounds["max_lon"]
- assert_equal @max_lat.to_s, bounds["max_lat"]
+ assert_equal format("%<lon>.7f", :lon => @min_lon), bounds["min_lon"]
+ assert_equal format("%<lat>.7f", :lat => @min_lat), bounds["min_lat"]
+ assert_equal format("%<lon>.7f", :lon => @max_lon), bounds["max_lon"]
+ assert_equal format("%<lat>.7f", :lat => @max_lat), bounds["max_lat"]
end
def test_to_scaled
def check_expand(bbox, array_string, margin = 0, result = nil)
array = array_string.split(",").collect(&:to_f)
- result = array unless result
+ result ||= array
bbox.expand!(BoundingBox.new(array[0], array[1], array[2], array[3]), margin)
check_bbox(bbox, result)
end