예제 #1
0
            public void Should_CalculateNumberOfTrees()
            {
                var lines = new List <string>
                {
                    "..##.......",
                    "#...#...#..",
                    ".#....#..#.",
                    "..#.#...#.#",
                    ".#...##..#.",
                    "..#.##.....",
                    ".#.#.#....#",
                    ".#........#",
                    "#.##...#...",
                    "#...##....#",
                    ".#..#...#.#"
                };

                int singleMoveX           = 3;
                int singleMoveY           = 1;
                var expectedNumberOfTrees = 7;
                var xmasTreeMap           = new XmasTreeMapRepositoryWrapper();
                var sut = new XmasTreeMapService(xmasTreeMap.MapLocationsFromLines(lines.ToArray()));

                var resultNumberOfTrees = sut.CountTrees(singleMoveX, singleMoveY);

                Assert.That(resultNumberOfTrees == expectedNumberOfTrees, $"{resultNumberOfTrees} : {expectedNumberOfTrees}");
            }
            public void Should_CreateMap_When_ValidLines()
            {
                var lines           = new string[] { ".#.", "#.#" };
                var sut             = new XmasTreeMapRepositoryWrapper();
                var expectedTreeMap = new List <MapLocation>()
                {
                    new MapLocation {
                        Type = PositionType.Open, XPosition = 0, YPosition = 0
                    },
                    new MapLocation {
                        Type = PositionType.Tree, XPosition = 1, YPosition = 0
                    },
                    new MapLocation {
                        Type = PositionType.Open, XPosition = 2, YPosition = 0
                    },
                    new MapLocation {
                        Type = PositionType.Tree, XPosition = 0, YPosition = 1
                    },
                    new MapLocation {
                        Type = PositionType.Open, XPosition = 1, YPosition = 1
                    },
                    new MapLocation {
                        Type = PositionType.Tree, XPosition = 2, YPosition = 1
                    },
                };

                var resultTreeMap = sut.MapLocationsFromLines(lines).ToList();

                // Line 1
                Assert.That(resultTreeMap.Count() == expectedTreeMap.Count, $"Count: {resultTreeMap.Count()} != {expectedTreeMap.Count}");
                for (var i = 0; i < resultTreeMap.Count; i++)
                {
                    Assert.That(resultTreeMap[i].Type == expectedTreeMap[i].Type, $"Type[{i}]: {resultTreeMap[i].Type} != {expectedTreeMap[i].Type}");
                    Assert.That(resultTreeMap[i].XPosition == expectedTreeMap[i].XPosition, $"XPosition[{i}]: {resultTreeMap[i].XPosition} != {expectedTreeMap[i].XPosition}");
                    Assert.That(resultTreeMap[i].YPosition == expectedTreeMap[i].YPosition, $"YPosition[{i}]: {resultTreeMap[i].YPosition} != {expectedTreeMap[i].YPosition}");
                }
            }
            public void Should_ThrowException_When_LineEmptyCollection()
            {
                var sut = new XmasTreeMapRepositoryWrapper();

                Assert.Throws <ArgumentOutOfRangeException>(() => sut.MapLocationsFromLines(Enumerable.Empty <string>().ToArray()));
            }
            public void Should_ThrowException_When_LinesNullCollection()
            {
                var sut = new XmasTreeMapRepositoryWrapper();

                Assert.Throws <ArgumentNullException>(() => sut.MapLocationsFromLines(null));
            }