public void OneMineMinefield_PropagationShouldUncoverAllButOne() { //Arrange IBooleansGenerator booleansGenerator = Substitute.For <IBooleansGenerator>(); booleansGenerator.GenerateBooleans(Arg.Any <int>(), Arg.Any <int>()) .Returns(x => { var r = new bool[(int)x[0]]; r[0] = true; //Only the first item will be set to true. return(r); }); int horizontalTilesCount = 5; int verticalTilesCount = 5; IMinefieldFactory factory = new MinefieldFactory(booleansGenerator); var minefield = factory.CreateNew(horizontalTilesCount, verticalTilesCount, 1); var someTile = minefield.Tiles[3][3]; //Act minefield.TilesCovered.ShouldBe(horizontalTilesCount * verticalTilesCount); someTile.UncoverTile(); //Assert minefield.TilesCovered.ShouldBe(1); }
public MinefieldFactory(IBooleansGenerator booleansGenerator) { this.booleansGenerator = booleansGenerator; }