public async Task Should_return_candidate_from_poboxes() { const int pobox = -1; const int zip = 84114; var parsedAddress = new CleansedAddress("inputAddress", 1, 0, pobox, Direction.North, "street", StreetType.Alley, Direction.South, 0, zip, false, false); var address = new GeocodeAddress(parsedAddress) { AddressGrids = new[] { new ZipGridLink(84114, "grid", 0) } }; var geocodeOptions = new GeocodingOptions { PoBox = true, SpatialReference = 26912 }; var request = new PoBoxLocation.Command(address, geocodeOptions); var result = await _handler.Handle(request, new CancellationToken()); result.Score.ShouldBe(100); result.Locator.ShouldBe("Post Office Point"); result.Location.X.ShouldBe(1); result.Location.Y.ShouldBe(1); result.AddressGrid.ShouldBe("grid"); }
public async Task Should_return_all_geocoders() { var parsedAddress = new CleansedAddress("inputAddress", 1, 0, 0, Direction.North, "street", StreetType.Alley, Direction.South, 0, 84114, false, false); var address = new GeocodeAddress(parsedAddress) { AddressGrids = new[] { new PlaceGridLink("place", "grid", 0) } }; var geocodeOptions = new GeocodingOptions { Locators = LocatorType.All, SpatialReference = 26912 }; var request = new LocatorsForGeocode.Command(address, geocodeOptions); var result = await Handler.Handle(request, new CancellationToken()); result.Count.ShouldBe(2); geocodeOptions = new GeocodingOptions { Locators = LocatorType.Default, SpatialReference = 26912 }; request = new LocatorsForGeocode.Command(address, geocodeOptions); result = await Handler.Handle(request, new CancellationToken()); result.Count.ShouldBe(2); }
public async Task Should_create_extra_for_address_reversal() { var parsedAddress = new CleansedAddress("inputAddress", 1, 0, 0, Direction.North, "2", StreetType.Alley, Direction.South, 0, 84114, false, false); var address = new GeocodeAddress(parsedAddress) { AddressGrids = new[] { new PlaceGridLink("place", "grid", 0) } }; var geocodeOptions = new GeocodingOptions { Locators = LocatorType.RoadCenterlines, SpatialReference = 26912 }; var request = new LocatorsForGeocode.Command(address, geocodeOptions); var result = await Handler.Handle(request, new CancellationToken()); result.Count.ShouldBe(2); result.Count(x => x.Url == "proto://test:1/arcgis/rest/services/Geolocators/Roads_AddressSystem_STREET/GeocodeServer/findAddressCandidates?f=json&Street=1+North+2+Alley+South&City=grid&outSR=26912") .ShouldBe(1); result.Count(x => x.Url == "proto://test:1/arcgis/rest/services/Geolocators/Roads_AddressSystem_STREET/GeocodeServer/findAddressCandidates?f=json&Street=2+South+Alley+1+North&City=grid&outSR=26912") .ShouldBe(1); }
public ParseAddressCommand2(string street) { SetStreet(street); Address = new CleansedAddress { InputAddress = Street }; }
public void Should_know_if_intersection(string address, bool isIntersection) { var model = new CleansedAddress { InputAddress = address }; model.IsIntersection().ShouldBe(isIntersection); }
public void Should_know_if_reversal(int?number, string name, bool reversal) { var model = new CleansedAddress { StreetName = name, HouseNumber = number }; model.IsReversal().ShouldBe(reversal); }
public void Should_know_if_could_be_reversal(int?number, string name, bool maybeReversal) { var model = new CleansedAddress { StreetName = name, HouseNumber = number }; model.PossibleReversal().ShouldBe(maybeReversal); }
public void Should_standardize_po_boxes() { var model = new CleansedAddress { PoBox = 1, IsPoBox = true }; model.StandardizedAddress.ToLowerInvariant().ShouldBe("p.o. box 1"); }
public void Should_standardize_address_without_nones() { var model = new CleansedAddress { HouseNumber = 1, PrefixDirection = Direction.None, StreetName = "street", StreetType = StreetType.None, SuffixDirection = Direction.None }; model.StandardizedAddress.ToLowerInvariant().ShouldBe("1 street"); }
public void Should_standardize_address() { var model = new CleansedAddress { HouseNumber = 1, PrefixDirection = Direction.East, StreetName = "street", StreetType = StreetType.Alley, SuffixDirection = Direction.North }; model.StandardizedAddress.ToLowerInvariant().ShouldBe("1 east street alley north"); }
public void Should_create_reversal() { var model = new CleansedAddress { HouseNumber = 1, PrefixDirection = Direction.West, StreetName = "street name", SuffixDirection = Direction.South, StreetType = StreetType.Alley }; model.ReversalAddress.ToLowerInvariant().ShouldBe("street name south alley 1 west"); }
public async Task Should_parse_address_parts(CleansedAddress input, string standardAddress) { var request = new AddressParsing.Command(input.InputAddress); var result = await _handler.Handle(request, CancellationToken.None); result.PoBox.ShouldBe(0); result.HouseNumber.ShouldBe(input.HouseNumber); result.PrefixDirection.ShouldBe(input.PrefixDirection); result.StreetName.ShouldBe(input.StreetName); result.StreetType.ShouldBe(input.StreetType); result.SuffixDirection.ShouldBe(input.SuffixDirection); result.StandardizedAddress.ToLowerInvariant().ShouldBe(standardAddress); result.IsPoBox.ShouldBeFalse(); }
public async Task Should_parse_input_with_spaces(CleansedAddress input, string standardAddress, bool reversal) { var request = new AddressParsing.Command(input.InputAddress); var result = await _handler.Handle(request, CancellationToken.None); result.PoBox.ShouldBe(input.PoBox); result.HouseNumber.ShouldBe(input.HouseNumber); result.PrefixDirection.ShouldBe(input.PrefixDirection); result.StreetName.ShouldBe(input.StreetName); result.StreetType.ShouldBe(input.StreetType); result.SuffixDirection.ShouldBe(input.SuffixDirection); result.StandardizedAddress.ShouldBe(standardAddress); result.IsReversal().ShouldBe(reversal); result.IsPoBox.ShouldBeTrue(); }
public async Task Should_return_null_for_address_without_zip_code() { var parsedAddress = new CleansedAddress("inputAddress", 1, 0, 0, Direction.North, "street", StreetType.Alley, Direction.South, 0, new int?(), false, false); var address = new GeocodeAddress(parsedAddress); var geocodeOptions = new GeocodingOptions { PoBox = true }; var request = new PoBoxLocation.Command(address, geocodeOptions); var result = await _handler.Handle(request, new CancellationToken()); result.ShouldBeNull(); }
public async Task Should_return_empty_when_no_grids() { var parsedAddress = new CleansedAddress("inputAddress", 1, 0, 0, Direction.North, "street", StreetType.Alley, Direction.South, 0, 84114, false, false); var address = new GeocodeAddress(parsedAddress) { AddressGrids = Array.Empty <GridLinkable>() }; var geocodeOptions = new GeocodingOptions { Locators = LocatorType.RoadCenterlines, SpatialReference = 26912 }; var request = new LocatorsForGeocode.Command(address, geocodeOptions); var result = await Handler.Handle(request, new CancellationToken()); result.ShouldBeEmpty(); }
public async Task Should_parse_address_parts_with_insights(CleansedAddress input, bool reversal, bool possibleReversal, bool hasPrefix, bool isNumeric) { var request = new AddressParsing.Command(input.InputAddress); var result = await _handler.Handle(request, CancellationToken.None); result.HouseNumber.ShouldBe(input.HouseNumber); result.PrefixDirection.ShouldBe(input.PrefixDirection); result.StreetName.ShouldBe(input.StreetName); result.StreetType.ShouldBe(input.StreetType); result.SuffixDirection.ShouldBe(input.SuffixDirection); result.PoBox.ShouldBe(0); result.IsPoBox.ShouldBeFalse(); result.IsHighway.ShouldBeFalse(); result.IsIntersection().ShouldBeFalse(); result.IsNumericStreetName().ShouldBe(isNumeric); result.HasPrefix().ShouldBe(hasPrefix); result.IsReversal().ShouldBe(reversal); result.PossibleReversal().ShouldBe(possibleReversal); }
public async Task Should_return_centerline_geocoder_only() { var parsedAddress = new CleansedAddress("inputAddress", 1, 0, 0, Direction.North, "street", StreetType.Alley, Direction.South, 0, 84114, false, false); var address = new GeocodeAddress(parsedAddress) { AddressGrids = new[] { new PlaceGridLink("place", "grid", 0) } }; var geocodeOptions = new GeocodingOptions { Locators = LocatorType.RoadCenterlines, SpatialReference = 26912 }; var request = new LocatorsForGeocode.Command(address, geocodeOptions); var result = await Handler.Handle(request, new CancellationToken()); result.ShouldHaveSingleItem(); var locator = result.First(); locator.Url.ShouldBe("proto://test:1/arcgis/rest/services/Geolocators/Roads_AddressSystem_STREET/GeocodeServer/findAddressCandidates?f=json&Street=1+North+street+Alley+South&City=grid&outSR=26912"); locator.Name.ShouldBe("Centerlines.StatewideRoads"); }
public ParseAddressCommand2() { Address = new CleansedAddress(); }