public void CanFindASingleBlock() { var results = default(IEnumerable<Block>); var board = default(IBoard); var blockFinder = default(BlockFinder); "Given I have a board that contains one block".Context(() => { board = new BoardFactory().Create(); var boardFillerOneBlock = new BoardFillerOneBlock(); boardFillerOneBlock.Fill(board); blockFinder = new BlockFinder(); }); "When I find blocks".Do(() => results = blockFinder.Find(board)); "Then 1 block should be returned" .Observation(() => results.Count().ShouldEqual(1)); "Then 1 board coordinate should be at 3, 1" .Observation(() => results.First().BoardCoordinates.Count(s => s.X == 3 && s.Y == 1).ShouldEqual(1)); "Then 1 board coordinate should be at 4, 1" .Observation(() => results.First().BoardCoordinates.Count(s => s.X == 4 && s.Y == 1).ShouldEqual(1)); "Then 1 board coordinate should be at 3, 2" .Observation(() => results.First().BoardCoordinates.Count(s => s.X == 3 && s.Y == 2).ShouldEqual(1)); "Then 1 board coordinate should be at 4, 2" .Observation(() => results.First().BoardCoordinates.Count(s => s.X == 4 && s.Y == 2).ShouldEqual(1)); }
public void CanFindMultipleBlocksInDifferentPartsOfGrid() { var results = default(IEnumerable<Block>); var board = default(IBoard); var blockFinder = default(BlockFinder); "Given I have a board that contains two blocks".Context(() => { board = new BoardFactory().Create(); var boardFillerTwoBlocks = new BoardFillerTwoBlocks(); boardFillerTwoBlocks.Fill(board); blockFinder = new BlockFinder(); }); "When I find blocks".Do(() => results = blockFinder.Find(board)); "Then 2 blocks should be returned" .Observation(() => results.Count().ShouldEqual(2)); "Then 1 board coordinate in the first block should be at 3, 1" .Observation(() => results.First().BoardCoordinates.Count(s => s.X == 3 && s.Y == 1).ShouldEqual(1)); "Then 1 board coordinate in the first block should be at 4, 1" .Observation(() => results.First().BoardCoordinates.Count(s => s.X == 4 && s.Y == 1).ShouldEqual(1)); "Then 1 board coordinate in the first block should be at 3, 2" .Observation(() => results.First().BoardCoordinates.Count(s => s.X == 3 && s.Y == 2).ShouldEqual(1)); "Then 1 board coordinate in the first block should be at 4, 2" .Observation(() => results.First().BoardCoordinates.Count(s => s.X == 4 && s.Y == 2).ShouldEqual(1)); "Then 1 board coordinate in the second block should be at 3, 6" .Observation(() => results.ToList()[1].BoardCoordinates.Count(s => s.X == 3 && s.Y == 6).ShouldEqual(1)); "Then 1 board coordinate in the second block should be at 4, 6" .Observation(() => results.ToList()[1].BoardCoordinates.Count(s => s.X == 4 && s.Y == 6).ShouldEqual(1)); "Then 1 board coordinate in the second block should be at 3, 7" .Observation(() => results.ToList()[1].BoardCoordinates.Count(s => s.X == 3 && s.Y == 7).ShouldEqual(1)); "Then 1 board coordinate in the second block should be at 4, 7" .Observation(() => results.ToList()[1].BoardCoordinates.Count(s => s.X == 4 && s.Y == 7).ShouldEqual(1)); }
public void CanDetectWhenThereAreNoBlocksPresent() { var results = default(IEnumerable<Block>); var board = default(IBoard); var blockFinder = default(BlockFinder); "Given I have a board that contains no blocks".Context(() => { board = new BoardFactory().Create(); var numericalBoardFiller = new NumericalBoardFiller(); numericalBoardFiller.Fill(board); blockFinder = new BlockFinder(); }); "When I find blocks".Do(() => results = blockFinder.Find(board)); "Then no blocks should be returned" .Observation(() => results.Count().ShouldEqual(0)); }