andre-geokit 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,56 @@
1
+ require 'test/unit'
2
+ require 'net/http'
3
+ require 'rubygems'
4
+ require 'mocha'
5
+ require 'lib/geokit'
6
+
7
+ class MockSuccess < Net::HTTPSuccess #:nodoc: all
8
+ def initialize
9
+ end
10
+ end
11
+
12
+ class MockFailure < Net::HTTPServiceUnavailable #:nodoc: all
13
+ def initialize
14
+ end
15
+ end
16
+
17
+ # Base class for testing geocoders.
18
+ class BaseGeocoderTest < Test::Unit::TestCase #:nodoc: all
19
+
20
+ # Defines common test fixtures.
21
+ def setup
22
+ @address = 'San Francisco, CA'
23
+ @full_address = '100 Spear St, San Francisco, CA, 94105-1522, US'
24
+ @full_address_short_zip = '100 Spear St, San Francisco, CA, 94105, US'
25
+
26
+ @success = Geokit::GeoLoc.new({:city=>"SAN FRANCISCO", :state=>"CA", :country_code=>"US", :lat=>37.7742, :lng=>-122.417068})
27
+ @success.success = true
28
+ end
29
+
30
+ def test_timeout_call_web_service
31
+ Geokit::Geocoders::Geocoder.class_eval do
32
+ def self.do_get(url)
33
+ sleep(2)
34
+ end
35
+ end
36
+ url = "http://www.anything.com"
37
+ Geokit::Geocoders::timeout = 1
38
+ assert_nil Geokit::Geocoders::Geocoder.call_geocoder_service(url)
39
+ end
40
+
41
+ def test_successful_call_web_service
42
+ url = "http://www.anything.com"
43
+ Geokit::Geocoders::Geocoder.expects(:do_get).with(url).returns("SUCCESS")
44
+ assert_equal "SUCCESS", Geokit::Geocoders::Geocoder.call_geocoder_service(url)
45
+ end
46
+
47
+ def test_find_geocoder_methods
48
+ public_methods = Geokit::Geocoders::Geocoder.public_methods
49
+ assert public_methods.include?("yahoo_geocoder")
50
+ assert public_methods.include?("google_geocoder")
51
+ assert public_methods.include?("ca_geocoder")
52
+ assert public_methods.include?("us_geocoder")
53
+ assert public_methods.include?("multi_geocoder")
54
+ assert public_methods.include?("ip_geocoder")
55
+ end
56
+ end
@@ -0,0 +1,74 @@
1
+ require 'test/unit'
2
+ require 'lib/geokit'
3
+
4
+ class BoundsTest < Test::Unit::TestCase #:nodoc: all
5
+
6
+ def setup
7
+ # This is the area in Texas
8
+ @sw = Geokit::LatLng.new(32.91663,-96.982841)
9
+ @ne = Geokit::LatLng.new(32.96302,-96.919495)
10
+ @bounds=Geokit::Bounds.new(@sw,@ne)
11
+ @loc_a=Geokit::LatLng.new(32.918593,-96.958444) # inside bounds
12
+ @loc_b=Geokit::LatLng.new(32.914144,-96.958444) # outside bouds
13
+
14
+ # this is a cross-meridan area
15
+ @cross_meridian=Geokit::Bounds.normalize([30,170],[40,-170])
16
+ @inside_cm=Geokit::LatLng.new(35,175)
17
+ @inside_cm_2=Geokit::LatLng.new(35,-175)
18
+ @east_of_cm=Geokit::LatLng.new(35,-165)
19
+ @west_of_cm=Geokit::LatLng.new(35,165)
20
+
21
+ end
22
+
23
+ def test_equality
24
+ assert_equal Geokit::Bounds.new(@sw,@ne), Geokit::Bounds.new(@sw,@ne)
25
+ end
26
+
27
+ def test_normalize
28
+ res=Geokit::Bounds.normalize(@sw,@ne)
29
+ assert_equal res,Geokit::Bounds.new(@sw,@ne)
30
+ res=Geokit::Bounds.normalize([@sw,@ne])
31
+ assert_equal res,Geokit::Bounds.new(@sw,@ne)
32
+ res=Geokit::Bounds.normalize([@sw.lat,@sw.lng],[@ne.lat,@ne.lng])
33
+ assert_equal res,Geokit::Bounds.new(@sw,@ne)
34
+ res=Geokit::Bounds.normalize([[@sw.lat,@sw.lng],[@ne.lat,@ne.lng]])
35
+ assert_equal res,Geokit::Bounds.new(@sw,@ne)
36
+ end
37
+
38
+ def test_point_inside_bounds
39
+ assert @bounds.contains?(@loc_a)
40
+ end
41
+
42
+ def test_point_outside_bounds
43
+ assert !@bounds.contains?(@loc_b)
44
+ end
45
+
46
+ def test_point_inside_bounds_cross_meridian
47
+ assert @cross_meridian.contains?(@inside_cm)
48
+ assert @cross_meridian.contains?(@inside_cm_2)
49
+ end
50
+
51
+ def test_point_outside_bounds_cross_meridian
52
+ assert !@cross_meridian.contains?(@east_of_cm)
53
+ assert !@cross_meridian.contains?(@west_of_cm)
54
+ end
55
+
56
+ def test_center
57
+ assert_in_delta 32.939828,@bounds.center.lat,0.00005
58
+ assert_in_delta -96.9511763,@bounds.center.lng,0.00005
59
+ end
60
+
61
+ def test_center_cross_meridian
62
+ assert_in_delta 35.41160, @cross_meridian.center.lat,0.00005
63
+ assert_in_delta 179.38112, @cross_meridian.center.lng,0.00005
64
+ end
65
+
66
+ def test_creation_from_circle
67
+ bounds=Geokit::Bounds.from_point_and_radius([32.939829, -96.951176],2.5)
68
+ inside=Geokit::LatLng.new 32.9695270000,-96.9901590000
69
+ outside=Geokit::LatLng.new 32.8951550000,-96.9584440000
70
+ assert bounds.contains?(inside)
71
+ assert !bounds.contains?(outside)
72
+ end
73
+
74
+ end
@@ -0,0 +1,41 @@
1
+ require File.join(File.dirname(__FILE__), 'test_base_geocoder')
2
+
3
+ Geokit::Geocoders::geocoder_ca = "SOMEKEYVALUE"
4
+
5
+ class CaGeocoderTest < BaseGeocoderTest #:nodoc: all
6
+
7
+ CA_SUCCESS=<<-EOF
8
+ <?xml version="1.0" encoding="UTF-8" ?>
9
+ <geodata><latt>49.243086</latt><longt>-123.153684</longt></geodata>
10
+ EOF
11
+
12
+ def setup
13
+ @ca_full_hash = {:street_address=>"2105 West 32nd Avenue",:city=>"Vancouver", :state=>"BC"}
14
+ @ca_full_loc = Geokit::GeoLoc.new(@ca_full_hash)
15
+ end
16
+
17
+ def test_geocoder_with_geo_loc_with_account
18
+ response = MockSuccess.new
19
+ response.expects(:body).returns(CA_SUCCESS)
20
+ url = "http://geocoder.ca/?stno=2105&addresst=West+32nd+Avenue&city=Vancouver&prov=BC&auth=SOMEKEYVALUE&geoit=xml"
21
+ Geokit::Geocoders::CaGeocoder.expects(:call_geocoder_service).with(url).returns(response)
22
+ verify(Geokit::Geocoders::CaGeocoder.geocode(@ca_full_loc))
23
+ end
24
+
25
+ def test_service_unavailable
26
+ response = MockFailure.new
27
+ #Net::HTTP.expects(:get_response).with(URI.parse("http://geocoder.ca/?stno=2105&addresst=West+32nd+Avenue&city=Vancouver&prov=BC&auth=SOMEKEYVALUE&geoit=xml")).returns(response)
28
+ url = "http://geocoder.ca/?stno=2105&addresst=West+32nd+Avenue&city=Vancouver&prov=BC&auth=SOMEKEYVALUE&geoit=xml"
29
+ Geokit::Geocoders::CaGeocoder.expects(:call_geocoder_service).with(url).returns(response)
30
+ assert !Geokit::Geocoders::CaGeocoder.geocode(@ca_full_loc).success
31
+ end
32
+
33
+ private
34
+
35
+ def verify(location)
36
+ assert_equal "BC", location.state
37
+ assert_equal "Vancouver", location.city
38
+ assert_equal "49.243086,-123.153684", location.ll
39
+ assert !location.is_us?
40
+ end
41
+ end
@@ -0,0 +1,49 @@
1
+ require 'test/unit'
2
+ require 'lib/geokit'
3
+
4
+ class GeoLocTest < Test::Unit::TestCase #:nodoc: all
5
+
6
+ def setup
7
+ @loc = Geokit::GeoLoc.new
8
+ end
9
+
10
+ def test_is_us
11
+ assert !@loc.is_us?
12
+ @loc.country_code = 'US'
13
+ assert @loc.is_us?
14
+ end
15
+
16
+ def test_street_number
17
+ @loc.street_address = '123 Spear St.'
18
+ assert_equal '123', @loc.street_number
19
+ end
20
+
21
+ def test_street_name
22
+ @loc.street_address = '123 Spear St.'
23
+ assert_equal 'Spear St.', @loc.street_name
24
+ end
25
+
26
+ def test_city
27
+ @loc.city = "san francisco"
28
+ assert_equal 'San Francisco', @loc.city
29
+ end
30
+
31
+ def test_full_address
32
+ @loc.city = 'San Francisco'
33
+ @loc.state = 'CA'
34
+ @loc.zip = '94105'
35
+ @loc.country_code = 'US'
36
+ assert_equal 'San Francisco, CA, 94105, US', @loc.full_address
37
+ @loc.full_address = 'Irving, TX, 75063, US'
38
+ assert_equal 'Irving, TX, 75063, US', @loc.full_address
39
+ end
40
+
41
+ def test_hash
42
+ @loc.city = 'San Francisco'
43
+ @loc.state = 'CA'
44
+ @loc.zip = '94105'
45
+ @loc.country_code = 'US'
46
+ @another = Geokit::GeoLoc.new @loc.to_hash
47
+ assert_equal @loc, @another
48
+ end
49
+ end
@@ -0,0 +1,88 @@
1
+ require File.join(File.dirname(__FILE__), 'test_base_geocoder')
2
+
3
+ Geokit::Geocoders::google = 'Google'
4
+
5
+ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
6
+
7
+ GOOGLE_FULL=<<-EOF.strip
8
+ <?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.0"><Response><name>100 spear st, san francisco, ca</name><Status><code>200</code><request>geocode</request></Status><Placemark><address>100 Spear St, San Francisco, CA 94105, USA</address><AddressDetails Accuracy="8" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>US</CountryNameCode><AdministrativeArea><AdministrativeAreaName>CA</AdministrativeAreaName><SubAdministrativeArea><SubAdministrativeAreaName>San Francisco</SubAdministrativeAreaName><Locality><LocalityName>San Francisco</LocalityName><Thoroughfare><ThoroughfareName>100 Spear St</ThoroughfareName></Thoroughfare><PostalCode><PostalCodeNumber>94105</PostalCodeNumber></PostalCode></Locality></SubAdministrativeArea></AdministrativeArea></Country></AddressDetails><Point><coordinates>-122.393985,37.792501,0</coordinates></Point></Placemark></Response></kml>
9
+ EOF
10
+
11
+ GOOGLE_CITY=<<-EOF.strip
12
+ <?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.0"><Response><name>San Francisco</name><Status><code>200</code><request>geocode</request></Status><Placemark><address>San Francisco, CA, USA</address><AddressDetails Accuracy="4" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>US</CountryNameCode><AdministrativeArea><AdministrativeAreaName>CA</AdministrativeAreaName><Locality><LocalityName>San Francisco</LocalityName></Locality></AdministrativeArea></Country></AddressDetails><Point><coordinates>-122.418333,37.775000,0</coordinates></Point></Placemark></Response></kml>
13
+ EOF
14
+
15
+ def setup
16
+ super
17
+ @google_full_hash = {:street_address=>"100 Spear St", :city=>"San Francisco", :state=>"CA", :zip=>"94105", :country_code=>"US"}
18
+ @google_city_hash = {:city=>"San Francisco", :state=>"CA"}
19
+
20
+ @google_full_loc = Geokit::GeoLoc.new(@google_full_hash)
21
+ @google_city_loc = Geokit::GeoLoc.new(@google_city_hash)
22
+ end
23
+
24
+ def test_google_full_address
25
+ response = MockSuccess.new
26
+ response.expects(:body).returns(GOOGLE_FULL)
27
+ url = "http://maps.google.com/maps/geo?q=#{Geokit::Inflector.url_escape(@address)}&output=xml&key=Google&oe=utf-8"
28
+ Geokit::Geocoders::GoogleGeocoder.expects(:call_geocoder_service).with(url).returns(response)
29
+ res=Geokit::Geocoders::GoogleGeocoder.geocode(@address)
30
+ assert_equal "CA", res.state
31
+ assert_equal "San Francisco", res.city
32
+ assert_equal "37.792501,-122.393985", res.ll # slightly dif from yahoo
33
+ assert res.is_us?
34
+ assert_equal "100 Spear St, San Francisco, CA 94105, USA", res.full_address #slightly different from yahoo
35
+ assert_equal "google", res.provider
36
+ end
37
+
38
+ def test_google_full_address_with_geo_loc
39
+ response = MockSuccess.new
40
+ response.expects(:body).returns(GOOGLE_FULL)
41
+ url = "http://maps.google.com/maps/geo?q=#{Geokit::Inflector.url_escape(@full_address_short_zip)}&output=xml&key=Google&oe=utf-8"
42
+ Geokit::Geocoders::GoogleGeocoder.expects(:call_geocoder_service).with(url).returns(response)
43
+ res=Geokit::Geocoders::GoogleGeocoder.geocode(@google_full_loc)
44
+ assert_equal "CA", res.state
45
+ assert_equal "San Francisco", res.city
46
+ assert_equal "37.792501,-122.393985", res.ll # slightly dif from yahoo
47
+ assert res.is_us?
48
+ assert_equal "100 Spear St, San Francisco, CA 94105, USA", res.full_address #slightly different from yahoo
49
+ assert_equal "google", res.provider
50
+ end
51
+
52
+ def test_google_city
53
+ response = MockSuccess.new
54
+ response.expects(:body).returns(GOOGLE_CITY)
55
+ url = "http://maps.google.com/maps/geo?q=#{Geokit::Inflector.url_escape(@address)}&output=xml&key=Google&oe=utf-8"
56
+ Geokit::Geocoders::GoogleGeocoder.expects(:call_geocoder_service).with(url).returns(response)
57
+ res=Geokit::Geocoders::GoogleGeocoder.geocode(@address)
58
+ assert_equal "CA", res.state
59
+ assert_equal "San Francisco", res.city
60
+ assert_equal "37.775,-122.418333", res.ll
61
+ assert res.is_us?
62
+ assert_equal "San Francisco, CA, USA", res.full_address
63
+ assert_nil res.street_address
64
+ assert_equal "google", res.provider
65
+ end
66
+
67
+ def test_google_city_with_geo_loc
68
+ response = MockSuccess.new
69
+ response.expects(:body).returns(GOOGLE_CITY)
70
+ url = "http://maps.google.com/maps/geo?q=#{Geokit::Inflector.url_escape(@address)}&output=xml&key=Google&oe=utf-8"
71
+ Geokit::Geocoders::GoogleGeocoder.expects(:call_geocoder_service).with(url).returns(response)
72
+ res=Geokit::Geocoders::GoogleGeocoder.geocode(@google_city_loc)
73
+ assert_equal "CA", res.state
74
+ assert_equal "San Francisco", res.city
75
+ assert_equal "37.775,-122.418333", res.ll
76
+ assert res.is_us?
77
+ assert_equal "San Francisco, CA, USA", res.full_address
78
+ assert_nil res.street_address
79
+ assert_equal "google", res.provider
80
+ end
81
+
82
+ def test_service_unavailable
83
+ response = MockFailure.new
84
+ url = "http://maps.google.com/maps/geo?q=#{Geokit::Inflector.url_escape(@address)}&output=xml&key=Google&oe=utf-8"
85
+ Geokit::Geocoders::GoogleGeocoder.expects(:call_geocoder_service).with(url).returns(response)
86
+ assert !Geokit::Geocoders::GoogleGeocoder.geocode(@google_city_loc).success
87
+ end
88
+ end
@@ -0,0 +1,111 @@
1
+ require 'test/unit'
2
+ require 'lib/geokit'
3
+
4
+ class LatLngTest < Test::Unit::TestCase #:nodoc: all
5
+
6
+ def setup
7
+ @loc_a = Geokit::LatLng.new(32.918593,-96.958444)
8
+ @loc_e = Geokit::LatLng.new(32.969527,-96.990159)
9
+ @point = Geokit::LatLng.new(@loc_a.lat, @loc_a.lng)
10
+ end
11
+
12
+ def test_distance_between_same_using_defaults
13
+ assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a)
14
+ assert_equal 0, @loc_a.distance_to(@loc_a)
15
+ end
16
+
17
+ def test_distance_between_same_with_miles_and_flat
18
+ assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :units => :miles, :formula => :flat)
19
+ assert_equal 0, @loc_a.distance_to(@loc_a, :units => :miles, :formula => :flat)
20
+ end
21
+
22
+ def test_distance_between_same_with_kms_and_flat
23
+ assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :units => :kms, :formula => :flat)
24
+ assert_equal 0, @loc_a.distance_to(@loc_a, :units => :kms, :formula => :flat)
25
+ end
26
+
27
+ def test_distance_between_same_with_miles_and_sphere
28
+ assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :units => :miles, :formula => :sphere)
29
+ assert_equal 0, @loc_a.distance_to(@loc_a, :units => :miles, :formula => :sphere)
30
+ end
31
+
32
+ def test_distance_between_same_with_kms_and_sphere
33
+ assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :units => :kms, :formula => :sphere)
34
+ assert_equal 0, @loc_a.distance_to(@loc_a, :units => :kms, :formula => :sphere)
35
+ end
36
+
37
+ def test_distance_between_diff_using_defaults
38
+ assert_in_delta 3.97, Geokit::LatLng.distance_between(@loc_a, @loc_e), 0.01
39
+ assert_in_delta 3.97, @loc_a.distance_to(@loc_e), 0.01
40
+ end
41
+
42
+ def test_distance_between_diff_with_miles_and_flat
43
+ assert_in_delta 3.97, Geokit::LatLng.distance_between(@loc_a, @loc_e, :units => :miles, :formula => :flat), 0.2
44
+ assert_in_delta 3.97, @loc_a.distance_to(@loc_e, :units => :miles, :formula => :flat), 0.2
45
+ end
46
+
47
+ def test_distance_between_diff_with_kms_and_flat
48
+ assert_in_delta 6.39, Geokit::LatLng.distance_between(@loc_a, @loc_e, :units => :kms, :formula => :flat), 0.4
49
+ assert_in_delta 6.39, @loc_a.distance_to(@loc_e, :units => :kms, :formula => :flat), 0.4
50
+ end
51
+
52
+ def test_distance_between_diff_with_miles_and_sphere
53
+ assert_in_delta 3.97, Geokit::LatLng.distance_between(@loc_a, @loc_e, :units => :miles, :formula => :sphere), 0.01
54
+ assert_in_delta 3.97, @loc_a.distance_to(@loc_e, :units => :miles, :formula => :sphere), 0.01
55
+ end
56
+
57
+ def test_distance_between_diff_with_kms_and_sphere
58
+ assert_in_delta 6.39, Geokit::LatLng.distance_between(@loc_a, @loc_e, :units => :kms, :formula => :sphere), 0.01
59
+ assert_in_delta 6.39, @loc_a.distance_to(@loc_e, :units => :kms, :formula => :sphere), 0.01
60
+ end
61
+
62
+ def test_manually_mixed_in
63
+ assert_equal 0, Geokit::LatLng.distance_between(@point, @point)
64
+ assert_equal 0, @point.distance_to(@point)
65
+ assert_equal 0, @point.distance_to(@loc_a)
66
+ assert_in_delta 3.97, @point.distance_to(@loc_e, :units => :miles, :formula => :flat), 0.2
67
+ assert_in_delta 6.39, @point.distance_to(@loc_e, :units => :kms, :formula => :flat), 0.4
68
+ end
69
+
70
+ def test_heading_between
71
+ assert_in_delta 332, Geokit::LatLng.heading_between(@loc_a,@loc_e), 0.5
72
+ end
73
+
74
+ def test_heading_to
75
+ assert_in_delta 332, @loc_a.heading_to(@loc_e), 0.5
76
+ end
77
+
78
+ def test_class_endpoint
79
+ endpoint=Geokit::LatLng.endpoint(@loc_a, 332, 3.97)
80
+ assert_in_delta @loc_e.lat, endpoint.lat, 0.0005
81
+ assert_in_delta @loc_e.lng, endpoint.lng, 0.0005
82
+ end
83
+
84
+ def test_instance_endpoint
85
+ endpoint=@loc_a.endpoint(332, 3.97)
86
+ assert_in_delta @loc_e.lat, endpoint.lat, 0.0005
87
+ assert_in_delta @loc_e.lng, endpoint.lng, 0.0005
88
+ end
89
+
90
+ def test_midpoint
91
+ midpoint=@loc_a.midpoint_to(@loc_e)
92
+ assert_in_delta 32.944061, midpoint.lat, 0.0005
93
+ assert_in_delta(-96.974296, midpoint.lng, 0.0005)
94
+ end
95
+
96
+ def test_normalize
97
+ lat=37.7690
98
+ lng=-122.443
99
+ res=Geokit::LatLng.normalize(lat,lng)
100
+ assert_equal res,Geokit::LatLng.new(lat,lng)
101
+ res=Geokit::LatLng.normalize("#{lat}, #{lng}")
102
+ assert_equal res,Geokit::LatLng.new(lat,lng)
103
+ res=Geokit::LatLng.normalize("#{lat} #{lng}")
104
+ assert_equal res,Geokit::LatLng.new(lat,lng)
105
+ res=Geokit::LatLng.normalize("#{lat.to_i} #{lng.to_i}")
106
+ assert_equal res,Geokit::LatLng.new(lat.to_i,lng.to_i)
107
+ res=Geokit::LatLng.normalize([lat,lng])
108
+ assert_equal res,Geokit::LatLng.new(lat,lng)
109
+ end
110
+
111
+ end
@@ -0,0 +1,44 @@
1
+ require File.join(File.dirname(__FILE__), 'test_base_geocoder')
2
+
3
+ Geokit::Geocoders::provider_order=[:google,:yahoo,:us]
4
+
5
+ class MultiGeocoderTest < BaseGeocoderTest #:nodoc: all
6
+
7
+ def setup
8
+ super
9
+ @failure = Geokit::GeoLoc.new
10
+ end
11
+
12
+ def test_successful_first
13
+ Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address).returns(@success)
14
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@address)
15
+ end
16
+
17
+ def test_failover
18
+ Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address).returns(@failure)
19
+ Geokit::Geocoders::YahooGeocoder.expects(:geocode).with(@address).returns(@success)
20
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@address)
21
+ end
22
+
23
+ def test_double_failover
24
+ Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address).returns(@failure)
25
+ Geokit::Geocoders::YahooGeocoder.expects(:geocode).with(@address).returns(@failure)
26
+ Geokit::Geocoders::UsGeocoder.expects(:geocode).with(@address).returns(@success)
27
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@address)
28
+ end
29
+
30
+ def test_failure
31
+ Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address).returns(@failure)
32
+ Geokit::Geocoders::YahooGeocoder.expects(:geocode).with(@address).returns(@failure)
33
+ Geokit::Geocoders::UsGeocoder.expects(:geocode).with(@address).returns(@failure)
34
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(@address)
35
+ end
36
+
37
+ def test_invalid_provider
38
+ temp = Geokit::Geocoders::provider_order
39
+ Geokit::Geocoders.provider_order = [:bogus]
40
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(@address)
41
+ Geokit::Geocoders.provider_order = temp
42
+ end
43
+
44
+ end