Skip to content

Commit

Permalink
Fix broken tests!
Browse files Browse the repository at this point in the history
  • Loading branch information
nightblade9 committed Dec 14, 2024
1 parent 4637c4a commit f5fb176
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -1,24 +1,28 @@
using NUnit.Framework;
using TextBlade.Core.Commands.Display;
using TextBlade.Core.IO;

namespace TextBlade.Core.Tests.Commands.Display;

[TestFixture]
public class ShowHelpCommandTests
{
[Test]
public void Execute_ReturnsABunchOfCommands()
[TestCase("credits")]
[TestCase("help")]
[TestCase("inv")]
[TestCase("look")]
[TestCase("party/status")]
[TestCase("save")]
[TestCase("quit")]
public void Execute_ReturnsABunchOfCommands(string expectedCommand)
{
// Arrange/Act
var actuals = new ShowHelpCommand().Execute(null, null);

// Assert
// Check a bunch of commands
foreach (var expectedCommand in new string[] {"credits", "help", "quit"})
{
var expected = $"[red]{expectedCommand}[/]".ToUpperInvariant();
var actual = actuals.Single(a => a.ToUpperInvariant().Contains(expected));
Assert.That(actual.ToUpperInvariant(), Does.Contain(expected));
}
var expected = $"[{Colours.Command}]{expectedCommand}[/]".ToUpperInvariant();
var actual = actuals.Single(a => a.ToUpperInvariant().Contains(expected));
Assert.That(actual.ToUpperInvariant(), Does.Contain(expected));
}
}
44 changes: 26 additions & 18 deletions source/TextBlade.Core.Tests/Locations/DungeonTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -116,47 +116,47 @@ public void OnVictory_DoesNotGrantsLoot_OnNonLootFloors()
[TestCase(-1)]
[TestCase(-11)]
[TestCase(-111111)]
public void SetState_ThrowsIfFloorNumberIsNegative(int floorNumber)
public void SetStateBasedOnCustomSaveData_ThrowsIfFloorNumberIsNegative(int floorNumber)
{
// Arrange
var dungeon = new Dungeon(null, "Test Dungeon", "N/A", 7, ["Troll"], "Nobody");

// Act/Assert
var ex = Assert.Throws<ArgumentOutOfRangeException>(() => dungeon.SetState(floorNumber, true));
var ex = Assert.Throws<ArgumentOutOfRangeException>(() => dungeon.SetStateBasedOnCustomSaveData(MakeCustomData(floorNumber, true)));
Assert.That(ex, Is.Not.Null);
}

[Test]
public void SetState_SetsCurrentFloorNumber()
public void SetStateBasedOnCustomSaveData_SetsCurrentFloorNumber()
{
// Arrange
var dungeon = new Dungeon(null, "North Seaside Cave", "N/A", 1, ["Vole"], "Nobody");
var dungeon = new Dungeon(null, "North Seaside Cave", "N/A", 40, ["Vole"], "Nobody");

// Act
dungeon.SetState(33, false);
dungeon.SetStateBasedOnCustomSaveData(MakeCustomData(33, false));

// Assert
Assert.That(dungeon._currentFloorNumber, Is.EqualTo(33));
Assert.That(dungeon.GetCustomSaveData()["CurrentFloor"], Is.EqualTo(33));
}

[Test]
public void SetState_DoesNotClearMonstersOrLoot_IfIsClearIsFalse()
public void SetStateBasedOnCustomSaveData_DoesNotClearMonstersOrLoot_IfIsClearIsFalse()
{
// Arrange
var floorNumber = 0;
var dungeon = new Dungeon(null, "South Seaside Cave", "N/A", 1, ["Mole"], "Nobody");
dungeon.FloorLoot[$"B{floorNumber + 1}"] = ["Troll Hair", "Vole Tail", "Moleskin"];

// Act
dungeon.SetState(floorNumber, false);
dungeon.SetStateBasedOnCustomSaveData(MakeCustomData(floorNumber, false));

// Assert
Assert.That(dungeon.FloorLoot[$"B{floorNumber + 1}"], Is.Not.Empty);
Assert.That(dungeon.GetExtraDescription(), Does.Contain("Mole"));
}

[Test]
public void SetState_ClearsMonstersOrLoot_IfIsClearIsTrue()
public void SetStateBasedOnCustomSaveData_ClearsMonstersOrLoot_IfIsClearIsTrue()
{
// Arrange
var floorNumber = 0;
Expand All @@ -165,7 +165,7 @@ public void SetState_ClearsMonstersOrLoot_IfIsClearIsTrue()
dungeon.FloorLoot[$"B{floorNumber + 2}"] = ["Vole Tail", "Moleskin"];

// Act
dungeon.SetState(floorNumber, true);
dungeon.SetStateBasedOnCustomSaveData(MakeCustomData(floorNumber, true));

// Assert
Assert.That(dungeon.FloorLoot[$"B{floorNumber + 1}"], Is.Empty);
Expand All @@ -192,7 +192,7 @@ public void GetExtraDescription_TellsYouThereAreNoMonsters_IfCleared()
{
// Arrange
var dungeon = CreateDungeon();
dungeon.SetState(0, true);
dungeon.SetStateBasedOnCustomSaveData(MakeCustomData(0, true));

// Act
var actual = dungeon.GetExtraDescription();
Expand Down Expand Up @@ -237,7 +237,7 @@ public void GetExtraMenuOptions_TellsYouYouCanDescend_IfTheFloorIsEmpty()
{
// Arrange
var dungeon = CreateDungeon();
dungeon.SetState(0, true);
dungeon.SetStateBasedOnCustomSaveData(MakeCustomData(0, true));

// Act
var actual = dungeon.GetExtraMenuOptions();
Expand All @@ -251,7 +251,7 @@ public void GetExtraMenuOptions_DoesNotTellYouYouCanDescend_IfTheFloorIsEmptyBut
{
// Arrange
var dungeon = CreateDungeon(1);
dungeon.SetState(0, true);
dungeon.SetStateBasedOnCustomSaveData(MakeCustomData(0, true));

// Act
var actual = dungeon.GetExtraMenuOptions();
Expand Down Expand Up @@ -296,13 +296,13 @@ public void GetCommandFor_IncrementsFloorNumber_IfYouCanDescend(string command)
{
// Arrange
var dungeon = CreateDungeon();
dungeon.SetState(0, true);
dungeon.SetStateBasedOnCustomSaveData(MakeCustomData(0, true));

// Act
dungeon.GetCommandFor(command);

// Assert
Assert.That(dungeon._currentFloorNumber, Is.EqualTo(1)); // base 0
Assert.That(dungeon.GetCustomSaveData()["CurrentFloor"], Is.EqualTo(1)); // base 0
}

[Test]
Expand All @@ -318,7 +318,7 @@ public void GetCommandFor_ReturnsDoNothingCommandForDescend_IfThereAreMonsters(s
var actual = dungeon.GetCommandFor(command);

// Assert
Assert.That(dungeon._currentFloorNumber, Is.EqualTo(0));
Assert.That(dungeon.GetCustomSaveData()["CurrentFloor"], Is.EqualTo(0));
Assert.That(actual, Is.InstanceOf<DoNothingCommand>());
}

Expand All @@ -330,13 +330,13 @@ public void GetCommandFor_ReturnsDoNothingCommandForDescend_IfItsTheBottomFloor(
{
// Arrange
var dungeon = CreateDungeon(1);
dungeon.SetState(0, true);
dungeon.SetStateBasedOnCustomSaveData(MakeCustomData(0, true));

// Act
var actual = dungeon.GetCommandFor(command);

// Assert
Assert.That(dungeon._currentFloorNumber, Is.EqualTo(0));
Assert.That(dungeon.GetCustomSaveData()["CurrentFloor"], Is.EqualTo(0));
Assert.That(actual, Is.InstanceOf<DoNothingCommand>());
}

Expand All @@ -347,6 +347,14 @@ private DungeonStub CreateDungeon(int numFloors = 5)
return dungeon;
}

private Dictionary<string, object> MakeCustomData(int floorNum, bool isFloorClear)
{
return new Dictionary<string, object>() {
{ "CurrentFloor", floorNum },
{ "IsClear", isFloorClear },
};
}

class DungeonStub : Dungeon
{
public DungeonStub(string name, string description, int numFloors, List<string> monsters, string boss, string? locationClass = null)
Expand Down
2 changes: 1 addition & 1 deletion source/TextBlade.Core/Locations/Dungeon.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class Dungeon : Location
// It's a list, one entry per floor.
// Each entry is a list of monsters and other stuff on that floor.
// I'm sure I'll put treasure and stuff in here eventually.
private readonly List<List<string>> _floorMonsters = [];
protected readonly List<List<string>> _floorMonsters = [];
private int _currentFloorNumber = 0;

private string _currentFloorLootKey => $"B{_currentFloorNumber + 1}";
Expand Down

0 comments on commit f5fb176

Please sign in to comment.