X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/dc2a2c8ebd1a11e4a64555fda22c6859a51defff..86fae8980d97ba7fdd9345eb5e372fd4f8f20b7f:/test/lib/bounding_box_test.rb?ds=inline diff --git a/test/lib/bounding_box_test.rb b/test/lib/bounding_box_test.rb index 4e962aedf..9143fcd81 100644 --- a/test/lib/bounding_box_test.rb +++ b/test/lib/bounding_box_test.rb @@ -3,7 +3,7 @@ require "test_helper" 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" @@ -19,20 +19,20 @@ class BoundingBoxTest < ActiveSupport::TestCase @max_lon = 3.0 @max_lat = 4.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_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_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) - - @expand_min_lon_array = %w(2,10,10,10 1,10,10,10 0,10,10,10 -1,10,10,10 -2,10,10,10 -8,10,10,10) - @expand_min_lat_array = %w(10,2,10,10 10,1,10,10 10,0,10,10 10,-1,10,10 10,-2,10,10 10,-8,10,10) - @expand_max_lon_array = %w(-2,-2,-1,-2 -2,-2,0,-2 -2,-2,1,-2 -2,-2,2,-2) - @expand_max_lat_array = %w(-2,-2,-2,-1 -2,-2,-2,0 -2,-2,-2,1 -2,-2,-2,2) + @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_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_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] + + @expand_min_lon_array = %w[2,10,10,10 1,10,10,10 0,10,10,10 -1,10,10,10 -2,10,10,10 -8,10,10,10] + @expand_min_lat_array = %w[10,2,10,10 10,1,10,10 10,0,10,10 10,-1,10,10 10,-2,10,10 10,-8,10,10] + @expand_max_lon_array = %w[-2,-2,-1,-2 -2,-2,0,-2 -2,-2,1,-2 -2,-2,2,-2] + @expand_max_lat_array = %w[-2,-2,-2,-1 -2,-2,-2,0 -2,-2,-2,1 -2,-2,-2,2] @expand_min_lon_margin_response = [[2, 10, 10, 10], [-7, 10, 10, 10], [-7, 10, 10, 10], [-7, 10, 10, 10], [-7, 10, 10, 10], [-25, 10, 10, 10]] @expand_min_lat_margin_response = [[10, 2, 10, 10], [10, -7, 10, 10], [10, -7, 10, 10], [10, -7, 10, 10], [10, -7, 10, 10], [10, -25, 10, 10]] @expand_max_lon_margin_response = [[-2, -2, -1, -2], [-2, -2, 1, -2], [-2, -2, 1, -2], [-2, -2, 5, -2]] @@ -151,7 +151,7 @@ class BoundingBoxTest < ActiveSupport::TestCase 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 @@ -168,8 +168,8 @@ class BoundingBoxTest < ActiveSupport::TestCase @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 @@ -196,20 +196,20 @@ class BoundingBoxTest < ActiveSupport::TestCase 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_bbox_area + def test_good_bbox_area @good_bbox.each do |string| bbox = BoundingBox.from_s(string) array = string.split(",") @@ -217,9 +217,13 @@ class BoundingBoxTest < ActiveSupport::TestCase end end + def test_nil_bbox_area + assert_equal 0, @bbox_from_nils.area + 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 @@ -261,19 +265,19 @@ class BoundingBoxTest < ActiveSupport::TestCase 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("%.7f", :lon => @min_lon), bounds["minlon"] + assert_equal format("%.7f", :lat => @min_lat), bounds["minlat"] + assert_equal format("%.7f", :lon => @max_lon), bounds["maxlon"] + assert_equal format("%.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("%.7f", :lon => @min_lon), bounds["min_lon"] + assert_equal format("%.7f", :lat => @min_lat), bounds["min_lat"] + assert_equal format("%.7f", :lon => @max_lon), bounds["max_lon"] + assert_equal format("%.7f", :lat => @max_lat), bounds["max_lat"] end def test_to_scaled @@ -302,15 +306,15 @@ class BoundingBoxTest < ActiveSupport::TestCase 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 def check_bbox(bbox, result) - assert_equal result[0], bbox.min_lon, "min_lon" - assert_equal result[1], bbox.min_lat, "min_lat" - assert_equal result[2], bbox.max_lon, "max_lon" - assert_equal result[3], bbox.max_lat, "max_lat" + assert_equal_allowing_nil result[0], bbox.min_lon, "min_lon" + assert_equal_allowing_nil result[1], bbox.min_lat, "min_lat" + assert_equal_allowing_nil result[2], bbox.max_lon, "max_lon" + assert_equal_allowing_nil result[3], bbox.max_lat, "max_lat" end end