private void TestCombat( string[] input, string[] expectedResult, int expectedRounds, int expectedHitpoints, int expectedScore) { var cave = new Cave(input); var numRounds = 0; while (!cave.Act()) { numRounds += 1; } Assert.Equal(expectedRounds, numRounds); Assert.Equal(expectedHitpoints, cave.SumHitpoints); Assert.Equal(expectedScore, numRounds * cave.SumHitpoints); var result = cave.GetState(); Assert.Equal(expectedResult.Length, result.Length); for (var i = 0; i < expectedResult.Length; i++) { Assert.Equal(expectedResult[i], result[i]); } }
public void Part1() { var cave = new Cave(_input); var numRounds = 0; while (!cave.Act()) { numRounds += 1; } Assert.Equal(0, numRounds * cave.SumHitpoints); }
public void CaveShouldMoveCreatures() { var input = new[] { "#########", "#G..G..G#", "#.......#", "#.......#", "#G..E..G#", "#.......#", "#.......#", "#G..G..G#", "#########", }; var numMoves = 3; var expectedResult = new[] { "#########", "#.......#", "#..GGG..#", "#..GEG..#", "#G..G...#", "#......G#", "#.......#", "#.......#", "#########", }; var cave = new Cave(input); for (var i = 0; i < numMoves; i++) { cave.Act(allowAttacks: false); } var result = cave.GetState(); Assert.Equal(expectedResult.Length, result.Length); for (var i = 0; i < expectedResult.Length; i++) { Assert.Equal(expectedResult[i], result[i]); } }