コード例 #1
0
        public void ConstructorDefaultTest()
        {
            var request = new SpeedLimitsRequest();

            Assert.IsTrue(request.IsSsl);
            Assert.AreEqual(Units.Kph, request.Unit);
        }
コード例 #2
0
        public void GetQueryStringParametersWhenPlacesTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key    = "key",
                Places = new[]
                {
                    new Place("place1"),
                    new Place("place2")
                }
            };

            var queryStringParameters = request.GetQueryStringParameters();

            Assert.IsNotNull(queryStringParameters);

            var place1         = queryStringParameters.FirstOrDefault(x => x.Key == "placeId");
            var place1Expected = request.Places.First().ToString();

            Assert.IsNotNull(place1);
            Assert.AreEqual(place1Expected, place1.Value);

            var place2         = queryStringParameters.LastOrDefault(x => x.Key == "placeId");
            var place2Expected = request.Places.Last().ToString();

            Assert.IsNotNull(place2);
            Assert.AreEqual(place2Expected, place2.Value);
        }
コード例 #3
0
        public void GetQueryStringParametersWhenPathTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key  = "key",
                Path = new[]
                {
                    new Coordinate(1, 1),
                    new Coordinate(2, 2)
                }
            };

            var queryStringParameters = request.GetQueryStringParameters();

            Assert.IsNotNull(queryStringParameters);

            var key         = queryStringParameters.SingleOrDefault(x => x.Key == "key");
            var keyExpected = request.Key;

            Assert.IsNotNull(key);
            Assert.AreEqual(keyExpected, key.Value);

            var path         = queryStringParameters.FirstOrDefault(x => x.Key == "path");
            var pathExpected = string.Join("|", request.Path);

            Assert.IsNotNull(path);
            Assert.AreEqual(pathExpected, path.Value);
        }
コード例 #4
0
        public void NearestRoadsWhenPathIsNullAndPlaceIdsIsNullTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key = this.ApiKey
            };

            var exception = Assert.Throws<ArgumentException>(() => GoogleMaps.SpeedLimits.Query(request));
            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "Path or PlaceId's is required.");
        }
コード例 #5
0
        public void SpeedLimitsWhenKeyIsStringEmptyTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key = string.Empty,
                Path = new[] { new Entities.Maps.Roads.Common.Location(0, 0) }
            };

            var exception = Assert.Throws<ArgumentException>(() => GoogleMaps.SpeedLimits.Query(request));
            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "Key is required.");
        }
コード例 #6
0
        public void SpeedLimitsWhenPlaceIdsTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key = this.ApiKey,
                PlaceIds = new[] { "test" }
            };
            var result = GoogleMaps.SpeedLimits.Query(request);

            Assert.IsNotNull(result);
            Assert.AreEqual(Status.Ok, result.Status);
        }
コード例 #7
0
        public void SpeedLimitsWhenAsyncTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key  = this.ApiKey,
                Path = new[] { new Location(0, 0) }
            };
            var result = GoogleMaps.SpeedLimits.QueryAsync(request).Result;

            Assert.IsNotNull(result);
            Assert.AreEqual(Status.Ok, result.Status);
        }
コード例 #8
0
        public void SpeedLimitsWhenPlaceIdsCountIsGreaterThanAllowedTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key = this.ApiKey,
                PlaceIds = new string[101]
            };

            var exception = Assert.Throws<ArgumentException>(() => GoogleMaps.SpeedLimits.Query(request));
            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "Max 100 PlaceId's is allowed.");
        }
コード例 #9
0
        public void NearestRoadsWhenPathIsEmptyAndPlaceIdsIsEmptyTest()
        {
            var request = new SpeedLimitsRequest()
            {
                Key = this.ApiKey,
                Path = new Entities.Maps.Roads.Common.Location[0],
                PlaceIds = new string[0]
            };

            var exception = Assert.Throws<ArgumentException>(() => GoogleMaps.SpeedLimits.Query(request));
            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "Path or PlaceId's is required.");
        }
コード例 #10
0
        public void SpeedLimitsWhenKeyIsNullTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key  = null,
                Path = new[] { new Location(0, 0) }
            };

            var exception = Assert.Throws <ArgumentException>(() => GoogleMaps.SpeedLimits.Query(request));

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "Key is required");
        }
コード例 #11
0
        public void GetQueryStringParametersTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key  = "abc",
                Path = new[]
                {
                    new Location(1, 1),
                    new Location(2, 2)
                }
            };

            Assert.DoesNotThrow(() => request.GetQueryStringParameters());
        }
コード例 #12
0
        public void SpeedLimitsAsyncCancelledTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key = this.ApiKey,
                Path = new[] { new Entities.Maps.Roads.Common.Location(0, 0) }
            };
            var cancellationTokenSource = new CancellationTokenSource();
            var task = GoogleMaps.SpeedLimits.QueryAsync(request, cancellationTokenSource.Token);
            cancellationTokenSource.Cancel();

            var exception = Assert.Throws<OperationCanceledException>(() => task.Wait(cancellationTokenSource.Token));
            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "The operation was canceled.");
        }
コード例 #13
0
        public void GetQueryStringParametersWhenPathIsNullAndPlaceIdsIsNullTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key = "abc"
            };

            var exception = Assert.Throws <ArgumentException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "Path or PlaceId's is required");
        }
コード例 #14
0
        public void GetQueryStringParametersWhenKeyIsStringEmptyTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key = string.Empty
            };

            var exception = Assert.Throws <ArgumentException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "'Key' is required");
        }
コード例 #15
0
        public void GetQueryStringParametersWhenKeyIsNullTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key  = null,
                Path = new[] { new Location(0, 0) }
            };

            var exception = Assert.Throws <ArgumentException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "Key is required");
        }
コード例 #16
0
        public void GetQueryStringParametersWhenPathAndTooManyTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key  = "key",
                Path = new Coordinate[101]
            };

            var exception = Assert.Throws <ArgumentException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "'Path' must contain equal or less than 100 coordinates");
        }
コード例 #17
0
        public void GetUriWhenPlaceIdsTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key      = "abc",
                PlaceIds = new[]
                {
                    "abc",
                    "def"
                }
            };

            var uri = request.GetUri();

            Assert.IsNotNull(uri);
            Assert.AreEqual($"/v1/speedLimits?key={request.Key}&placeId={Uri.EscapeDataString(request.PlaceIds.First())}&placeId={Uri.EscapeDataString(request.PlaceIds.Last())}", uri.PathAndQuery);
        }
コード例 #18
0
        public void GetUriTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key  = "abc",
                Path = new[]
                {
                    new Location(1, 1),
                    new Location(2, 2)
                }
            };

            var uri = request.GetUri();

            Assert.IsNotNull(uri);
            Assert.AreEqual($"/v1/speedLimits?key={request.Key}&path={Uri.EscapeDataString(string.Join("|", request.Path))}", uri.PathAndQuery);
        }
コード例 #19
0
        public void GetQueryStringParametersWhenPlaceIdsCountIsGreaterThanAllowedTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key      = "abc",
                PlaceIds = new string[101]
            };

            var exception = Assert.Throws <ArgumentException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "Max PlaceId's exceeded");
        }
コード例 #20
0
        public void SpeedLimitsWhenPathIsNullAndPlaceIdsIsNullTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key = this.ApiKey
            };

            var exception = Assert.Throws <AggregateException>(() => GoogleMaps.SpeedLimits.QueryAsync(request).Wait());

            Assert.IsNotNull(exception);

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException), innerException.GetType());
            Assert.AreEqual(innerException.Message, "Path or PlaceId's is required");
        }
コード例 #21
0
        public void SpeedLimitsTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key = this.ApiKey,
                Path = new[]
                {
                    new Entities.Maps.Roads.Common.Location(60.170880, 24.942795),
                    new Entities.Maps.Roads.Common.Location(60.170879, 24.942796),
                    new Entities.Maps.Roads.Common.Location(60.170877, 24.942796)
                }
            };
            var result = GoogleMaps.SpeedLimits.Query(request);

            Assert.IsNotNull(result);
            Assert.AreEqual(Status.Ok, result.Status);
        }
コード例 #22
0
        public void GetQueryStringParametersWhenPathIsEmptyAndPlaceIdsIsEmptyTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key      = this.ApiKey,
                Path     = new Location[0],
                PlaceIds = new string[0]
            };

            var exception = Assert.Throws <ArgumentException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "Path or PlaceId's is required");
        }
コード例 #23
0
        public void SpeedLimitsWhenKeyIsNullTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key  = null,
                Path = new[] { new Location(0, 0) }
            };

            var exception = Assert.Throws <AggregateException>(() => GoogleMaps.SpeedLimits.QueryAsync(request).Wait());

            Assert.IsNotNull(exception);

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException), innerException.GetType());
            Assert.AreEqual(innerException.Message, "Key is required");
        }
コード例 #24
0
        public void SpeedLimitsWhenPlaceIdsCountIsGreaterThanAllowedTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key      = this.ApiKey,
                PlaceIds = new string[101]
            };

            var exception = Assert.Throws <AggregateException>(() => GoogleMaps.SpeedLimits.QueryAsync(request).Wait());

            Assert.IsNotNull(exception);

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException), innerException.GetType());
            Assert.AreEqual(innerException.Message, "Max PlaceId's exceeded");
        }
コード例 #25
0
        public void SpeedLimitsWhenKeyIsStringEmptyTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key  = string.Empty,
                Path = new[] { new Location(0, 0) }
            };

            var exception = Assert.Throws <AggregateException>(() => GoogleMaps.SpeedLimits.Query(request));

            Assert.IsNotNull(exception);
            Assert.AreEqual("One or more errors occurred.", exception.Message);

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException), innerException.GetType());
            Assert.AreEqual(innerException.Message, "Key is required");
        }
コード例 #26
0
        public void SpeedLimitsWhenPathIsEmptyAndPlaceIdsIsEmptyTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key      = this.ApiKey,
                Path     = new Location[0],
                PlaceIds = new string[0]
            };

            var exception = Assert.Throws <AggregateException>(() => GoogleMaps.SpeedLimits.QueryAsync(request).Wait());

            Assert.IsNotNull(exception);
            Assert.AreEqual("One or more errors occurred.", exception.Message);

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException), innerException.GetType());
            Assert.AreEqual(innerException.Message, "Path or PlaceId's is required");
        }
コード例 #27
0
        public void SpeedLimitsAsyncWhenTimeoutTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key = this.ApiKey,
                Path = new[] { new Entities.Maps.Roads.Common.Location(0, 0) }
            };
            var exception = Assert.Throws<AggregateException>(() =>
            {
                var result = GoogleMaps.SpeedLimits.QueryAsync(request, TimeSpan.FromMilliseconds(1)).Result;
                Assert.IsNull(result);
            });

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "One or more errors occurred.");

            var innerException = exception.InnerException;
            Assert.IsNotNull(innerException);
            Assert.AreEqual(innerException.GetType(), typeof(TaskCanceledException));
            Assert.AreEqual(innerException.Message, "A task was canceled.");
        }
コード例 #28
0
        public void SpeedLimitsWhenInvalidKeyTest()
        {
            var request = new SpeedLimitsRequest
            {
                Key  = "test",
                Path = new[]
                {
                    new Location(60.170880, 24.942795),
                    new Location(60.170879, 24.942796),
                    new Location(60.170877, 24.942796)
                }
            };

            var exception = Assert.Throws <AggregateException>(() => GoogleMaps.SpeedLimits.QueryAsync(request).Wait());

            Assert.IsNotNull(exception);

            var innerException = exception.InnerExceptions.FirstOrDefault();

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException).ToString(), innerException.GetType().ToString());
            Assert.AreEqual("Response status code does not indicate success: 400 (Bad Request).", innerException.Message);
        }