public void ShouldReturnShipWithAllPositions() { var ship = new DummyShip(4); _subject.GeneratePositionsForShip(ship).Select(position => position.Occupant).Distinct().Single() .Should().Be(ship); }
public void ShouldReturnAsManyPositionsAsMasts() { var ship = new DummyShip(3); StubRandomNumberGeneration(6); _subject.GeneratePositionsForShip(ship).Should().HaveCount(ship.NumberOfMasts); }
public void WhenPlacingShipVertically_ShouldGenerateVerticalInitialPositionBetweenZeroAndBoardSizeMinusOneMinusShipSize() { var ship = new DummyShip(4); A.CallTo(() => _randomGeneratorDouble.GenerateRandomBool()).Returns(false); _subject.GeneratePositionsForShip(ship); A.CallTo(() => _randomGeneratorDouble.GenerateRandomNumber(0, Board.Size - 1 - ship.NumberOfMasts)) .MustHaveHappenedOnceExactly(); }
public void WhenAllMastsHit_ShouldBeSunk() { var subject = new DummyShip(4); subject.ReportHit(); subject.ReportHit(); subject.ReportHit(); subject.ReportHit(); subject.IsSunk.Should().BeTrue(); }