示例#1
0
        public async Task GetTrafficIncidents_MapArea_ValidTrafficIncidents()
        {
            IRestRequest request     = null;
            var          serviceMock = new Mock <BingTraffic>();

            serviceMock.Setup(zc => zc.ExecuteAsync <Response>(It.IsAny <IRestRequest>()))
            .Callback <IRestRequest>(r => request = r)
            .CallBase();
            var service    = serviceMock.Object;
            var mapArea    = new MapArea(37, -105, 45, -94);
            var parameters = new TrafficIncidentsParameters(mapArea);

            var response = await service.GetTrafficIncidents(parameters);

            serviceMock.Verify(zc => zc.ExecuteAsync <Response>(It.IsAny <IRestRequest>()), Times.Once);
            Assert.That(response, Is.Not.Null);
            Assert.That(response.ResourceSets.Length, Is.GreaterThan(0));
            Assert.That(response.ResourceSets.First().Resources.OfType <TrafficIncident>().Count(), Is.GreaterThan(0));
            Assert.That(request, Is.Not.Null);
            Assert.That(request.Method, Is.EqualTo(Method.GET));
            Assert.That(request.Resource, Is.EqualTo("Traffic/Incidents/{MapArea}/"));
            Assert.That(request.Parameters.Find(x => x.Name == "version"), Is.Not.Null);
            Assert.That(request.Parameters.Find(x => x.Name == "key"), Is.Not.Null);
            Assert.That(request.Parameters.Find(x => x.Name == "o"), Is.Not.Null);
            Assert.That(request.Parameters.Find(x => x.Name == "c"), Is.Not.Null);
            Assert.That(request.Parameters.Find(x => x.Name == "MapArea"), Is.Not.Null);
            Assert.That(request.Parameters.Find(x => x.Name == "MapArea").Value, Is.EqualTo(mapArea.ToString()));
        }
示例#2
0
        private static void AddQueryParameters(TrafficIncidentsParameters parameters, RestRequest request)
        {
            if (parameters.MapArea == null)
            {
                throw new ArgumentNullException(
                          "MapArea",
                          "The area to search for traffic incident information is required for Traffic Incidents request.");
            }

            request.AddUrlSegment("MapArea", parameters.MapArea.ToString());

            if (parameters.IncludeLocationCodes != null)
            {
                request.AddQueryParameter("includeLocationCodes", parameters.IncludeLocationCodes.Value.ToString());
            }

            if (parameters.Severity != null)
            {
                request.AddQueryParameter("s", parameters.Severity.ToCSVString());
            }

            if (parameters.TrafficIncidentTypes != null)
            {
                request.AddQueryParameter("t", parameters.TrafficIncidentTypes.ToCSVString());
            }
        }
示例#3
0
        public async Task GetTrafficIncidents_NullMapArea_ArgumentNullException()
        {
            var serviceMock = new Mock <BingTraffic>();
            var service     = serviceMock.Object;
            var parameters  = new TrafficIncidentsParameters(null);

            try
            {
                var response = await service.GetTrafficIncidents(parameters);
            }
            catch (ArgumentNullException ex)
            {
                Assert.Pass();
            }

            Assert.Fail();
        }
示例#4
0
        public Task <Response> GetTrafficIncidents(TrafficIncidentsParameters parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException(
                          "parameters",
                          "Provide valid parameters for Traffic Incidents request.");
            }

            var request = new RestRequest("Traffic/Incidents/{MapArea}/", Method.GET);

            AddQueryParameters(parameters, request);

            var response = ExecuteAsync <Response>(request);

            return(response);
        }