Make sure the ruby quadtile code give the same result as the C version
authorTom Hughes <tom@compton.nu>
Sun, 8 May 2011 14:18:03 +0000 (15:18 +0100)
committerTom Hughes <tom@compton.nu>
Sun, 8 May 2011 14:18:03 +0000 (15:18 +0100)
lib/quad_tile.rb
test/functional/api_controller_test.rb

index 6e4fb6d2248c243bfc15c245fa0e643501229abf..a818f6a27f28cae18dd25cc3b287a1bc5eb38912 100644 (file)
@@ -3,8 +3,8 @@ module QuadTile
     require "quad_tile/quad_tile_so"
   rescue MissingSourceFile
     def self.tile_for_point(lat, lon)
-      x = ((lon + 180) * 65535 / 360).round
-      y = ((lat + 90) * 65535 / 180).round
+      x = ((lon.to_f + 180) * 65535 / 360).round
+      y = ((lat.to_f + 90) * 65535 / 180).round
 
       return tile_for_xy(x, y)
     end
index 098026a936d31113e572592aec62c1ac358ce50e..d5b1163e1795eab75b35ec61c462b437b8de8aa5 100644 (file)
@@ -53,9 +53,15 @@ class ApiControllerTest < ActionController::TestCase
     node = current_nodes(:used_node_1)
     bbox = "#{node.lon},#{node.lat},#{node.lon},#{node.lat}"
     get :map, :bbox => bbox
-    #print @response.body
     assert_response :success, "The map call should have succeeded"
-    assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']:root:empty", :count => 1
+    assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']:root", :count => 1 do
+      assert_select "bounds[minlon=#{node.lon}][minlat=#{node.lat}][maxlon=#{node.lon}][maxlat=#{node.lat}]", :count => 1
+      assert_select "node[id=#{node.id}][lat=#{node.lat}][lon=#{node.lon}][version=#{node.version}][changeset=#{node.changeset_id}][visible=#{node.visible}][timestamp=#{node.timestamp.xmlschema}]", :count => 1 do
+        # This should really be more generic
+        assert_select "tag[k='test'][v='yes']"
+      end
+      # Should also test for the ways and relation
+    end
   end
   
   def test_tracepoints