This repository was archived by the owner on Jan 28, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 155
Expand file tree
/
Copy pathGeocoderTest.cs
More file actions
106 lines (89 loc) · 3.18 KB
/
GeocoderTest.cs
File metadata and controls
106 lines (89 loc) · 3.18 KB
1
2
3
4
5
6
7
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
using System.Linq;
using System.Threading.Tasks;
using Xunit;
namespace Geocoding.Tests
{
public abstract class GeocoderTest
{
protected readonly IGeocoder geocoder;
protected readonly SettingsFixture settings;
public GeocoderTest(SettingsFixture settings)
{
//Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-us");
this.settings = settings;
geocoder = CreateGeocoder();
}
protected abstract IGeocoder CreateGeocoder();
[Theory]
[InlineData("1600 pennsylvania ave nw, washington dc")]
public virtual async Task CanGeocodeAddress(string address)
{
Address[] addresses = (await geocoder.GeocodeAsync(address)).ToArray();
addresses[0].AssertWhiteHouse();
}
[Fact]
public virtual async Task CanGeocodeNormalizedAddress()
{
Address[] addresses = (await geocoder.GeocodeAsync("1600 pennsylvania ave nw", "washington", "dc", null, null)).ToArray();
addresses[0].AssertWhiteHouse();
}
[Theory]
[InlineData("en-US")]
[InlineData("cs-CZ")]
public virtual async Task CanGeocodeAddressUnderDifferentCultures(string cultureName)
{
//Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(cultureName);
Address[] addresses = (await geocoder.GeocodeAsync("24 sussex drive ottawa, ontario")).ToArray();
addresses[0].AssertCanadianPrimeMinister();
}
[Theory]
[InlineData("en-US")]
[InlineData("cs-CZ")]
public virtual async Task CanReverseGeocodeAddressUnderDifferentCultures(string cultureName)
{
//Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(cultureName);
Address[] addresses = (await geocoder.ReverseGeocodeAsync(38.8976777, -77.036517)).ToArray();
addresses[0].AssertWhiteHouseArea();
}
[Fact]
public virtual async Task ShouldNotBlowUpOnBadAddress()
{
Address[] addresses = (await geocoder.GeocodeAsync("sdlkf;jasl;kjfldksj,fasldf")).ToArray();
Assert.Empty(addresses);
}
[Theory]
[InlineData("40 1/2 Road")]
[InlineData("B's Farm RD")]
[InlineData("Wilshire & Bundy Plaza, Los Angeles")]
public virtual async Task CanGeocodeWithSpecialCharacters(string address)
{
Address[] addresses = (await geocoder.GeocodeAsync(address)).ToArray();
//asserting no exceptions are thrown and that we get something
Assert.NotEmpty(addresses);
}
[Theory]
[InlineData("Wilshire & Centinela, Los Angeles")]
[InlineData("Fried St & 2nd St, Gretna, LA 70053")]
public virtual async Task CanHandleStreetIntersectionsByAmpersand(string address)
{
Address[] addresses = (await geocoder.GeocodeAsync(address)).ToArray();
//asserting no exceptions are thrown and that we get something
Assert.NotEmpty(addresses);
}
[Fact]
public virtual async Task CanReverseGeocodeAsync()
{
Address[] addresses = (await geocoder.ReverseGeocodeAsync(38.8976777, -77.036517)).ToArray();
addresses[0].AssertWhiteHouseArea();
}
[Theory]
[InlineData("1 Robert Wood Johnson Hosp New Brunswick, NJ 08901 USA")]
[InlineData("miss, MO")]
//https://github.com/chadly/Geocoding.net/issues/6
public virtual async Task CanGeocodeInvalidZipCodes(string address)
{
Address[] addresses = (await geocoder.GeocodeAsync(address)).ToArray();
Assert.NotEmpty(addresses);
}
}
}