geokit 1.6.0 → 1.6.5
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 +7 -21
- data/lib/geokit.rb +1 -2
- data/lib/geokit/geocoders.rb +219 -194
- data/lib/geokit/mappable.rb +98 -89
- data/test/test_base_geocoder.rb +11 -11
- data/test/test_bounds.rb +22 -22
- data/test/test_ca_geocoder.rb +17 -17
- data/test/test_geoloc.rb +15 -15
- data/test/test_geoplugin_geocoder.rb +5 -5
- data/test/test_google_geocoder.rb +30 -30
- data/test/test_google_geocoder3.rb +107 -86
- data/test/test_google_reverse_geocoder.rb +16 -16
- data/test/test_inflector.rb +3 -3
- data/test/test_ipgeocoder.rb +13 -13
- data/test/test_latlng.rb +48 -36
- data/test/test_multi_geocoder.rb +17 -17
- data/test/test_multi_ip_geocoder.rb +5 -5
- data/test/test_us_geocoder.rb +17 -17
- data/test/test_yahoo_geocoder.rb +27 -31
- metadata +29 -38
- data/History.txt +0 -77
- data/Manifest.txt +0 -21
- data/geokit.gemspec +0 -38
@@ -3,65 +3,82 @@ require File.join(File.dirname(__FILE__), 'test_base_geocoder')
|
|
3
3
|
Geokit::Geocoders::google = 'Google'
|
4
4
|
|
5
5
|
class GoogleGeocoder3Test < BaseGeocoderTest #:nodoc: all
|
6
|
-
|
6
|
+
|
7
7
|
GOOGLE3_FULL=%q/
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
8
|
+
{
|
9
|
+
"results" : [
|
10
|
+
{
|
11
|
+
"address_components" : [
|
12
|
+
{
|
13
|
+
"long_name" : "5",
|
14
|
+
"short_name" : "5",
|
15
|
+
"types" : [ "subpremise" ]
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"long_name" : "100",
|
19
|
+
"short_name" : "100",
|
20
|
+
"types" : [ "street_number" ]
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"long_name" : "Spear St",
|
24
|
+
"short_name" : "Spear St",
|
25
|
+
"types" : [ "route" ]
|
26
|
+
},
|
27
|
+
{
|
28
|
+
"long_name" : "South Beach",
|
29
|
+
"short_name" : "South Beach",
|
30
|
+
"types" : [ "neighborhood", "political" ]
|
31
|
+
},
|
32
|
+
{
|
33
|
+
"long_name" : "San Francisco",
|
34
|
+
"short_name" : "SF",
|
35
|
+
"types" : [ "locality", "political" ]
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"long_name" : "San Francisco",
|
39
|
+
"short_name" : "San Francisco",
|
40
|
+
"types" : [ "administrative_area_level_2", "political" ]
|
41
|
+
},
|
42
|
+
{
|
43
|
+
"long_name" : "California",
|
44
|
+
"short_name" : "CA",
|
45
|
+
"types" : [ "administrative_area_level_1", "political" ]
|
46
|
+
},
|
47
|
+
{
|
48
|
+
"long_name" : "United States",
|
49
|
+
"short_name" : "US",
|
50
|
+
"types" : [ "country", "political" ]
|
51
|
+
},
|
52
|
+
{
|
53
|
+
"long_name" : "94105",
|
54
|
+
"short_name" : "94105",
|
55
|
+
"types" : [ "postal_code" ]
|
56
|
+
}
|
57
|
+
],
|
58
|
+
"formatted_address" : "100 Spear St #5, San Francisco, CA 94105, USA",
|
59
|
+
"geometry" : {
|
60
|
+
"location" : {
|
61
|
+
"lat" : 37.79215090,
|
62
|
+
"lng" : -122.3940
|
63
|
+
},
|
64
|
+
"location_type" : "APPROXIMATE",
|
65
|
+
"viewport" : {
|
66
|
+
"northeast" : {
|
67
|
+
"lat" : 37.79349988029150,
|
68
|
+
"lng" : -122.3926510197085
|
69
|
+
},
|
70
|
+
"southwest" : {
|
71
|
+
"lat" : 37.79080191970850,
|
72
|
+
"lng" : -122.3953489802915
|
73
|
+
}
|
74
|
+
}
|
75
|
+
},
|
76
|
+
"partial_match" : true,
|
77
|
+
"types" : [ "subpremise" ]
|
60
78
|
}
|
61
|
-
|
62
|
-
|
63
|
-
}
|
64
|
-
}
|
79
|
+
],
|
80
|
+
"status" : "OK"
|
81
|
+
}
|
65
82
|
/.strip
|
66
83
|
|
67
84
|
GOOGLE3_CITY=%q/
|
@@ -357,12 +374,14 @@ class GoogleGeocoder3Test < BaseGeocoderTest #:nodoc: all
|
|
357
374
|
/
|
358
375
|
def setup
|
359
376
|
super
|
360
|
-
@
|
377
|
+
@full_address = '100 Spear St Apt. 5, San Francisco, CA, 94105-1522, US'
|
378
|
+
@full_address_short_zip = '100 Spear St Apt. 5, San Francisco, CA, 94105, US'
|
379
|
+
@google_full_hash = {:street_address=>"100 Spear St Apt. 5", :city=>"San Francisco", :state=>"CA", :zip=>"94105", :country_code=>"US"}
|
361
380
|
@google_city_hash = {:city=>"San Francisco", :state=>"CA"}
|
362
381
|
|
363
382
|
@google_full_loc = Geokit::GeoLoc.new(@google_full_hash)
|
364
383
|
@google_city_loc = Geokit::GeoLoc.new(@google_city_hash)
|
365
|
-
end
|
384
|
+
end
|
366
385
|
|
367
386
|
def test_google3_full_address
|
368
387
|
response = MockSuccess.new
|
@@ -371,13 +390,13 @@ class GoogleGeocoder3Test < BaseGeocoderTest #:nodoc: all
|
|
371
390
|
Geokit::Geocoders::GoogleGeocoder3.expects(:call_geocoder_service).with(url).returns(response)
|
372
391
|
res=Geokit::Geocoders::GoogleGeocoder3.geocode(@address)
|
373
392
|
assert_equal "CA", res.state
|
374
|
-
assert_equal "San Francisco", res.city
|
393
|
+
assert_equal "San Francisco", res.city
|
375
394
|
assert_equal "37.7921509,-122.394", res.ll # slightly dif from yahoo
|
376
395
|
assert res.is_us?
|
377
|
-
assert_equal "100 Spear St, San Francisco, CA 94105, USA", res.full_address #slightly different from yahoo
|
396
|
+
assert_equal "100 Spear St #5, San Francisco, CA 94105, USA", res.full_address #slightly different from yahoo
|
378
397
|
assert_equal "google3", res.provider
|
379
398
|
end
|
380
|
-
|
399
|
+
|
381
400
|
def test_google3_full_address_with_geo_loc
|
382
401
|
response = MockSuccess.new
|
383
402
|
response.expects(:body).returns(GOOGLE3_FULL)
|
@@ -385,22 +404,24 @@ class GoogleGeocoder3Test < BaseGeocoderTest #:nodoc: all
|
|
385
404
|
Geokit::Geocoders::GoogleGeocoder3.expects(:call_geocoder_service).with(url).returns(response)
|
386
405
|
res=Geokit::Geocoders::GoogleGeocoder3.geocode(@google_full_loc)
|
387
406
|
assert_equal "CA", res.state
|
388
|
-
assert_equal "San Francisco", res.city
|
407
|
+
assert_equal "San Francisco", res.city
|
389
408
|
assert_equal "37.7921509,-122.394", res.ll # slightly dif from yahoo
|
390
409
|
assert res.is_us?
|
391
|
-
assert_equal "100 Spear St, San Francisco, CA 94105, USA", res.full_address #slightly different from yahoo
|
410
|
+
assert_equal "100 Spear St #5, San Francisco, CA 94105, USA", res.full_address #slightly different from yahoo
|
392
411
|
assert_equal "google3", res.provider
|
393
|
-
end
|
394
|
-
|
412
|
+
end
|
413
|
+
|
395
414
|
def test_google3_full_address_accuracy
|
396
415
|
response = MockSuccess.new
|
397
416
|
response.expects(:body).returns(GOOGLE3_FULL)
|
398
417
|
url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@full_address_short_zip)}"
|
399
418
|
Geokit::Geocoders::GoogleGeocoder3.expects(:call_geocoder_service).with(url).returns(response)
|
400
419
|
res=Geokit::Geocoders::GoogleGeocoder3.geocode(@google_full_loc)
|
420
|
+
|
421
|
+
puts res.to_hash.inspect
|
401
422
|
assert_equal 9, res.accuracy
|
402
423
|
end
|
403
|
-
|
424
|
+
|
404
425
|
def test_google3_city
|
405
426
|
response = MockSuccess.new
|
406
427
|
response.expects(:body).returns(GOOGLE3_CITY)
|
@@ -414,8 +435,8 @@ class GoogleGeocoder3Test < BaseGeocoderTest #:nodoc: all
|
|
414
435
|
assert res.is_us?
|
415
436
|
assert_equal "San Francisco, CA, USA", res.full_address
|
416
437
|
assert_equal "google3", res.provider
|
417
|
-
end
|
418
|
-
|
438
|
+
end
|
439
|
+
|
419
440
|
def test_google3_city_accuracy
|
420
441
|
response = MockSuccess.new
|
421
442
|
response.expects(:body).returns(GOOGLE3_CITY)
|
@@ -424,7 +445,7 @@ class GoogleGeocoder3Test < BaseGeocoderTest #:nodoc: all
|
|
424
445
|
res=Geokit::Geocoders::GoogleGeocoder3.geocode(@address)
|
425
446
|
assert_equal 4, res.accuracy
|
426
447
|
end
|
427
|
-
|
448
|
+
|
428
449
|
def test_google3_city_with_geo_loc
|
429
450
|
response = MockSuccess.new
|
430
451
|
response.expects(:body).returns(GOOGLE3_CITY)
|
@@ -438,7 +459,7 @@ class GoogleGeocoder3Test < BaseGeocoderTest #:nodoc: all
|
|
438
459
|
assert_equal "San Francisco, CA, USA", res.full_address
|
439
460
|
assert_nil res.street_address
|
440
461
|
assert_equal "google3", res.provider
|
441
|
-
end
|
462
|
+
end
|
442
463
|
|
443
464
|
def test_google3_suggested_bounds
|
444
465
|
response = MockSuccess.new
|
@@ -446,18 +467,18 @@ class GoogleGeocoder3Test < BaseGeocoderTest #:nodoc: all
|
|
446
467
|
url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@full_address_short_zip)}"
|
447
468
|
Geokit::Geocoders::GoogleGeocoder3.expects(:call_geocoder_service).with(url).returns(response)
|
448
469
|
res = Geokit::Geocoders::GoogleGeocoder3.geocode(@google_full_loc)
|
449
|
-
|
470
|
+
|
450
471
|
assert_instance_of Geokit::Bounds, res.suggested_bounds
|
451
|
-
assert_equal Geokit::Bounds.new(Geokit::LatLng.new(37.
|
472
|
+
assert_equal Geokit::Bounds.new(Geokit::LatLng.new(37.7908019197085, -122.395348980292), Geokit::LatLng.new(37.7934998802915, -122.392651019708)), res.suggested_bounds
|
452
473
|
end
|
453
|
-
|
474
|
+
|
454
475
|
def test_service_unavailable
|
455
476
|
response = MockFailure.new
|
456
477
|
url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@address)}"
|
457
478
|
Geokit::Geocoders::GoogleGeocoder3.expects(:call_geocoder_service).with(url).returns(response)
|
458
479
|
assert !Geokit::Geocoders::GoogleGeocoder3.geocode(@google_city_loc).success
|
459
|
-
end
|
460
|
-
|
480
|
+
end
|
481
|
+
|
461
482
|
def test_multiple_results
|
462
483
|
#Geokit::Geocoders::GoogleGeocoder3.do_geocode('via Sandro Pertini 8, Ossona, MI')
|
463
484
|
response = MockSuccess.new
|
@@ -472,7 +493,7 @@ class GoogleGeocoder3Test < BaseGeocoderTest #:nodoc: all
|
|
472
493
|
assert_equal "Via Sandro Pertini, 8, 20010 Mesero MI, Italy", res.full_address
|
473
494
|
assert_equal "8 Via Sandro Pertini", res.street_address
|
474
495
|
assert_equal "google3", res.provider
|
475
|
-
|
496
|
+
|
476
497
|
assert_equal 2, res.all.size
|
477
498
|
res = res.all[1]
|
478
499
|
assert_equal "Lombardy", res.state
|
@@ -483,7 +504,7 @@ class GoogleGeocoder3Test < BaseGeocoderTest #:nodoc: all
|
|
483
504
|
assert_equal "Via Sandro Pertini", res.street_address
|
484
505
|
assert_equal "google3", res.provider
|
485
506
|
end
|
486
|
-
#
|
507
|
+
#
|
487
508
|
def test_reverse_geocode
|
488
509
|
#Geokit::Geocoders::GoogleGeocoder3.do_reverse_geocode("40.4167413, -3.7032498")
|
489
510
|
madrid = Geokit::GeoLoc.new
|
@@ -494,36 +515,36 @@ class GoogleGeocoder3Test < BaseGeocoderTest #:nodoc: all
|
|
494
515
|
Geokit::Geocoders::GoogleGeocoder3.expects(:call_geocoder_service).with(url).
|
495
516
|
returns(response)
|
496
517
|
res=Geokit::Geocoders::GoogleGeocoder3.do_reverse_geocode(madrid.ll)
|
497
|
-
|
518
|
+
|
498
519
|
assert_equal madrid.lat.to_s.slice(1..5), res.lat.to_s.slice(1..5)
|
499
520
|
assert_equal madrid.lng.to_s.slice(1..5), res.lng.to_s.slice(1..5)
|
500
521
|
assert_equal "ES", res.country_code
|
501
522
|
assert_equal "google3", res.provider
|
502
|
-
|
523
|
+
|
503
524
|
assert_equal "Madrid", res.city
|
504
525
|
assert_equal "Madrid", res.state
|
505
|
-
|
526
|
+
|
506
527
|
assert_equal "Spain", res.country
|
507
528
|
assert_equal "street", res.precision
|
508
529
|
assert_equal true, res.success
|
509
|
-
|
530
|
+
|
510
531
|
assert_equal "Calle de las Carretas, 28013 Madrid, Spain", res.full_address
|
511
532
|
assert_equal "28013", res.zip
|
512
533
|
assert_equal "Calle de las Carretas", res.street_address
|
513
|
-
end
|
534
|
+
end
|
514
535
|
|
515
536
|
def test_country_code_biasing
|
516
537
|
response = MockSuccess.new
|
517
538
|
response.expects(:body).returns(GOOGLE3_COUNTRY_CODE_BIASED_RESULT)
|
518
|
-
|
539
|
+
|
519
540
|
url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=Syracuse®ion=it"
|
520
541
|
Geokit::Geocoders::GoogleGeocoder3.expects(:call_geocoder_service).with(url).returns(response)
|
521
542
|
biased_result = Geokit::Geocoders::GoogleGeocoder3.geocode('Syracuse', :bias => 'it')
|
522
|
-
|
543
|
+
|
523
544
|
assert_equal 'IT', biased_result.country_code
|
524
545
|
assert_equal 'Sicily', biased_result.state
|
525
546
|
end
|
526
|
-
|
547
|
+
|
527
548
|
def test_too_many_queries
|
528
549
|
response = MockSuccess.new
|
529
550
|
response.expects(:body).returns(GOOGLE3_TOO_MANY)
|
@@ -3,19 +3,19 @@ require File.join(File.dirname(__FILE__), 'test_base_geocoder')
|
|
3
3
|
Geokit::Geocoders::google = 'Google'
|
4
4
|
|
5
5
|
class GoogleReverseGeocoderTest < BaseGeocoderTest #:nodoc: all
|
6
|
-
|
7
|
-
GOOGLE_REVERSE_FULL=<<-EOF.strip
|
6
|
+
|
7
|
+
GOOGLE_REVERSE_FULL=<<-EOF.strip
|
8
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
9
|
EOF
|
10
|
-
|
11
|
-
|
10
|
+
|
11
|
+
|
12
12
|
def test_google_full_address
|
13
13
|
response = MockSuccess.new
|
14
14
|
response.expects(:body).returns(GOOGLE_REVERSE_FULL)
|
15
|
-
|
16
|
-
|
15
|
+
|
16
|
+
|
17
17
|
# http://maps.google.com/maps/geo?output=xml&oe=utf-8&ll=51.4578329,7.0166848&key=asdad
|
18
|
-
|
18
|
+
|
19
19
|
# #<Geokit::GeoLoc:0x10ec7ec
|
20
20
|
# @city="Essen",
|
21
21
|
# @country_code="DE",
|
@@ -28,22 +28,22 @@ class GoogleReverseGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
28
28
|
# @street_address="Porscheplatz 1",
|
29
29
|
# @success=true,
|
30
30
|
# @zip="45127">
|
31
|
-
#
|
32
|
-
|
33
|
-
|
31
|
+
#
|
32
|
+
|
33
|
+
|
34
34
|
@latlng = "51.4578329,7.0166848"
|
35
|
-
|
35
|
+
|
36
36
|
url = "http://maps.google.com/maps/geo?ll=#{Geokit::Inflector.url_escape(@latlng)}&output=xml&key=Google&oe=utf-8"
|
37
37
|
Geokit::Geocoders::GoogleGeocoder.expects(:call_geocoder_service).with(url).returns(response)
|
38
|
-
res=Geokit::Geocoders::GoogleGeocoder.reverse_geocode(@latlng)
|
38
|
+
res=Geokit::Geocoders::GoogleGeocoder.reverse_geocode(@latlng)
|
39
39
|
assert_equal "Nordrhein-Westfalen", res.state
|
40
|
-
assert_equal "Essen", res.city
|
40
|
+
assert_equal "Essen", res.city
|
41
41
|
assert_equal "45127", res.zip
|
42
42
|
assert_equal "51.4578329,7.0166848", res.ll # slightly dif from yahoo
|
43
43
|
assert res.is_us? == false
|
44
44
|
assert_equal "Porscheplatz 1, 45127 Essen, Deutschland", res.full_address #slightly different from yahoo
|
45
45
|
assert_equal "google", res.provider
|
46
46
|
end
|
47
|
-
|
48
|
-
|
49
|
-
end
|
47
|
+
|
48
|
+
|
49
|
+
end
|
data/test/test_inflector.rb
CHANGED
@@ -4,14 +4,14 @@ require 'test/unit'
|
|
4
4
|
require 'lib/geokit'
|
5
5
|
|
6
6
|
class InflectorTest < Test::Unit::TestCase #:nodoc: all
|
7
|
-
|
7
|
+
|
8
8
|
def test_titleize
|
9
9
|
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('Sugar Grove')
|
10
10
|
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('Sugar grove')
|
11
11
|
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('sugar Grove')
|
12
12
|
assert_equal 'Sugar Grove', Geokit::Inflector.titleize('sugar grove')
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def test_titleize_with_unicode
|
16
16
|
assert_equal 'Borås', Geokit::Inflector.titleize('Borås')
|
17
17
|
assert_equal 'Borås', Geokit::Inflector.titleize('borås')
|
@@ -20,5 +20,5 @@ class InflectorTest < Test::Unit::TestCase #:nodoc: all
|
|
20
20
|
assert_equal 'Borås (Abc)', Geokit::Inflector.titleize('borås (Abc)')
|
21
21
|
assert_equal 'Borås (Abc)', Geokit::Inflector.titleize('borås (abc)')
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
end
|
data/test/test_ipgeocoder.rb
CHANGED
@@ -2,28 +2,28 @@
|
|
2
2
|
require File.join(File.dirname(__FILE__), 'test_base_geocoder')
|
3
3
|
|
4
4
|
class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
5
|
-
|
5
|
+
|
6
6
|
IP_FAILURE=<<-EOF
|
7
7
|
Country: SWITZERLAND (CH)
|
8
8
|
City: (Unknown City)
|
9
|
-
Latitude:
|
9
|
+
Latitude:
|
10
10
|
Longitude:
|
11
11
|
EOF
|
12
|
-
|
12
|
+
|
13
13
|
IP_SUCCESS=<<-EOF
|
14
14
|
Country: UNITED STATES (US)
|
15
15
|
City: Sugar Grove, IL
|
16
16
|
Latitude: 41.7696
|
17
17
|
Longitude: -88.4588
|
18
18
|
EOF
|
19
|
-
|
19
|
+
|
20
20
|
IP_UNICODED=<<-EOF
|
21
21
|
Country: SWEDEN (SE)
|
22
22
|
City: Borås
|
23
23
|
Latitude: 57.7167
|
24
24
|
Longitude: 12.9167
|
25
25
|
EOF
|
26
|
-
|
26
|
+
|
27
27
|
PRIVATE_IPS_TO_TEST = [
|
28
28
|
'10.10.10.10',
|
29
29
|
'172.16.1.3',
|
@@ -39,8 +39,8 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
39
39
|
def setup
|
40
40
|
super
|
41
41
|
@success.provider = "hostip"
|
42
|
-
end
|
43
|
-
|
42
|
+
end
|
43
|
+
|
44
44
|
def test_successful_lookup
|
45
45
|
success = MockSuccess.new
|
46
46
|
success.expects(:body).returns(IP_SUCCESS)
|
@@ -56,7 +56,7 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
56
56
|
assert_equal "hostip", location.provider
|
57
57
|
assert location.success?
|
58
58
|
end
|
59
|
-
|
59
|
+
|
60
60
|
def test_unicoded_lookup
|
61
61
|
success = MockSuccess.new
|
62
62
|
success.expects(:body).returns(IP_UNICODED)
|
@@ -72,7 +72,7 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
72
72
|
assert_equal "hostip", location.provider
|
73
73
|
assert location.success?
|
74
74
|
end
|
75
|
-
|
75
|
+
|
76
76
|
def test_failed_lookup
|
77
77
|
failure = MockSuccess.new
|
78
78
|
failure.expects(:body).returns(IP_FAILURE)
|
@@ -82,7 +82,7 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
82
82
|
assert_not_nil location
|
83
83
|
assert !location.success?
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
def test_private_ips
|
87
87
|
GeoKit::Geocoders::IpGeocoder.expects(:call_geocoder_service).never
|
88
88
|
PRIVATE_IPS_TO_TEST.each do |ip|
|
@@ -91,14 +91,14 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
91
91
|
assert !location.success?
|
92
92
|
end
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
def test_invalid_ip
|
96
96
|
GeoKit::Geocoders::IpGeocoder.expects(:call_geocoder_service).never
|
97
97
|
location = GeoKit::Geocoders::IpGeocoder.geocode("blah")
|
98
98
|
assert_not_nil location
|
99
99
|
assert !location.success?
|
100
100
|
end
|
101
|
-
|
101
|
+
|
102
102
|
def test_service_unavailable
|
103
103
|
failure = MockFailure.new
|
104
104
|
url = 'http://api.hostip.info/get_html.php?ip=12.215.42.19&position=true'
|
@@ -106,5 +106,5 @@ class IpGeocoderTest < BaseGeocoderTest #:nodoc: all
|
|
106
106
|
location = GeoKit::Geocoders::IpGeocoder.geocode("12.215.42.19")
|
107
107
|
assert_not_nil location
|
108
108
|
assert !location.success?
|
109
|
-
end
|
109
|
+
end
|
110
110
|
end
|