コード例 #1
0
ファイル: PoBoxTests.cs プロジェクト: steveoh/webapi-core
        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");
        }
コード例 #2
0
            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);
            }
コード例 #3
0
            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);
            }
コード例 #4
0
 public ParseAddressCommand2(string street)
 {
     SetStreet(street);
     Address = new CleansedAddress
     {
         InputAddress = Street
     };
 }
コード例 #5
0
        public void Should_know_if_intersection(string address, bool isIntersection)
        {
            var model = new CleansedAddress {
                InputAddress = address
            };

            model.IsIntersection().ShouldBe(isIntersection);
        }
コード例 #6
0
        public void Should_know_if_reversal(int?number, string name, bool reversal)
        {
            var model = new CleansedAddress {
                StreetName  = name,
                HouseNumber = number
            };

            model.IsReversal().ShouldBe(reversal);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        public void Should_standardize_po_boxes()
        {
            var model = new CleansedAddress {
                PoBox   = 1,
                IsPoBox = true
            };

            model.StandardizedAddress.ToLowerInvariant().ShouldBe("p.o. box 1");
        }
コード例 #9
0
        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");
        }
コード例 #10
0
        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");
        }
コード例 #11
0
        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");
        }
コード例 #12
0
        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();
        }
コード例 #13
0
        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();
        }
コード例 #14
0
ファイル: PoBoxTests.cs プロジェクト: steveoh/webapi-core
        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();
        }
コード例 #15
0
            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();
            }
コード例 #16
0
        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);
        }
コード例 #17
0
            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");
            }
コード例 #18
0
 public ParseAddressCommand2()
 {
     Address = new CleansedAddress();
 }