Ejemplo n.º 1
0
        public async Task <MazebotSolverImageResponse> GetMapImage(string sessionId, string mazeId, bool includeSolution)
        {
            var session = await _repository.Get(sessionId);

            if (!session.Any())
            {
                return(null);
            }

            var maze = session.SingleOrDefault(r => string.Equals(r.Response?.MazeId, mazeId));

            if (maze == null)
            {
                return(null);
            }

            var response = new MazebotSolverImageResponse();
            var map      = new Map(maze.Response.Maze.Map);
            var start    = maze.Response.Maze.StartingPosition;
            var solution = maze.Response.Solution.PathTaken;

            using (var image = _imager.GetImage(map, start[0], start[1], solution, includeSolution))
            {
                if (image == null)
                {
                    return(null);
                }

                using (var stream = new MemoryStream())
                {
                    if (image.Frames.Count > 1)
                    {
                        image.SaveAsGif(stream);
                        response.ContentType = "image/gif";
                    }
                    else
                    {
                        image.SaveAsPng(stream);
                        response.ContentType = "image/png";
                    }

                    response.Image = stream.ToArray();
                }
            }

            return(response);
        }
Ejemplo n.º 2
0
        public async void GetMapSolution_Should_Return_Correctly()
        {
            var service  = Substitute.For <IMazebotSolver>();
            var response = new MazebotSolverImageResponse
            {
                Image       = new byte[] { 1, 2, 3 },
                ContentType = "application/json"
            };

            service.GetMapImage(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <bool>()).Returns(response);

            var actual = await _controller.GetMapSolution(service, "sessionId", "mazeId");

            actual.Should().BeOfType <FileContentResult>();
            actual.As <FileContentResult>().FileContents.Should().BeSameAs(response.Image);
            actual.As <FileContentResult>().ContentType.Should().Be(response.ContentType);
        }