geokit 1.8.5 → 1.9.0
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.
- checksums.yaml +7 -0
- data/.travis.yml +0 -1
- data/CHANGELOG.md +7 -0
- data/README.markdown +31 -14
- data/fixtures/vcr_cassettes/geonames_geocode.yml +1 -1
- data/fixtures/vcr_cassettes/geonames_geocode_premium.yml +42 -0
- data/fixtures/vcr_cassettes/google_country_code_biased_result_orly.yml +160 -0
- data/fixtures/vcr_cassettes/google_country_code_biased_result_toledo.yml +111 -0
- data/fixtures/vcr_cassettes/google_result_toledo_default_bias.yml +275 -0
- data/fixtures/vcr_cassettes/google_sublocality.yml +126 -0
- data/fixtures/vcr_cassettes/mapbox_forward_geocode.yml +59 -0
- data/fixtures/vcr_cassettes/mapbox_reverse_geocode.yml +63 -0
- data/fixtures/vcr_cassettes/opencage_city.yml +51 -0
- data/fixtures/vcr_cassettes/opencage_full.yml +65 -0
- data/fixtures/vcr_cassettes/opencage_language_response_es.yml +66 -0
- data/fixtures/vcr_cassettes/opencage_reverse_madrid.yml +51 -0
- data/fixtures/vcr_cassettes/opencage_reverse_prilep.yml +53 -0
- data/geokit.gemspec +5 -3
- data/lib/geokit/bounds.rb +40 -31
- data/lib/geokit/core_ext.rb +1 -1
- data/lib/geokit/geo_loc.rb +63 -41
- data/lib/geokit/geocoders.rb +13 -13
- data/lib/geokit/geocoders/bing.rb +9 -9
- data/lib/geokit/geocoders/ca_geocoder.rb +29 -29
- data/lib/geokit/geocoders/fcc.rb +4 -4
- data/lib/geokit/geocoders/free_geo_ip.rb +6 -7
- data/lib/geokit/geocoders/geo_plugin.rb +5 -6
- data/lib/geokit/geocoders/geocodio.rb +2 -2
- data/lib/geokit/geocoders/geonames.rb +18 -12
- data/lib/geokit/geocoders/google.rb +31 -30
- data/lib/geokit/geocoders/ip.rb +3 -4
- data/lib/geokit/geocoders/mapbox.rb +94 -0
- data/lib/geokit/geocoders/mapquest.rb +5 -5
- data/lib/geokit/geocoders/opencage.rb +93 -0
- data/lib/geokit/geocoders/openstreetmap.rb +9 -6
- data/lib/geokit/geocoders/ripe.rb +3 -3
- data/lib/geokit/geocoders/us_geocoder.rb +10 -9
- data/lib/geokit/geocoders/yahoo.rb +33 -34
- data/lib/geokit/geocoders/yandex.rb +17 -17
- data/lib/geokit/inflectors.rb +4 -10
- data/lib/geokit/lat_lng.rb +50 -26
- data/lib/geokit/mappable.rb +83 -83
- data/lib/geokit/multi_geocoder.rb +25 -20
- data/lib/geokit/net_adapter/net_http.rb +7 -4
- data/lib/geokit/polygon.rb +36 -4
- data/lib/geokit/version.rb +1 -1
- data/test/helper.rb +15 -13
- data/test/test_base_geocoder.rb +6 -7
- data/test/test_bing_geocoder.rb +20 -21
- data/test/test_bounds.rb +26 -28
- data/test/test_ca_geocoder.rb +9 -10
- data/test/test_fcc_geocoder.rb +1 -1
- data/test/test_free_geo_ip_geocoder.rb +1 -1
- data/test/test_geo_plugin_geocoder.rb +9 -9
- data/test/test_geoloc.rb +7 -6
- data/test/test_geonames_geocoder.rb +28 -6
- data/test/test_google_geocoder.rb +210 -176
- data/test/test_inflector.rb +0 -1
- data/test/test_ipgeocoder.rb +17 -18
- data/test/test_latlng.rb +105 -85
- data/test/test_map_quest.rb +18 -21
- data/test/test_mapbox_geocoder.rb +31 -0
- data/test/test_mappable.rb +46 -0
- data/test/test_maxmind_geocoder.rb +1 -3
- data/test/test_multi_geocoder.rb +8 -9
- data/test/test_multi_ip_geocoder.rb +3 -5
- data/test/test_net_adapter.rb +4 -4
- data/test/test_opencage_geocoder.rb +108 -0
- data/test/test_openstreetmap_geocoder.rb +62 -44
- data/test/{test_polygon_contains.rb → test_polygon.rb} +30 -20
- data/test/test_ripe_geocoder.rb +2 -0
- data/test/test_us_geocoder.rb +7 -8
- data/test/test_yahoo_geocoder.rb +20 -21
- data/test/test_yandex_geocoder.rb +34 -35
- metadata +79 -56
- data/fixtures/vcr_cassettes/google_country_code_biased_result.yml +0 -401
data/test/test_inflector.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
require File.join(File.dirname(__FILE__), 'helper')
|
3
3
|
|
4
4
|
class InflectorTest < Test::Unit::TestCase #:nodoc: all
|
5
|
-
|
6
5
|
def test_titleize
|
7
6
|
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('Sugar Grove')
|
8
7
|
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('Sugar grove')
|
data/test/test_ipgeocoder.rb
CHANGED
@@ -2,29 +2,28 @@
|
|
2
2
|
require File.join(File.dirname(__FILE__), 'helper')
|
3
3
|
|
4
4
|
class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
5
|
-
|
6
|
-
IP_FAILURE=<<-EOF
|
5
|
+
IP_FAILURE = <<-EOF
|
7
6
|
Country: SWITZERLAND (CH)
|
8
7
|
City: (Unknown City)
|
9
8
|
Latitude:
|
10
9
|
Longitude:
|
11
10
|
EOF
|
12
11
|
|
13
|
-
IP_SUCCESS
|
12
|
+
IP_SUCCESS = <<-EOF
|
14
13
|
Country: UNITED STATES (US)
|
15
14
|
City: Sugar Grove, IL
|
16
15
|
Latitude: 41.7696
|
17
16
|
Longitude: -88.4588
|
18
17
|
EOF
|
19
18
|
|
20
|
-
IP_LATIN
|
19
|
+
IP_LATIN = <<-EOF
|
21
20
|
Country: BRAZIL (BR)
|
22
21
|
City: S\xE3o Jos\xE9 do Rio Pr\xEAto\n
|
23
22
|
Latitude: -20.8
|
24
23
|
Longitude: -49.3833
|
25
24
|
EOF
|
26
25
|
|
27
|
-
IP_UNICODED
|
26
|
+
IP_UNICODED = <<-EOF
|
28
27
|
Country: SWEDEN (SE)
|
29
28
|
City: Borås
|
30
29
|
Latitude: 57.7167
|
@@ -45,7 +44,7 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
45
44
|
|
46
45
|
def setup
|
47
46
|
super
|
48
|
-
@success.provider =
|
47
|
+
@success.provider = 'ip'
|
49
48
|
end
|
50
49
|
|
51
50
|
def test_successful_lookup
|
@@ -57,10 +56,10 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
57
56
|
assert_not_nil location
|
58
57
|
assert_equal 41.7696, location.lat
|
59
58
|
assert_equal(-88.4588, location.lng)
|
60
|
-
assert_equal
|
61
|
-
assert_equal
|
62
|
-
assert_equal
|
63
|
-
assert_equal
|
59
|
+
assert_equal 'Sugar Grove', location.city
|
60
|
+
assert_equal 'IL', location.state
|
61
|
+
assert_equal 'US', location.country_code
|
62
|
+
assert_equal 'ip', location.provider
|
64
63
|
assert location.success?
|
65
64
|
end
|
66
65
|
|
@@ -75,8 +74,8 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
75
74
|
assert_equal 12.9167, location.lng
|
76
75
|
assert_equal "Bor\303\245s", location.city
|
77
76
|
assert_nil location.state
|
78
|
-
assert_equal
|
79
|
-
assert_equal
|
77
|
+
assert_equal 'SE', location.country_code
|
78
|
+
assert_equal 'ip', location.provider
|
80
79
|
assert location.success?
|
81
80
|
end
|
82
81
|
|
@@ -90,10 +89,10 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
90
89
|
assert_not_nil location
|
91
90
|
assert_equal -20.8, location.lat
|
92
91
|
assert_equal -49.3833, location.lng
|
93
|
-
assert_equal
|
92
|
+
assert_equal 'São José Do Rio Prêto', location.city
|
94
93
|
assert_nil location.state
|
95
|
-
assert_equal
|
96
|
-
assert_equal
|
94
|
+
assert_equal 'BR', location.country_code
|
95
|
+
assert_equal 'ip', location.provider
|
97
96
|
assert location.success?
|
98
97
|
end
|
99
98
|
|
@@ -102,7 +101,7 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
102
101
|
failure.expects(:body).returns(IP_FAILURE)
|
103
102
|
url = 'http://api.hostip.info/get_html.php?ip=128.178.0.0&position=true'
|
104
103
|
Geokit::Geocoders::IpGeocoder.expects(:call_geocoder_service).with(url).returns(failure)
|
105
|
-
location = Geokit::Geocoders::IpGeocoder.geocode(
|
104
|
+
location = Geokit::Geocoders::IpGeocoder.geocode('128.178.0.0')
|
106
105
|
assert_not_nil location
|
107
106
|
assert !location.success?
|
108
107
|
end
|
@@ -118,7 +117,7 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
118
117
|
|
119
118
|
def test_invalid_ip
|
120
119
|
Geokit::Geocoders::IpGeocoder.expects(:call_geocoder_service).never
|
121
|
-
location = Geokit::Geocoders::IpGeocoder.geocode(
|
120
|
+
location = Geokit::Geocoders::IpGeocoder.geocode('blah')
|
122
121
|
assert_not_nil location
|
123
122
|
assert !location.success?
|
124
123
|
end
|
@@ -127,7 +126,7 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
127
126
|
failure = MockFailure.new
|
128
127
|
url = 'http://api.hostip.info/get_html.php?ip=12.215.42.19&position=true'
|
129
128
|
Geokit::Geocoders::IpGeocoder.expects(:call_geocoder_service).with(url).returns(failure)
|
130
|
-
location = Geokit::Geocoders::IpGeocoder.geocode(
|
129
|
+
location = Geokit::Geocoders::IpGeocoder.geocode('12.215.42.19')
|
131
130
|
assert_not_nil location
|
132
131
|
assert !location.success?
|
133
132
|
end
|
data/test/test_latlng.rb
CHANGED
@@ -1,65 +1,80 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
3
|
class LatLngTest < Test::Unit::TestCase #:nodoc: all
|
4
|
-
|
5
4
|
def setup
|
6
|
-
@loc_a = Geokit::LatLng.new(32.918593
|
7
|
-
@loc_e = Geokit::LatLng.new(32.969527
|
5
|
+
@loc_a = Geokit::LatLng.new(32.918593, -96.958444)
|
6
|
+
@loc_e = Geokit::LatLng.new(32.969527, -96.990159)
|
8
7
|
@point = Geokit::LatLng.new(@loc_a.lat, @loc_a.lng)
|
9
8
|
end
|
10
9
|
|
11
10
|
def valid_reverse_geocoding_result
|
12
11
|
location = Geokit::GeoLoc.new({
|
13
|
-
:
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
12
|
+
city: 'Essen',
|
13
|
+
country_code: 'DE',
|
14
|
+
lat: 51.4578329,
|
15
|
+
lng: 7.0166848,
|
16
|
+
provider: 'google',
|
17
|
+
state: 'Nordrhein-Westfalen',
|
18
|
+
street_address: 'Porscheplatz 1',
|
19
|
+
zip: '45127'
|
21
20
|
})
|
22
21
|
|
23
|
-
location.full_address =
|
22
|
+
location.full_address = 'Porscheplatz 1, 45127 Essen, Deutschland'
|
24
23
|
location.precision = 'address'
|
25
24
|
location.provider = 'google'
|
26
25
|
location.success = true
|
27
26
|
location
|
28
27
|
end
|
29
28
|
|
29
|
+
def test_existance_of_latitude_alias
|
30
|
+
assert_respond_to(@loc_a, :latitude)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_existance_of_longitude_alias
|
34
|
+
assert_respond_to(@loc_a, :longitude)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_that_lat_and_latitude_are_same_object
|
38
|
+
assert_same(@loc_a.lat, @loc_a.latitude)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_that_lng_and_longitude_are_same_object
|
42
|
+
assert_same(@loc_a.lng, @loc_a.longitude)
|
43
|
+
end
|
44
|
+
|
30
45
|
def test_distance_between_same_using_defaults
|
31
46
|
assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a)
|
32
47
|
assert_equal 0, @loc_a.distance_to(@loc_a)
|
33
48
|
end
|
34
49
|
|
35
50
|
def test_distance_between_same_with_miles_and_flat
|
36
|
-
assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :
|
37
|
-
assert_equal 0, @loc_a.distance_to(@loc_a, :
|
51
|
+
assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, units: :miles, formula: :flat)
|
52
|
+
assert_equal 0, @loc_a.distance_to(@loc_a, units: :miles, formula: :flat)
|
38
53
|
end
|
39
54
|
|
40
55
|
def test_distance_between_same_with_kms_and_flat
|
41
|
-
assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :
|
42
|
-
assert_equal 0, @loc_a.distance_to(@loc_a, :
|
56
|
+
assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, units: :kms, formula: :flat)
|
57
|
+
assert_equal 0, @loc_a.distance_to(@loc_a, units: :kms, formula: :flat)
|
43
58
|
end
|
44
59
|
|
45
60
|
def test_distance_between_same_with_nms_and_flat
|
46
|
-
assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :
|
47
|
-
assert_equal 0, @loc_a.distance_to(@loc_a, :
|
61
|
+
assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, units: :nms, formula: :flat)
|
62
|
+
assert_equal 0, @loc_a.distance_to(@loc_a, units: :nms, formula: :flat)
|
48
63
|
end
|
49
64
|
|
50
65
|
def test_distance_between_same_with_miles_and_sphere
|
51
|
-
assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :
|
52
|
-
assert_equal 0, @loc_a.distance_to(@loc_a, :
|
66
|
+
assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, units: :miles, formula: :sphere)
|
67
|
+
assert_equal 0, @loc_a.distance_to(@loc_a, units: :miles, formula: :sphere)
|
53
68
|
end
|
54
69
|
|
55
70
|
def test_distance_between_same_with_kms_and_sphere
|
56
|
-
assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :
|
57
|
-
assert_equal 0, @loc_a.distance_to(@loc_a, :
|
71
|
+
assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, units: :kms, formula: :sphere)
|
72
|
+
assert_equal 0, @loc_a.distance_to(@loc_a, units: :kms, formula: :sphere)
|
58
73
|
end
|
59
74
|
|
60
75
|
def test_distance_between_same_with_nms_and_sphere
|
61
|
-
assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, :
|
62
|
-
assert_equal 0, @loc_a.distance_to(@loc_a, :
|
76
|
+
assert_equal 0, Geokit::LatLng.distance_between(@loc_a, @loc_a, units: :nms, formula: :sphere)
|
77
|
+
assert_equal 0, @loc_a.distance_to(@loc_a, units: :nms, formula: :sphere)
|
63
78
|
end
|
64
79
|
|
65
80
|
def test_distance_between_diff_using_defaults
|
@@ -68,46 +83,51 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
|
|
68
83
|
end
|
69
84
|
|
70
85
|
def test_distance_between_diff_with_miles_and_flat
|
71
|
-
assert_in_delta 3.97, Geokit::LatLng.distance_between(@loc_a, @loc_e, :
|
72
|
-
assert_in_delta 3.97, @loc_a.distance_to(@loc_e, :
|
86
|
+
assert_in_delta 3.97, Geokit::LatLng.distance_between(@loc_a, @loc_e, units: :miles, formula: :flat), 0.2
|
87
|
+
assert_in_delta 3.97, @loc_a.distance_to(@loc_e, units: :miles, formula: :flat), 0.2
|
73
88
|
end
|
74
89
|
|
75
90
|
def test_distance_between_diff_with_kms_and_flat
|
76
|
-
assert_in_delta 6.39, Geokit::LatLng.distance_between(@loc_a, @loc_e, :
|
77
|
-
assert_in_delta 6.39, @loc_a.distance_to(@loc_e, :
|
91
|
+
assert_in_delta 6.39, Geokit::LatLng.distance_between(@loc_a, @loc_e, units: :kms, formula: :flat), 0.4
|
92
|
+
assert_in_delta 6.39, @loc_a.distance_to(@loc_e, units: :kms, formula: :flat), 0.4
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_distance_between_diff_with_meters_and_flat
|
96
|
+
assert_in_delta 6390, Geokit::LatLng.distance_between(@loc_a, @loc_e, units: :meters, formula: :flat), 2
|
97
|
+
assert_in_delta 6390, @loc_a.distance_to(@loc_e, units: :meters, formula: :flat), 2
|
78
98
|
end
|
79
99
|
|
80
100
|
def test_distance_between_diff_with_nms_and_flat
|
81
|
-
assert_in_delta 3.334, Geokit::LatLng.distance_between(@loc_a, @loc_e, :
|
82
|
-
assert_in_delta 3.334, @loc_a.distance_to(@loc_e, :
|
101
|
+
assert_in_delta 3.334, Geokit::LatLng.distance_between(@loc_a, @loc_e, units: :nms, formula: :flat), 0.4
|
102
|
+
assert_in_delta 3.334, @loc_a.distance_to(@loc_e, units: :nms, formula: :flat), 0.4
|
83
103
|
end
|
84
104
|
|
85
105
|
def test_distance_between_diff_with_miles_and_sphere
|
86
|
-
assert_in_delta 3.97, Geokit::LatLng.distance_between(@loc_a, @loc_e, :
|
87
|
-
assert_in_delta 3.97, @loc_a.distance_to(@loc_e, :
|
106
|
+
assert_in_delta 3.97, Geokit::LatLng.distance_between(@loc_a, @loc_e, units: :miles, formula: :sphere), 0.01
|
107
|
+
assert_in_delta 3.97, @loc_a.distance_to(@loc_e, units: :miles, formula: :sphere), 0.01
|
88
108
|
end
|
89
109
|
|
90
110
|
def test_distance_between_diff_with_kms_and_sphere
|
91
|
-
assert_in_delta 6.39, Geokit::LatLng.distance_between(@loc_a, @loc_e, :
|
92
|
-
assert_in_delta 6.39, @loc_a.distance_to(@loc_e, :
|
111
|
+
assert_in_delta 6.39, Geokit::LatLng.distance_between(@loc_a, @loc_e, units: :kms, formula: :sphere), 0.01
|
112
|
+
assert_in_delta 6.39, @loc_a.distance_to(@loc_e, units: :kms, formula: :sphere), 0.01
|
93
113
|
end
|
94
114
|
|
95
115
|
def test_distance_between_diff_with_nms_and_sphere
|
96
|
-
assert_in_delta 3.454, Geokit::LatLng.distance_between(@loc_a, @loc_e, :
|
97
|
-
assert_in_delta 3.454, @loc_a.distance_to(@loc_e, :
|
116
|
+
assert_in_delta 3.454, Geokit::LatLng.distance_between(@loc_a, @loc_e, units: :nms, formula: :sphere), 0.01
|
117
|
+
assert_in_delta 3.454, @loc_a.distance_to(@loc_e, units: :nms, formula: :sphere), 0.01
|
98
118
|
end
|
99
119
|
|
100
120
|
def test_manually_mixed_in
|
101
121
|
assert_equal 0, Geokit::LatLng.distance_between(@point, @point)
|
102
122
|
assert_equal 0, @point.distance_to(@point)
|
103
123
|
assert_equal 0, @point.distance_to(@loc_a)
|
104
|
-
assert_in_delta 3.97, @point.distance_to(@loc_e, :
|
105
|
-
assert_in_delta 6.39, @point.distance_to(@loc_e, :
|
106
|
-
assert_in_delta 3.334, @point.distance_to(@loc_e, :
|
124
|
+
assert_in_delta 3.97, @point.distance_to(@loc_e, units: :miles, formula: :flat), 0.2
|
125
|
+
assert_in_delta 6.39, @point.distance_to(@loc_e, units: :kms, formula: :flat), 0.4
|
126
|
+
assert_in_delta 3.334, @point.distance_to(@loc_e, units: :nms, formula: :flat), 0.4
|
107
127
|
end
|
108
128
|
|
109
129
|
def test_heading_between
|
110
|
-
assert_in_delta 332, Geokit::LatLng.heading_between(@loc_a
|
130
|
+
assert_in_delta 332, Geokit::LatLng.heading_between(@loc_a, @loc_e), 0.5
|
111
131
|
end
|
112
132
|
|
113
133
|
def test_heading_to
|
@@ -115,65 +135,65 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
|
|
115
135
|
end
|
116
136
|
|
117
137
|
def test_class_endpoint
|
118
|
-
endpoint=Geokit::LatLng.endpoint(@loc_a, 332, 3.97)
|
138
|
+
endpoint = Geokit::LatLng.endpoint(@loc_a, 332, 3.97)
|
119
139
|
assert_in_delta @loc_e.lat, endpoint.lat, 0.0005
|
120
140
|
assert_in_delta @loc_e.lng, endpoint.lng, 0.0005
|
121
141
|
end
|
122
142
|
|
123
143
|
def test_instance_endpoint
|
124
|
-
endpoint
|
144
|
+
endpoint = @loc_a.endpoint(332, 3.97)
|
125
145
|
assert_in_delta @loc_e.lat, endpoint.lat, 0.0005
|
126
146
|
assert_in_delta @loc_e.lng, endpoint.lng, 0.0005
|
127
147
|
end
|
128
148
|
|
129
149
|
def test_midpoint
|
130
|
-
midpoint
|
150
|
+
midpoint = @loc_a.midpoint_to(@loc_e)
|
131
151
|
assert_in_delta 32.944061, midpoint.lat, 0.0005
|
132
152
|
assert_in_delta(-96.974296, midpoint.lng, 0.0005)
|
133
153
|
end
|
134
154
|
|
135
155
|
def test_normalize
|
136
|
-
lat=37.7690
|
137
|
-
lng
|
138
|
-
res=Geokit::LatLng.normalize(lat,lng)
|
139
|
-
assert_equal res,Geokit::LatLng.new(lat,lng)
|
140
|
-
res=Geokit::LatLng.normalize("#{lat}, #{lng}")
|
141
|
-
assert_equal res,Geokit::LatLng.new(lat,lng)
|
142
|
-
res=Geokit::LatLng.normalize("#{lat} #{lng}")
|
143
|
-
assert_equal res,Geokit::LatLng.new(lat,lng)
|
144
|
-
res=Geokit::LatLng.normalize("#{lat.to_i} #{lng.to_i}")
|
145
|
-
assert_equal res,Geokit::LatLng.new(lat.to_i,lng.to_i)
|
146
|
-
res=Geokit::LatLng.normalize([lat,lng])
|
147
|
-
assert_equal res,Geokit::LatLng.new(lat,lng)
|
156
|
+
lat = 37.7690
|
157
|
+
lng = -122.443
|
158
|
+
res = Geokit::LatLng.normalize(lat, lng)
|
159
|
+
assert_equal res, Geokit::LatLng.new(lat, lng)
|
160
|
+
res = Geokit::LatLng.normalize("#{lat}, #{lng}")
|
161
|
+
assert_equal res, Geokit::LatLng.new(lat, lng)
|
162
|
+
res = Geokit::LatLng.normalize("#{lat} #{lng}")
|
163
|
+
assert_equal res, Geokit::LatLng.new(lat, lng)
|
164
|
+
res = Geokit::LatLng.normalize("#{lat.to_i} #{lng.to_i}")
|
165
|
+
assert_equal res, Geokit::LatLng.new(lat.to_i, lng.to_i)
|
166
|
+
res = Geokit::LatLng.normalize([lat, lng])
|
167
|
+
assert_equal res, Geokit::LatLng.new(lat, lng)
|
148
168
|
end
|
149
169
|
|
150
170
|
def test_hash
|
151
|
-
lat=37.7690
|
152
|
-
lng
|
153
|
-
first = Geokit::LatLng.new(lat,lng)
|
154
|
-
second = Geokit::LatLng.new(lat,lng)
|
171
|
+
lat = 37.7690
|
172
|
+
lng = -122.443
|
173
|
+
first = Geokit::LatLng.new(lat, lng)
|
174
|
+
second = Geokit::LatLng.new(lat, lng)
|
155
175
|
assert_equal first.hash, second.hash
|
156
176
|
end
|
157
177
|
|
158
178
|
def test_eql?
|
159
|
-
lat=37.7690
|
160
|
-
lng
|
161
|
-
first = Geokit::LatLng.new(lat,lng)
|
162
|
-
second = Geokit::LatLng.new(lat,lng)
|
179
|
+
lat = 37.7690
|
180
|
+
lng = -122.443
|
181
|
+
first = Geokit::LatLng.new(lat, lng)
|
182
|
+
second = Geokit::LatLng.new(lat, lng)
|
163
183
|
assert first.eql?(second)
|
164
184
|
assert second.eql?(first)
|
165
185
|
end
|
166
186
|
|
167
187
|
def test_valid_when_lat_and_lng_defined
|
168
|
-
assert Geokit::LatLng.new(37.7690
|
188
|
+
assert Geokit::LatLng.new(37.7690, -122.443).valid?
|
169
189
|
end
|
170
190
|
|
171
191
|
def test_not_valid_when_lat_is_nil
|
172
|
-
assert ! Geokit::LatLng.new(nil
|
192
|
+
assert ! Geokit::LatLng.new(nil, -122.443).valid?
|
173
193
|
end
|
174
194
|
|
175
195
|
def test_not_valid_when_lng_is_nil
|
176
|
-
assert ! Geokit::LatLng.new(37.7690,nil).valid?
|
196
|
+
assert ! Geokit::LatLng.new(37.7690, nil).valid?
|
177
197
|
end
|
178
198
|
|
179
199
|
def test_reverse_geocode
|
@@ -181,40 +201,40 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
|
|
181
201
|
Geokit::Geocoders::MultiGeocoder.expects(:reverse_geocode).with(point).returns(valid_reverse_geocoding_result)
|
182
202
|
res = point.reverse_geocode
|
183
203
|
|
184
|
-
assert_equal
|
185
|
-
assert_equal
|
186
|
-
assert_equal
|
187
|
-
assert_equal
|
204
|
+
assert_equal 'Nordrhein-Westfalen', res.state
|
205
|
+
assert_equal 'Essen', res.city
|
206
|
+
assert_equal '45127', res.zip
|
207
|
+
assert_equal '51.4578329,7.0166848', res.ll # slightly dif from yahoo
|
188
208
|
assert res.is_us? == false
|
189
|
-
assert_equal
|
209
|
+
assert_equal 'Porscheplatz 1, 45127 Essen, Deutschland', res.full_address # slightly different from yahoo
|
190
210
|
end
|
191
211
|
|
192
212
|
def test_reverse_geocoding_using_specific_geocoder
|
193
213
|
point = Geokit::LatLng.new(51.4578329, 7.0166848)
|
194
214
|
Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(point).returns(valid_reverse_geocoding_result)
|
195
|
-
res = point.reverse_geocode(:
|
215
|
+
res = point.reverse_geocode(using: Geokit::Geocoders::GoogleGeocoder)
|
196
216
|
|
197
|
-
assert_equal
|
198
|
-
assert_equal
|
199
|
-
assert_equal
|
200
|
-
assert_equal
|
217
|
+
assert_equal 'Nordrhein-Westfalen', res.state
|
218
|
+
assert_equal 'Essen', res.city
|
219
|
+
assert_equal '45127', res.zip
|
220
|
+
assert_equal '51.4578329,7.0166848', res.ll # slightly dif from yahoo
|
201
221
|
assert res.is_us? == false
|
202
|
-
assert_equal
|
203
|
-
assert_equal
|
222
|
+
assert_equal 'Porscheplatz 1, 45127 Essen, Deutschland', res.full_address # slightly different from yahoo
|
223
|
+
assert_equal 'google', res.provider
|
204
224
|
end
|
205
225
|
|
206
226
|
def test_reverse_geocoding_using_specific_geocoder_short_syntax
|
207
227
|
point = Geokit::LatLng.new(51.4578329, 7.0166848)
|
208
228
|
Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(point).returns(valid_reverse_geocoding_result)
|
209
|
-
res = point.reverse_geocode(:
|
229
|
+
res = point.reverse_geocode(using: :google)
|
210
230
|
|
211
|
-
assert_equal
|
212
|
-
assert_equal
|
213
|
-
assert_equal
|
214
|
-
assert_equal
|
231
|
+
assert_equal 'Nordrhein-Westfalen', res.state
|
232
|
+
assert_equal 'Essen', res.city
|
233
|
+
assert_equal '45127', res.zip
|
234
|
+
assert_equal '51.4578329,7.0166848', res.ll # slightly dif from yahoo
|
215
235
|
assert res.is_us? == false
|
216
|
-
assert_equal
|
217
|
-
assert_equal
|
236
|
+
assert_equal 'Porscheplatz 1, 45127 Essen, Deutschland', res.full_address # slightly different from yahoo
|
237
|
+
assert_equal 'google', res.provider
|
218
238
|
end
|
219
239
|
|
220
240
|
def test_to_dms
|
data/test/test_map_quest.rb
CHANGED
@@ -1,55 +1,52 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'helper')
|
2
2
|
|
3
3
|
class MapQuestGeocoderTest < BaseGeocoderTest #:nodoc: all
|
4
|
-
|
5
4
|
def setup
|
6
5
|
super
|
7
6
|
@full_address = '100 Spear St Apt. 5, San Francisco, CA, 94105-1522, US'
|
8
|
-
@google_full_hash = {:
|
9
|
-
@google_city_hash = {:
|
7
|
+
@google_full_hash = {street_address: '100 Spear St Apt. 5', city: 'San Francisco', state: 'CA', zip: '94105', country_code: 'US'}
|
8
|
+
@google_city_hash = {city: 'San Francisco', state: 'CA'}
|
10
9
|
|
11
10
|
@google_full_loc = Geokit::GeoLoc.new(@google_full_hash)
|
12
11
|
@google_city_loc = Geokit::GeoLoc.new(@google_city_hash)
|
13
12
|
end
|
14
13
|
|
15
|
-
|
16
14
|
def test_map_quest_full_address_with_geo_loc
|
17
15
|
VCR.use_cassette('map_quest_full') do
|
18
|
-
|
19
|
-
Geokit::Geocoders::MapQuestGeocoder.key =key
|
16
|
+
key = 'Fmjtd%7Cluur2d0125%2C2s%3Do5-9a8lhz'
|
17
|
+
Geokit::Geocoders::MapQuestGeocoder.key = key
|
20
18
|
url = "https://www.mapquestapi.com/geocoding/v1/address?key=#{key}&location=100+Spear+St+Apt.+5%2C+San+Francisco%2C+CA%2C+94105%2C+US"
|
21
19
|
TestHelper.expects(:last_url).with(url)
|
22
|
-
res=Geokit::Geocoders::MapQuestGeocoder.geocode(@google_full_loc)
|
23
|
-
assert_equal
|
24
|
-
assert_equal
|
20
|
+
res = Geokit::Geocoders::MapQuestGeocoder.geocode(@google_full_loc)
|
21
|
+
assert_equal 'CA', res.state
|
22
|
+
assert_equal 'San Francisco', res.city
|
25
23
|
assert_array_in_delta [37.7921509, -122.394], res.to_a # slightly dif from yahoo
|
26
24
|
assert res.is_us?
|
27
|
-
assert_equal
|
28
|
-
assert_equal
|
25
|
+
assert_equal '100 Spear St, Apt 5, San Francisco, CA, 94105-1500, US', res.full_address # slightly different from yahoo
|
26
|
+
assert_equal 'map_quest', res.provider
|
29
27
|
end
|
30
28
|
end
|
31
29
|
|
32
|
-
|
33
30
|
def test_reverse_geocode
|
34
31
|
VCR.use_cassette('map_quest_reverse_madrid') do
|
35
|
-
|
36
|
-
madrid.lat, madrid.lng =
|
32
|
+
madrid = Geokit::GeoLoc.new
|
33
|
+
madrid.lat, madrid.lng = '40.4167413', '-3.7032498'
|
37
34
|
key = 'Fmjtd%7Cluur2d0125%2C2s%3Do5-9a8lhz'
|
38
|
-
Geokit::Geocoders::MapQuestGeocoder.key =key
|
35
|
+
Geokit::Geocoders::MapQuestGeocoder.key = key
|
39
36
|
url = "https://www.mapquestapi.com/geocoding/v1/reverse?key=#{key}&location=#{madrid.lat},#{madrid.lng}"
|
40
37
|
TestHelper.expects(:last_url).with(url)
|
41
|
-
res=Geokit::Geocoders::MapQuestGeocoder.do_reverse_geocode(madrid.ll)
|
38
|
+
res = Geokit::Geocoders::MapQuestGeocoder.do_reverse_geocode(madrid.ll)
|
42
39
|
|
43
40
|
assert_equal madrid.lat.to_s.slice(1..5), res.lat.to_s.slice(1..5)
|
44
41
|
assert_equal madrid.lng.to_s.slice(1..5), res.lng.to_s.slice(1..5)
|
45
|
-
assert_equal
|
46
|
-
assert_equal
|
42
|
+
assert_equal 'ES', res.country_code
|
43
|
+
assert_equal 'map_quest', res.provider
|
47
44
|
|
48
|
-
assert_equal
|
49
|
-
assert_equal
|
45
|
+
assert_equal 'Madrid', res.city
|
46
|
+
assert_equal 'Comunidad de Madrid', res.state
|
50
47
|
|
51
48
|
assert_equal nil, res.country
|
52
|
-
assert_equal
|
49
|
+
assert_equal '28014', res.zip
|
53
50
|
assert_equal true, res.success
|
54
51
|
end
|
55
52
|
end
|