public override void ViewDidLoad ()
		{
			base.ViewDidLoad ();
			
			// Perform any additional setup after loading the view, typically from a nib.
			View.Frame = UIScreen.MainScreen.Bounds;
			View.BackgroundColor = UIColor.White;
			View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;

			button = UIButton.FromType(UIButtonType.RoundedRect);

			button.Frame = new RectangleF(
				(float)(View.Frame.Width / 2 - buttonWidth / 2),
				buttonHeight,
				buttonWidth,
				buttonHeight);

			button.SetTitle("GO", UIControlState.Normal);

			textView = new UITextView(new RectangleF(
				(float)(View.Frame.Width / 2 - buttonWidth / 2),
				(float)((View.Frame.Height / 2 - buttonHeight / 2) - buttonHeight),
				buttonWidth,
				(float)((View.Frame.Height / 2 - buttonHeight / 2) - buttonHeight)));

			ArcGIS.ServiceModel.Serializers.JsonDotNetSerializer.Init();

			var locator = new PortalGateway("http://geocode.arcgis.com/arcgis");
			var geocode = new SingleInputGeocode("/World/GeocodeServer/".AsEndpoint())
			{
				Text = "Wellington",
				SourceCountry = "NZL"
			};

			var gateway = new PortalGateway("http://sampleserver3.arcgisonline.com/ArcGIS/");
			var queryPoint = new Query(@"Earthquakes/EarthquakesFromLastSevenDays/MapServer/0".AsEndpoint())
			{
				ReturnGeometry = false,
				Where = "MAGNITUDE > 4.5"
			};

			button.TouchUpInside += async (object sender, EventArgs e) =>
			{
				var geocodeResult = await locator.Geocode(geocode);

				var resultPoint = await gateway.Query<ArcGIS.ServiceModel.Common.Point>(queryPoint);

				textView.Text = string.Format("Query for earthquakes in last 7 days where magnitidue is more than 4.5, {0} features found. Geocode result for Wellington, NZ x:{1}, y:{2}",
					resultPoint.Features.Count(),
					geocodeResult.Results.First().Feature.Geometry.X,
					geocodeResult.Results.First().Feature.Geometry.Y);
			};

			button.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleTopMargin |
				UIViewAutoresizing.FlexibleBottomMargin;

			View.AddSubview(button);
			View.Add(textView);
		}
Example #2
0
        public async Task CanGetHealthCheck(string rootUrl)
        {
            var gateway = new PortalGateway(rootUrl);

            var result = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.HealthCheck());
            });

            Assert.NotNull(result);
            Assert.Null(result.Error);
            Assert.True(result.IsHealthy);
        }
Example #3
0
        public async Task CanDescribeLegend(string rootUrl, string mapUrl)
        {
            var gateway       = new PortalGateway(rootUrl);
            var layerResponse = await IntegrationTestFixture.TestPolicy.Execute(() =>
            {
                return(gateway.DescribeLegends(mapUrl.AsEndpoint()));
            });

            Assert.NotNull(layerResponse);
            Assert.Null(layerResponse.Error);
            Assert.NotNull(layerResponse.Layers);
            Assert.True(layerResponse.Layers.Any());
        }
Example #4
0
        public async Task CanGetServerInfo(string rootUrl)
        {
            var gateway = new PortalGateway(rootUrl);

            var response = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.Info());
            });

            Assert.Null(response.Error);
            Assert.True(response.CurrentVersion > 9.0);
            Assert.NotNull(response.AuthenticationInfo);
        }
Example #5
0
        public async Task CanQueryForCount()
        {
            var gateway = new PortalGateway("http://services.arcgisonline.com/arcgis/");

            var query  = new QueryForCount(@"/Specialty/Soil_Survey_Map/MapServer/2".AsEndpoint());
            var result = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.QueryForCount(query));
            });

            Assert.NotNull(result);
            Assert.Null(result.Error);
            Assert.True(result.NumberOfResults > 0);
        }
Example #6
0
    //2,每个传送门的代码的Start部分调用,将自身注册(也就是加入进List)。

    public PortalGateway FindSameGate(PortalGateway portalGateway)
    {
        foreach (PortalGateway portalGateway1 in instance.portalGateways)
        {
            if (portalGateway1 != portalGateway)
            {
                if (portalGateway1.kindofGate == portalGateway.kindofGate)
                {
                    return(portalGateway1);
                }
            }
        }
        return(null);
    }
Example #7
0
        public async Task CanQueryWithNoGeometryResponse()
        {
            var gateway = new PortalGateway("http://services.arcgisonline.com/arcgis/");

            var query  = new Query(@"/Specialty/Soil_Survey_Map/MapServer/2");
            var result = await IntegrationTestFixture.TestPolicy.Execute(() =>
            {
                return(gateway.Query(query));
            });

            Assert.NotNull(result);
            Assert.Null(result.Error);
            Assert.NotNull(result.Features);
            Assert.True(result.Features.All(x => x.Geometry == null));
        }
Example #8
0
        public async Task CanSuggest(string rootUrl, string relativeUrl, string text)
        {
            var gateway = new PortalGateway(rootUrl);
            var suggest = new SuggestGeocode(relativeUrl.AsEndpoint())
            {
                Text = text
            };
            var response = await gateway.Suggest(suggest);

            Assert.Null(response.Error);
            Assert.NotNull(response.Suggestions);
            Assert.True(response.Suggestions.Any());
            var result = response.Suggestions.First();

            Assert.True(!string.IsNullOrWhiteSpace(result.Text));
        }
Example #9
0
        public async Task CanGetFeature(string rootUrl, string relativeUrl, long objectId)
        {
            var gateway = new PortalGateway(rootUrl);

            var result = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.GetFeature <Polygon>(new LayerFeature(relativeUrl, objectId)));
            });

            Assert.NotNull(result);
            Assert.Null(result.Error);
            Assert.NotNull(result.Feature);
            Assert.NotNull(result.Feature.Attributes);
            Assert.NotNull(result.Feature.Geometry);
            Assert.Equal(result.Feature.ObjectID, objectId);
        }
Example #10
0
        public async Task CanQueryExtent(string rootUrl, string relativeUrl)
        {
            var gateway = new PortalGateway(rootUrl);

            var query  = new QueryForExtent(relativeUrl.AsEndpoint());
            var result = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.QueryForExtent(query));
            });

            Assert.NotNull(result);
            Assert.Null(result.Error);
            Assert.True(result.NumberOfResults > 0);
            Assert.NotNull(result.Extent);
            Assert.NotNull(result.Extent.SpatialReference);
            Assert.NotNull(result.Extent.GetCenter());
        }
        public async Task CanCustomGeocodePolygon(string rootUrl, string relativeUrl, string searchText)
        {
            var gateway       = new PortalGateway(rootUrl);
            var customGeocode = new SingleInputCustomGeocode(relativeUrl)
            {
                Text = searchText
            };
            var response = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.CustomGeocode <Polygon>(customGeocode));
            });

            Assert.Null(response.Error);
            Assert.NotNull(response.Candidates);
            Assert.True(response.Candidates.Any());
            Assert.NotNull(response.Candidates.FirstOrDefault().Location);
        }
        public async Task QueryCanReturnPointFeatures(string rootUrl, string relativeUrl)
        {
            var gateway = new PortalGateway(rootUrl);

            var query  = new Query(relativeUrl.AsEndpoint());
            var result = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.Query <Point>(query));
            });

            Assert.NotNull(result);
            Assert.Null(result.Error);
            Assert.NotNull(result.SpatialReference);
            Assert.True(result.Features.Any());
            Assert.Null(result.Links);
            Assert.True(result.Features.All(i => i.Geometry != null));
        }
Example #13
0
        public async Task CanBuffer()
        {
            var gateway = new PortalGateway("http://sampleserver1.arcgisonline.com/ArcGIS");

            var result = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.Query <Polygon>(new Query("Demographics/ESRI_Census_USA/MapServer/5".AsEndpoint())
                {
                    Where = "STATE_NAME = 'Texas'"
                }));
            });

            var features = result.Features.Where(f => f.Geometry.Rings.Any()).ToList();

            Assert.NotNull(features);

            await Buffer(gateway, features, result.SpatialReference);
        }
        public async Task CanBuffer(string rootUrl, string relativeUrl, string where)
        {
            var gateway = new PortalGateway(rootUrl);

            var result = await IntegrationTestFixture.TestPolicy.Execute(() =>
            {
                return(gateway.Query <Polygon>(new Query(relativeUrl)
                {
                    Where = where
                }));
            });

            var features = result.Features.Where(f => f.Geometry.Rings.Any()).ToList();

            Assert.NotNull(features);

            await Buffer(gateway, features, result.SpatialReference);
        }
        // [Fact]
        public async Task CanStopAndStartService()
        {
            var gateway = new PortalGateway("", "", "");
            var folder  = ""; // set this to only get a specific folder
            var site    = await gateway.SiteReport(folder);

            Assert.NotNull(site);
            var services = site.ServiceReports.Where(s => s.Type == "MapServer");

            Assert.NotNull(services);
            Assert.True(services.Any());
            foreach (var service in services)
            {
                var sd = service.AsServiceDescription();
                if (string.Equals("STARTED", service.Status.Actual, StringComparison.OrdinalIgnoreCase))
                {
                    var stoppedResult = await gateway.StopService(sd);

                    Assert.NotNull(stoppedResult);
                    Assert.Null(stoppedResult.Error);
                    Assert.Equal("success", stoppedResult.Status);

                    var startedResult = await gateway.StartService(sd);

                    Assert.NotNull(startedResult);
                    Assert.Null(startedResult.Error);
                    Assert.Equal("success", startedResult.Status);
                }
                else
                {
                    var startedResult = await gateway.StartService(sd);

                    Assert.NotNull(startedResult);
                    Assert.Null(startedResult.Error);
                    Assert.Equal("success", startedResult.Status);

                    var stoppedResult = await gateway.StopService(sd);

                    Assert.NotNull(stoppedResult);
                    Assert.Null(stoppedResult.Error);
                    Assert.Equal("success", stoppedResult.Status);
                }
            }
        }
Example #16
0
        public async Task CanQueryDomains()
        {
            var gateway = new PortalGateway("http://gis.stlouiscountymn.gov/arcgis");

            var queryDomains = new QueryDomains(@"PublicWorks/SignInventory/MapServer/")
            {
                LayerIdsToSearch = new List <int> {
                    0
                }
            };
            var result = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.QueryDomains(queryDomains));
            });

            Assert.NotNull(result);
            Assert.Null(result.Error);
            Assert.True(result.Domains.Any());
        }
Example #17
0
        public async Task CanGetServiceTileInfo(string rootUrl, string serviceId)
        {
            var gateway = new PortalGateway(rootUrl);

            var response = await IntegrationTestFixture.TestPolicy.Execute(() =>
            {
                return(gateway.DescribeService(serviceId.AsEndpoint()));
            });

            Assert.NotNull(response.SingleFusedMapCache);
            Assert.NotNull(response.TileInfo);
            Assert.NotNull(response.TileInfo.Lods);
            Assert.NotNull(response.TileInfo.Origin);
            Assert.NotNull(response.TileInfo.SpatialReference);
            Assert.NotNull(response.TileInfo.SpatialReference.Wkid);
            Assert.Equal(512, response.TileInfo.Rows);
            Assert.Equal(512, response.TileInfo.Cols);
            Assert.Equal(96, response.TileInfo.Dpi);
        }
Example #18
0
        public async Task CanSuggest(string rootUrl, string relativeUrl, string text)
        {
            var gateway = new PortalGateway(rootUrl);
            var suggest = new SuggestGeocode(relativeUrl)
            {
                Text = text
            };
            var response = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.Suggest(suggest));
            });

            Assert.Null(response.Error);
            Assert.NotNull(response.Suggestions);
            Assert.True(response.Suggestions.Any());
            var result = response.Suggestions.First();

            Assert.True(!string.IsNullOrWhiteSpace(result.Text));
        }
        public async Task CanUseServerInfoToGenerateToken(string rootUrl, string username, string password)
        {
            var gateway    = new PortalGateway(rootUrl);
            var serverInfo = await IntegrationTestFixture.TestPolicy.Execute(() =>
            {
                return(gateway.Info());
            });

            var tokenProvider = new TokenProvider(serverInfo.AuthenticationInfo.TokenServicesUrl, username, password);
            var token         = await IntegrationTestFixture.TestPolicy.Execute(() =>
            {
                return(tokenProvider.CheckGenerateToken(CancellationToken.None));
            });

            Assert.NotNull(token);
            Assert.NotNull(token.Value);
            Assert.False(token.IsExpired);
            Assert.Null(token.Error);
        }
Example #20
0
        public async Task CanGeocode(string rootUrl, string relativeUrl, string text, string sourceCountry = "")
        {
            var gateway = new PortalGateway(rootUrl);
            var geocode = new SingleInputGeocode(relativeUrl.AsEndpoint())
            {
                Text          = text,
                SourceCountry = sourceCountry
            };
            var response = await gateway.Geocode(geocode);

            Assert.Null(response.Error);
            Assert.NotNull(response.SpatialReference);
            Assert.NotNull(response.Results);
            Assert.True(response.Results.Any());
            var result = response.Results.First();

            Assert.NotNull(result.Feature);
            Assert.NotNull(result.Feature.Geometry);
        }
Example #21
0
        public async Task CanReverseGeocodePoint(string rootUrl, string relativeUrl, double x, double y, int wkid)
        {
            var gateway        = new PortalGateway(rootUrl);
            var reverseGeocode = new ReverseGeocode(relativeUrl.AsEndpoint())
            {
                Location = new Point
                {
                    X = x,
                    Y = y,
                    SpatialReference = new SpatialReference {
                        Wkid = wkid
                    }
                }
            };
            var response = await gateway.ReverseGeocode(reverseGeocode);

            Assert.Null(response.Error);
            Assert.NotNull(response.Address);
            Assert.NotNull(response.Location);
        }
Example #22
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our button from the layout resource,
            // and attach an event to it
            Button   button   = FindViewById <Button>(Resource.Id.myButton);
            TextView textview = FindViewById <TextView>(Resource.Id.textView1);

            ArcGIS.ServiceModel.Serializers.JsonDotNetSerializer.Init();

            var locator = new PortalGateway("http://geocode.arcgis.com/arcgis");
            var geocode = new SingleInputGeocode("/World/GeocodeServer/".AsEndpoint())
            {
                Text          = "Wellington",
                SourceCountry = "NZL"
            };

            var gateway = new PortalGateway("http://sampleserver3.arcgisonline.com/ArcGIS/");

            var queryPoint = new Query(@"Earthquakes/EarthquakesFromLastSevenDays/MapServer/0".AsEndpoint())
            {
                ReturnGeometry = false,
                Where          = "MAGNITUDE > 4.5"
            };

            button.Click += async delegate
            {
                var geocodeResult = await locator.Geocode(geocode);

                var resultPoint = await gateway.Query <Point>(queryPoint);

                textview.Text = string.Format("Query for earthquakes in last 7 days where magnitude is more than 4.5, {0} features found. Geocode result for Wellington, NZ x:{1}, y:{2}",
                                              resultPoint.Features.Count(),
                                              geocodeResult.Results.First().Feature.Geometry.X,
                                              geocodeResult.Results.First().Feature.Geometry.Y);
            };
        }
Example #23
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById<Button>(Resource.Id.myButton);
            TextView textview = FindViewById<TextView>(Resource.Id.textView1);

            ArcGIS.ServiceModel.Serializers.JsonDotNetSerializer.Init();

            var locator = new PortalGateway("http://geocode.arcgis.com/arcgis");
            var geocode = new SingleInputGeocode("/World/GeocodeServer/".AsEndpoint())
            {
                Text = "Wellington",
                SourceCountry = "NZL"
            };

            var gateway = new PortalGateway("http://sampleserver3.arcgisonline.com/ArcGIS/");

            var queryPoint = new Query(@"Earthquakes/EarthquakesFromLastSevenDays/MapServer/0".AsEndpoint())
            {
                ReturnGeometry = false,
                Where = "MAGNITUDE > 4.5"
            };

            button.Click += async delegate
            {
                var geocodeResult = await locator.Geocode(geocode);

                var resultPoint = await gateway.Query<Point>(queryPoint);

                textview.Text = string.Format("Query for earthquakes in last 7 days where magnitude is more than 4.5, {0} features found. Geocode result for Wellington, NZ x:{1}, y:{2}",
                    resultPoint.Features.Count(),
                    geocodeResult.Results.First().Feature.Geometry.X,
                    geocodeResult.Results.First().Feature.Geometry.Y);
            };
        }
Example #24
0
        public async Task CanDescribeSite(string rootUrl)
        {
            var gateway  = new PortalGateway(rootUrl);
            var response = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.DescribeSite());
            });

            Assert.NotNull(response);
            Assert.True(response.Version > 0);

            foreach (var resource in response.ArcGISServerEndpoints.Where(e => e.RelativeUrl.EndsWith("server", StringComparison.OrdinalIgnoreCase) && !e.RelativeUrl.EndsWith("searchserver", StringComparison.OrdinalIgnoreCase)))
            {
                var ping = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
                {
                    return(gateway.Ping(resource));
                });

                Assert.Null(ping.Error);
            }
        }
        public async Task CanDescribeSite(string rootUrl)
        {
            var gateway  = new PortalGateway(rootUrl);
            var response = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.DescribeSite());
            });

            Assert.NotNull(response);
            Assert.True(response.Version > 0);

            foreach (var resource in response.ArcGISServerEndpoints)
            {
                var ping = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
                {
                    return(gateway.Ping(resource));
                });

                Assert.Null(ping.Error);
            }
        }
Example #26
0
        public async Task CanDescribeLegend2(string rootUrl, string mapUrl, int?dpi, int?size)
        {
            var gateway = new PortalGateway(rootUrl);
            var request = new LegendsDescription(mapUrl.AsEndpoint());

            request.Dpi = dpi;
            if (size.HasValue)
            {
                request.Size = new List <int>();
                request.Size.Add(size.Value);
                request.Size.Add(size.Value);
            }
            var layerResponse = await IntegrationTestFixture.TestPolicy.Execute(() =>
            {
                return(gateway.DescribeLegends(request));
            });

            Assert.NotNull(layerResponse);
            Assert.Null(layerResponse.Error);
            Assert.NotNull(layerResponse.Layers);
            Assert.True(layerResponse.Layers.Any());
        }
Example #27
0
        public async Task CanGeocode(string rootUrl, string relativeUrl, string text, string sourceCountry = "")
        {
            var gateway = new PortalGateway(rootUrl);
            var geocode = new SingleInputGeocode(relativeUrl)
            {
                Text          = text,
                SourceCountry = sourceCountry
            };
            var response = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.Geocode(geocode));
            });

            Assert.Null(response.Error);
            Assert.NotNull(response.SpatialReference);
            Assert.NotNull(response.Results);
            Assert.True(response.Results.Any());
            var result = response.Results.First();

            Assert.NotNull(result.Feature);
            Assert.NotNull(result.Feature.Geometry);
        }
Example #28
0
        public async Task CanExportMap(string rootUrl, string relativeUrl)
        {
            var gateway = new PortalGateway(rootUrl);

            var result = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.ExportMap(new ExportMap(relativeUrl)
                {
                    ExportExtent = new Extent
                    {
                        XMin = -28695213.908633016,
                        YMin = -32794.530181307346,
                        XMax = 28695213.908633016,
                        YMax = 19971868.880408566,
                        SpatialReference = SpatialReference.WebMercator
                    }
                }));
            });

            Assert.NotNull(result);
            Assert.Null(result.Error);
            Assert.NotNull(result.ImageUrl);
        }
Example #29
0
        public async Task CanReverseGeocodePoint(string rootUrl, string relativeUrl, double x, double y, int wkid)
        {
            var gateway        = new PortalGateway(rootUrl);
            var reverseGeocode = new ReverseGeocode(relativeUrl)
            {
                Location = new Point
                {
                    X = x,
                    Y = y,
                    SpatialReference = new SpatialReference {
                        Wkid = wkid
                    }
                }
            };
            var response = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.ReverseGeocode(reverseGeocode));
            });

            Assert.Null(response.Error);
            Assert.NotNull(response.Address);
            Assert.NotNull(response.Location);
        }
Example #30
0
        public async Task CanDescribeSiteServices(string rootUrl)
        {
            var gateway      = new PortalGateway(rootUrl);
            var siteResponse = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.DescribeSite());
            });

            Assert.NotNull(siteResponse);
            Assert.True(siteResponse.Version > 0);

            var response = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.DescribeServices(siteResponse));
            });

            foreach (var serviceDescription in response)
            {
                Assert.NotNull(serviceDescription);
                Assert.Null(serviceDescription.Error);
                Assert.NotNull(serviceDescription.ServiceDescription);
            }
        }
Example #31
0
        public async Task QueryOrderByIsHonored(string rootUrl, string relativeUrl, string orderby)
        {
            var gateway = new PortalGateway(rootUrl);

            var query = new Query(relativeUrl.AsEndpoint())
            {
                OrderBy = new List <string> {
                    orderby
                },
                ReturnGeometry = false,
                Where          = "CITY = 'WA'"
            };
            var result = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.Query <Point>(query));
            });

            var queryDesc = new Query(relativeUrl)
            {
                OrderBy = new List <string> {
                    orderby + " DESC"
                },
                ReturnGeometry = false,
                Where          = "CITY = 'WA'"
            };
            var resultDesc = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.Query <Point>(queryDesc));
            });

            Assert.True(result.Features.Any());
            Assert.True(resultDesc.Features.Any());
            Assert.True(result.Features.Count() == resultDesc.Features.Count());
            Assert.Equal(result.Features.First().Attributes[orderby], resultDesc.Features.Last().Attributes[orderby]);
            Assert.Equal(result.Features.Last().Attributes[orderby], resultDesc.Features.First().Attributes[orderby]);
        }
Example #32
0
        public async Task CanAddUpdateAndDeleteUsingGlobalIds()
        {
            var gateway = new PortalGateway("https://sampleserver6.arcgisonline.com/arcgis");

            var feature = new Feature <Point>();

            feature.Attributes.Add("type", 0);
            feature.Geometry = new Point {
                SpatialReference = new SpatialReference {
                    Wkid = SpatialReference.WebMercator.Wkid
                }, X = -13073617.8735768, Y = 4071422.42978062
            };
            Guid newGlobalId = System.Guid.NewGuid();

            feature.Attributes.Add("GlobalID", newGlobalId);
            feature.Attributes.Add("creator", "Anywhere.ArcGIS");

            var adds = new ApplyEdits <Point>(@"Sync/SaveTheBaySync/FeatureServer/0".AsEndpoint())
            {
                Adds = new List <Feature <Point> > {
                    feature
                },
                UseGlobalIds = true
            };
            var resultAdd = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.ApplyEdits(adds));
            });

            Assert.True(resultAdd.Adds.Any());
            Assert.True(resultAdd.Adds.First().Success);
            Assert.Equal(resultAdd.ExpectedAdds, resultAdd.ActualAdds);
            Assert.Equal(resultAdd.ActualAdds, resultAdd.ActualAddsThatSucceeded);

            var id = resultAdd.Adds.First().GlobalId;

            Assert.Equal(newGlobalId.ToString("B"), id);

            feature.Attributes.Add("comments", "something"); // problem with serialization means we need single quotes around string values
            feature.Attributes.Add("editor", "Anywhere.ArcGIS");

            var updates = new ApplyEdits <Point>(@"Sync/SaveTheBaySync/FeatureServer/0")
            {
                Updates = new List <Feature <Point> > {
                    feature
                },
                UseGlobalIds = true
            };
            var resultUpdate = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.ApplyEdits(updates));
            });

            Assert.True(resultUpdate.Updates.Any());
            // Note - Success returns false, even though it's worked.
            // Assert.True(resultUpdate.Updates.First().Success);
            Assert.Equal(1, resultUpdate.ExpectedUpdates);
            Assert.Equal(1, resultUpdate.ActualUpdates);
            Assert.Equal(resultUpdate.ExpectedUpdates, resultUpdate.ActualUpdates);
            // Note - resultUpdate.ActualUpdatesThatSucceeded returns 0, even though it's worked.
            // Assert.Equal(resultUpdate.ActualUpdates, resultUpdate.ActualUpdatesThatSucceeded);

            // Not sure why, but GlobalId in Updates is in D format, not B format.
            Assert.Equal(newGlobalId.ToString("D"), resultUpdate.Updates.First().GlobalId);

            var deletes = new ApplyEdits <Point>(@"Sync/SaveTheBaySync/FeatureServer/0".AsEndpoint())
            {
                DeleteGlobalIds = new List <Guid> {
                    newGlobalId
                },
                UseGlobalIds = true
            };

            var resultDelete = await IntegrationTestFixture.TestPolicy.ExecuteAsync(() =>
            {
                return(gateway.ApplyEdits(deletes));
            });

            Assert.True(resultDelete.Deletes.Any());
            Assert.True(resultDelete.Deletes.First().Success);
            // resultDelete.ExpectedDeletes returns 0 - not expected value (1).
            // Assert.Equal(resultDelete.ExpectedDeletes, resultDelete.ActualDeletes);
            Assert.Equal(1, resultDelete.ActualDeletes);
            Assert.Equal(1, resultDelete.ActualDeletesThatSucceeded);
            Assert.Equal(resultDelete.ActualDeletes, resultDelete.ActualDeletesThatSucceeded);
            Assert.Equal(resultDelete.Deletes.First().GlobalId, id);
        }