andre-geokit 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +8 -0
- data/lib/geokit.rb +1 -1
- data/lib/geokit/geocoders.rb +1 -1
- data/test/test_geoplugin_geocoder.rb +59 -0
- data/test/test_google_reverse_geocoder.rb +49 -0
- data/test/test_inflector.rb +22 -0
- data/test/test_ipgeocoder.rb +88 -0
- data/test/test_multi_geocoder.rb +10 -0
- data/test/test_multi_ip_geocoder.rb +38 -0
- metadata +6 -1
data/Rakefile
CHANGED
@@ -4,6 +4,14 @@ require 'rubygems'
|
|
4
4
|
require 'hoe'
|
5
5
|
require './lib/geokit.rb'
|
6
6
|
|
7
|
+
# undefined method `empty?' for nil:NilClass
|
8
|
+
# /Library/Ruby/Site/1.8/rubygems/specification.rb:886:in `validate'
|
9
|
+
class NilClass
|
10
|
+
def empty?
|
11
|
+
true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
7
15
|
project=Hoe.new('geokit', Geokit::VERSION) do |p|
|
8
16
|
#p.rubyforge_name = 'geokit' # if different than lowercase project name
|
9
17
|
p.developer('Andre Lewis', 'andre@earthcode.com')
|
data/lib/geokit.rb
CHANGED
data/lib/geokit/geocoders.rb
CHANGED
@@ -564,7 +564,7 @@ module Geokit
|
|
564
564
|
# The failover approach is crucial for production-grade apps, but is rarely used.
|
565
565
|
# 98% of your geocoding calls will be successful with the first call
|
566
566
|
def self.do_geocode(address)
|
567
|
-
geocode_ip =
|
567
|
+
geocode_ip = /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/.match(address)
|
568
568
|
provider_order = geocode_ip ? Geokit::Geocoders::ip_provider_order : Geokit::Geocoders::provider_order
|
569
569
|
|
570
570
|
provider_order.each do |provider|
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.join(File.dirname(__FILE__), 'test_base_geocoder')
|
3
|
+
|
4
|
+
class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
5
|
+
|
6
|
+
IP_SUCCESS=<<-EOF
|
7
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
8
|
+
<geoPlugin>
|
9
|
+
<geoplugin_city>Belo Horizonte</geoplugin_city>
|
10
|
+
<geoplugin_region>Minas Gerais</geoplugin_region>
|
11
|
+
<geoplugin_areaCode>0</geoplugin_areaCode>
|
12
|
+
<geoplugin_dmaCode>0</geoplugin_dmaCode>
|
13
|
+
<geoplugin_countryCode>BR</geoplugin_countryCode>
|
14
|
+
<geoplugin_countryName>Brazil</geoplugin_countryName>
|
15
|
+
<geoplugin_continentCode>SA</geoplugin_continentCode>
|
16
|
+
<geoplugin_latitude>-19.916700</geoplugin_latitude>
|
17
|
+
<geoplugin_longitude>-43.933300</geoplugin_longitude>
|
18
|
+
<geoplugin_currencyCode>BRL</geoplugin_currencyCode>
|
19
|
+
<geoplugin_currencySymbol>R$</geoplugin_currencySymbol>
|
20
|
+
<geoplugin_currencyConverter>2.2575001717</geoplugin_currencyConverter>
|
21
|
+
</geoPlugin>
|
22
|
+
EOF
|
23
|
+
|
24
|
+
def setup
|
25
|
+
super
|
26
|
+
@success.provider = "geoPlugin"
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_successful_lookup
|
30
|
+
success = MockSuccess.new
|
31
|
+
success.expects(:body).returns(IP_SUCCESS)
|
32
|
+
url = 'http://www.geoplugin.net/xml.gp?ip=200.150.38.66'
|
33
|
+
GeoKit::Geocoders::GeoPluginGeocoder.expects(:call_geocoder_service).with(url).returns(success)
|
34
|
+
location = GeoKit::Geocoders::GeoPluginGeocoder.geocode('200.150.38.66')
|
35
|
+
assert_not_nil location
|
36
|
+
assert_equal -19.916700, location.lat
|
37
|
+
assert_equal -43.933300, location.lng
|
38
|
+
assert_equal "Belo Horizonte", location.city
|
39
|
+
assert_equal "Minas Gerais", location.state
|
40
|
+
assert_equal "BR", location.country_code
|
41
|
+
assert_equal "geoPlugin", location.provider
|
42
|
+
assert location.success?
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_invalid_ip
|
46
|
+
location = GeoKit::Geocoders::GeoPluginGeocoder.geocode("pixrum")
|
47
|
+
assert_not_nil location
|
48
|
+
assert !location.success?
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_service_unavailable
|
52
|
+
failure = MockFailure.new
|
53
|
+
url = 'http://www.geoplugin.net/xml.gp?ip=10.10.10.10'
|
54
|
+
GeoKit::Geocoders::GeoPluginGeocoder.expects(:call_geocoder_service).with(url).returns(failure)
|
55
|
+
location = GeoKit::Geocoders::GeoPluginGeocoder.geocode("10.10.10.10")
|
56
|
+
assert_not_nil location
|
57
|
+
assert !location.success?
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_base_geocoder')
|
2
|
+
|
3
|
+
Geokit::Geocoders::google = 'Google'
|
4
|
+
|
5
|
+
class GoogleReverseGeocoderTest < BaseGeocoderTest #:nodoc: all
|
6
|
+
|
7
|
+
GOOGLE_REVERSE_FULL=<<-EOF.strip
|
8
|
+
<?xml version="1.0" encoding="UTF-8" ?><kml xmlns="http://earth.google.com/kml/2.0"><Response><name>51.457833,7.016685</name><Status><code>200</code><request>geocode</request></Status><Placemark id="p1"><address>Porscheplatz 1, 45127 Essen, Deutschland</address><AddressDetails Accuracy="8" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>DE</CountryNameCode><CountryName>Deutschland</CountryName><AdministrativeArea><AdministrativeAreaName>Nordrhein-Westfalen</AdministrativeAreaName><SubAdministrativeArea><SubAdministrativeAreaName>Essen</SubAdministrativeAreaName><Locality><LocalityName>Essen</LocalityName><DependentLocality><DependentLocalityName>Stadtkern</DependentLocalityName><Thoroughfare><ThoroughfareName>Porscheplatz 1</ThoroughfareName></Thoroughfare><PostalCode><PostalCodeNumber>45127</PostalCodeNumber></PostalCode></DependentLocality></Locality></SubAdministrativeArea></AdministrativeArea></Country></AddressDetails><ExtendedData><LatLonBox north="51.4609805" south="51.4546853" east="7.0198324" west="7.0135372" /></ExtendedData><Point><coordinates>7.0166848,51.4578329,0</coordinates></Point></Placemark><Placemark id="p2"><address>Stadtkern, Essen, Deutschland</address><AddressDetails Accuracy="4" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>DE</CountryNameCode><CountryName>Deutschland</CountryName><AdministrativeArea><AdministrativeAreaName>Nordrhein-Westfalen</AdministrativeAreaName><SubAdministrativeArea><SubAdministrativeAreaName>Essen</SubAdministrativeAreaName><Locality><LocalityName>Essen</LocalityName><DependentLocality><DependentLocalityName>Stadtkern</DependentLocalityName></DependentLocality></Locality></SubAdministrativeArea></AdministrativeArea></Country></AddressDetails><ExtendedData><LatLonBox north="51.4630710" south="51.4506320" east="7.0193200" west="7.0026170" /></ExtendedData><Point><coordinates>7.0124328,51.4568201,0</coordinates></Point></Placemark><Placemark id="p3"><address>45127 Essen, Deutschland</address><AddressDetails Accuracy="5" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>DE</CountryNameCode><CountryName>Deutschland</CountryName><AdministrativeArea><AdministrativeAreaName>Nordrhein-Westfalen</AdministrativeAreaName><SubAdministrativeArea><SubAdministrativeAreaName>Essen</SubAdministrativeAreaName><Locality><LocalityName>Essen</LocalityName><PostalCode><PostalCodeNumber>45127</PostalCodeNumber></PostalCode></Locality></SubAdministrativeArea></AdministrativeArea></Country></AddressDetails><ExtendedData><LatLonBox north="51.4637808" south="51.4503125" east="7.0231080" west="6.9965454" /></ExtendedData><Point><coordinates>7.0104543,51.4556194,0</coordinates></Point></Placemark><Placemark id="p4"><address>Essen, Deutschland</address><AddressDetails Accuracy="4" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>DE</CountryNameCode><CountryName>Deutschland</CountryName><AdministrativeArea><AdministrativeAreaName>Nordrhein-Westfalen</AdministrativeAreaName><SubAdministrativeArea><SubAdministrativeAreaName>Essen</SubAdministrativeAreaName><Locality><LocalityName>Essen</LocalityName></Locality></SubAdministrativeArea></AdministrativeArea></Country></AddressDetails><ExtendedData><LatLonBox north="51.5342070" south="51.3475730" east="7.1376530" west="6.8943470" /></ExtendedData><Point><coordinates>7.0147614,51.4580686,0</coordinates></Point></Placemark><Placemark id="p5"><address>Essen, Deutschland</address><AddressDetails Accuracy="3" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>DE</CountryNameCode><CountryName>Deutschland</CountryName><AdministrativeArea><AdministrativeAreaName>Nordrhein-Westfalen</AdministrativeAreaName><SubAdministrativeArea><SubAdministrativeAreaName>Essen</SubAdministrativeAreaName></SubAdministrativeArea></AdministrativeArea></Country></AddressDetails><ExtendedData><LatLonBox north="51.5342070" south="51.3475730" east="7.1376530" west="6.8943470" /></ExtendedData><Point><coordinates>7.0461136,51.4508381,0</coordinates></Point></Placemark><Placemark id="p6"><address>Nordrhein-Westfalen, Deutschland</address><AddressDetails Accuracy="2" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>DE</CountryNameCode><CountryName>Deutschland</CountryName><AdministrativeArea><AdministrativeAreaName>Nordrhein-Westfalen</AdministrativeAreaName></AdministrativeArea></Country></AddressDetails><ExtendedData><LatLonBox north="52.5314170" south="50.3225720" east="9.4615950" west="5.8663566" /></ExtendedData><Point><coordinates>7.6615938,51.4332367,0</coordinates></Point></Placemark><Placemark id="p7"><address>Deutschland</address><AddressDetails Accuracy="1" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>DE</CountryNameCode><CountryName>Deutschland</CountryName></Country></AddressDetails><ExtendedData><LatLonBox north="55.0568230" south="47.2701270" east="15.0418536" west="5.8663566" /></ExtendedData><Point><coordinates>10.4515260,51.1656910,0</coordinates></Point></Placemark></Response></kml>
|
9
|
+
EOF
|
10
|
+
|
11
|
+
|
12
|
+
def test_google_full_address
|
13
|
+
response = MockSuccess.new
|
14
|
+
response.expects(:body).returns(GOOGLE_REVERSE_FULL)
|
15
|
+
|
16
|
+
|
17
|
+
# http://maps.google.com/maps/geo?output=xml&oe=utf-8&ll=51.4578329,7.0166848&key=asdad
|
18
|
+
|
19
|
+
# #<Geokit::GeoLoc:0x10ec7ec
|
20
|
+
# @city="Essen",
|
21
|
+
# @country_code="DE",
|
22
|
+
# @full_address="Porscheplatz 1, 45127 Essen, Germany",
|
23
|
+
# @lat=51.4578329,
|
24
|
+
# @lng=7.0166848,
|
25
|
+
# @precision="address",
|
26
|
+
# @provider="google",
|
27
|
+
# @state="Nordrhein-Westfalen",
|
28
|
+
# @street_address="Porscheplatz 1",
|
29
|
+
# @success=true,
|
30
|
+
# @zip="45127">
|
31
|
+
#
|
32
|
+
|
33
|
+
|
34
|
+
@latlng = "51.4578329,7.0166848"
|
35
|
+
|
36
|
+
url = "http://maps.google.com/maps/geo?ll=#{Geokit::Inflector.url_escape(@latlng)}&output=xml&key=Google&oe=utf-8"
|
37
|
+
Geokit::Geocoders::GoogleGeocoder.expects(:call_geocoder_service).with(url).returns(response)
|
38
|
+
res=Geokit::Geocoders::GoogleGeocoder.reverse_geocode(@latlng)
|
39
|
+
assert_equal "Nordrhein-Westfalen", res.state
|
40
|
+
assert_equal "Essen", res.city
|
41
|
+
assert_equal "45127", res.zip
|
42
|
+
assert_equal "51.4578329,7.0166848", res.ll # slightly dif from yahoo
|
43
|
+
assert res.is_us? == false
|
44
|
+
assert_equal "Porscheplatz 1, 45127 Essen, Deutschland", res.full_address #slightly different from yahoo
|
45
|
+
assert_equal "google", res.provider
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'lib/geokit'
|
3
|
+
|
4
|
+
class InflectorTest < Test::Unit::TestCase #:nodoc: all
|
5
|
+
|
6
|
+
def test_titleize
|
7
|
+
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('Sugar Grove')
|
8
|
+
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('Sugar grove')
|
9
|
+
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('sugar Grove')
|
10
|
+
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('sugar grove')
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_titleize_with_unicode
|
14
|
+
assert_equal 'Borås', Geokit::Inflector.titleize('Borås')
|
15
|
+
assert_equal 'Borås', Geokit::Inflector.titleize('borås')
|
16
|
+
assert_equal 'Borås (Abc)', Geokit::Inflector.titleize('Borås (Abc)')
|
17
|
+
assert_equal 'Borås (Abc)', Geokit::Inflector.titleize('Borås (abc)')
|
18
|
+
assert_equal 'Borås (Abc)', Geokit::Inflector.titleize('borås (Abc)')
|
19
|
+
assert_equal 'Borås (Abc)', Geokit::Inflector.titleize('borås (abc)')
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.join(File.dirname(__FILE__), 'test_base_geocoder')
|
3
|
+
|
4
|
+
class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
5
|
+
|
6
|
+
IP_FAILURE=<<-EOF
|
7
|
+
Country: (Private Address) (XX)
|
8
|
+
City: (Private Address)
|
9
|
+
Latitude:
|
10
|
+
Longitude:
|
11
|
+
EOF
|
12
|
+
|
13
|
+
IP_SUCCESS=<<-EOF
|
14
|
+
Country: UNITED STATES (US)
|
15
|
+
City: Sugar Grove, IL
|
16
|
+
Latitude: 41.7696
|
17
|
+
Longitude: -88.4588
|
18
|
+
EOF
|
19
|
+
|
20
|
+
IP_UNICODED=<<-EOF
|
21
|
+
Country: SWEDEN (SE)
|
22
|
+
City: Borås
|
23
|
+
Latitude: 57.7167
|
24
|
+
Longitude: 12.9167
|
25
|
+
EOF
|
26
|
+
|
27
|
+
def setup
|
28
|
+
super
|
29
|
+
@success.provider = "hostip"
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_successful_lookup
|
33
|
+
success = MockSuccess.new
|
34
|
+
success.expects(:body).returns(IP_SUCCESS)
|
35
|
+
url = 'http://api.hostip.info/get_html.php?ip=12.215.42.19&position=true'
|
36
|
+
GeoKit::Geocoders::IpGeocoder.expects(:call_geocoder_service).with(url).returns(success)
|
37
|
+
location = GeoKit::Geocoders::IpGeocoder.geocode('12.215.42.19')
|
38
|
+
assert_not_nil location
|
39
|
+
assert_equal 41.7696, location.lat
|
40
|
+
assert_equal(-88.4588, location.lng)
|
41
|
+
assert_equal "Sugar Grove", location.city
|
42
|
+
assert_equal "IL", location.state
|
43
|
+
assert_equal "US", location.country_code
|
44
|
+
assert_equal "hostip", location.provider
|
45
|
+
assert location.success?
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_unicoded_lookup
|
49
|
+
success = MockSuccess.new
|
50
|
+
success.expects(:body).returns(IP_UNICODED)
|
51
|
+
url = 'http://api.hostip.info/get_html.php?ip=12.215.42.19&position=true'
|
52
|
+
GeoKit::Geocoders::IpGeocoder.expects(:call_geocoder_service).with(url).returns(success)
|
53
|
+
location = GeoKit::Geocoders::IpGeocoder.geocode('12.215.42.19')
|
54
|
+
assert_not_nil location
|
55
|
+
assert_equal 57.7167, location.lat
|
56
|
+
assert_equal 12.9167, location.lng
|
57
|
+
assert_equal "Bor\303\245s", location.city
|
58
|
+
assert_nil location.state
|
59
|
+
assert_equal "SE", location.country_code
|
60
|
+
assert_equal "hostip", location.provider
|
61
|
+
assert location.success?
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_failed_lookup
|
65
|
+
failure = MockSuccess.new
|
66
|
+
failure.expects(:body).returns(IP_FAILURE)
|
67
|
+
url = 'http://api.hostip.info/get_html.php?ip=10.10.10.10&position=true'
|
68
|
+
GeoKit::Geocoders::IpGeocoder.expects(:call_geocoder_service).with(url).returns(failure)
|
69
|
+
location = GeoKit::Geocoders::IpGeocoder.geocode("10.10.10.10")
|
70
|
+
assert_not_nil location
|
71
|
+
assert !location.success?
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_invalid_ip
|
75
|
+
location = GeoKit::Geocoders::IpGeocoder.geocode("blah")
|
76
|
+
assert_not_nil location
|
77
|
+
assert !location.success?
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_service_unavailable
|
81
|
+
failure = MockFailure.new
|
82
|
+
url = 'http://api.hostip.info/get_html.php?ip=10.10.10.10&position=true'
|
83
|
+
GeoKit::Geocoders::IpGeocoder.expects(:call_geocoder_service).with(url).returns(failure)
|
84
|
+
location = GeoKit::Geocoders::IpGeocoder.geocode("10.10.10.10")
|
85
|
+
assert_not_nil location
|
86
|
+
assert !location.success?
|
87
|
+
end
|
88
|
+
end
|
data/test/test_multi_geocoder.rb
CHANGED
@@ -41,4 +41,14 @@ class MultiGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
41
41
|
Geokit::Geocoders.provider_order = temp
|
42
42
|
end
|
43
43
|
|
44
|
+
def test_blank_address
|
45
|
+
t1, t2 = Geokit::Geocoders.provider_order, Geokit::Geocoders.ip_provider_order # will need to reset after
|
46
|
+
Geokit::Geocoders.provider_order = [:google]
|
47
|
+
Geokit::Geocoders.ip_provider_order = [:geo_plugin]
|
48
|
+
Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with("").returns(@failure)
|
49
|
+
Geokit::Geocoders::GeoPluginGeocoder.expects(:geocode).never
|
50
|
+
assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode("")
|
51
|
+
Geokit::Geocoders.provider_order, Geokit::Geocoders.ip_provider_order = t1, t2 # reset to orig values
|
52
|
+
end
|
53
|
+
|
44
54
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_base_geocoder')
|
2
|
+
|
3
|
+
Geokit::Geocoders::ip_provider_order=[:geo_plugin,:ip]
|
4
|
+
|
5
|
+
class MultiIpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@ip_address = '10.10.10.10'
|
9
|
+
@success = Geokit::GeoLoc.new({:city=>"SAN FRANCISCO", :state=>"CA", :country_code=>"US", :lat=>37.7742, :lng=>-122.417068})
|
10
|
+
@success.success = true
|
11
|
+
@failure = Geokit::GeoLoc.new
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_successful_first
|
15
|
+
Geokit::Geocoders::GeoPluginGeocoder.expects(:geocode).with(@ip_address).returns(@success)
|
16
|
+
assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@ip_address)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_failover
|
20
|
+
Geokit::Geocoders::GeoPluginGeocoder.expects(:geocode).with(@ip_address).returns(@failure)
|
21
|
+
Geokit::Geocoders::IpGeocoder.expects(:geocode).with(@ip_address).returns(@success)
|
22
|
+
assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@ip_address)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_failure
|
26
|
+
Geokit::Geocoders::GeoPluginGeocoder.expects(:geocode).with(@ip_address).returns(@failure)
|
27
|
+
Geokit::Geocoders::IpGeocoder.expects(:geocode).with(@ip_address).returns(@failure)
|
28
|
+
assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(@ip_address)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_invalid_provider
|
32
|
+
temp = Geokit::Geocoders::ip_provider_order
|
33
|
+
Geokit::Geocoders.ip_provider_order = [:bogus]
|
34
|
+
assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(@ip_address)
|
35
|
+
Geokit::Geocoders.ip_provider_order = temp
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: andre-geokit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andre Lewis and Bill Eisenhauer
|
@@ -71,8 +71,13 @@ test_files:
|
|
71
71
|
- test/test_bounds.rb
|
72
72
|
- test/test_ca_geocoder.rb
|
73
73
|
- test/test_geoloc.rb
|
74
|
+
- test/test_geoplugin_geocoder.rb
|
74
75
|
- test/test_google_geocoder.rb
|
76
|
+
- test/test_google_reverse_geocoder.rb
|
77
|
+
- test/test_inflector.rb
|
78
|
+
- test/test_ipgeocoder.rb
|
75
79
|
- test/test_latlng.rb
|
76
80
|
- test/test_multi_geocoder.rb
|
81
|
+
- test/test_multi_ip_geocoder.rb
|
77
82
|
- test/test_us_geocoder.rb
|
78
83
|
- test/test_yahoo_geocoder.rb
|