ActionService tests and Equality

This commit is contained in:
Martin Berg Alstad
2023-07-12 14:07:32 +02:00
parent 27d13caf5d
commit ea2f31b905
9 changed files with 147 additions and 83 deletions

View File

@ -1,6 +1,11 @@
using System.Text.Json;
using BackendTests.TestUtils;
using Microsoft.CSharp.RuntimeBinder;
using Microsoft.Extensions.Logging;
using NSubstitute;
using pacMan.Game;
using pacMan.Game.Interfaces;
using pacMan.Game.Items;
using pacMan.Interfaces;
using pacMan.Services;
@ -9,13 +14,13 @@ namespace BackendTests.Services;
public class ActionServiceTests
{
private IActionService _service = null!;
private IWebSocketService _wssMock = null!;
private IWebSocketService _wssSub = null!;
[SetUp]
public void Setup()
{
_wssMock = Substitute.For<WebSocketService>(Substitute.For<ILogger<WebSocketService>>());
_service = new ActionService(Substitute.For<ILogger<ActionService>>(), _wssMock);
_wssSub = Substitute.For<WebSocketService>(Substitute.For<ILogger<WebSocketService>>());
_service = new ActionService(Substitute.For<ILogger<ActionService>>(), _wssSub);
}
#region RollDice()
@ -47,13 +52,26 @@ public class ActionServiceTests
[Test]
public void PlayerInfo_DataIsNotPlayer()
{
Assert.Fail();
var message = new ActionMessage
{
Action = GameAction.PlayerInfo,
Data = new Box { Colour = "white", Pellets = new List<Pellet>() }
};
Assert.Throws<RuntimeBinderException>(() => _service.PlayerInfo(message));
}
[Test]
public void PlayerInfo_DataIsPlayer()
{
Assert.Fail();
var player = Players.Create("white");
var message = new ActionMessage
{
Action = GameAction.PlayerInfo,
Data = JsonSerializer.Serialize(player)
};
var players = _service.PlayerInfo(message);
Assert.That(new List<IPlayer> { player }, Is.EqualTo(players));
}
#endregion

View File

@ -1,7 +1,7 @@
using BackendTests.TestUtils;
using pacMan.Exceptions;
using pacMan.Game;
using pacMan.Game.Interfaces;
using pacMan.Game.Items;
using pacMan.Services;
using pacMan.Utils;
@ -20,72 +20,13 @@ public class GameGroupTests
public void Setup()
{
_gameGroup = new GameGroup();
const string redColour = "red";
_redPlayer = new Player
{
Name = "Red",
Colour = redColour,
PacMan = CreatePacMan(redColour),
Box = CreateBox(redColour)
};
const string blueColour = "blue";
_bluePlayer = new Player
{
Name = "Blue",
Colour = blueColour,
PacMan = CreatePacMan(blueColour),
Box = CreateBox(blueColour)
};
const string yellowColour = "yellow";
_yellowPlayer = new Player
{
Name = "Yellow",
Colour = yellowColour,
PacMan = CreatePacMan(yellowColour),
Box = CreateBox(yellowColour)
};
const string greenColour = "green";
_greenPlayer = new Player
{
Name = "Green",
Colour = greenColour,
PacMan = CreatePacMan(greenColour),
Box = CreateBox(greenColour)
};
const string purpleColour = "purple";
_purplePlayer = new Player
{
Name = "Purple",
Colour = purpleColour,
PacMan = CreatePacMan(purpleColour),
Box = CreateBox(purpleColour)
};
_redPlayer = Players.Create("red");
_bluePlayer = Players.Create("blue");
_yellowPlayer = Players.Create("yellow");
_greenPlayer = Players.Create("green");
_purplePlayer = Players.Create("purple");
}
private static Character CreatePacMan(string colour) =>
new()
{
Colour = colour,
IsEatable = true,
Type = CharacterType.PacMan
};
private static Box CreateBox(string colour) =>
new()
{
Colour = colour,
Pellets = new List<Pellet>()
};
private static IPlayer Clone(IPlayer player) =>
new Player
{
Box = player.Box,
Colour = player.Colour,
Name = player.Name,
PacMan = player.PacMan
};
private void AddFullParty()
{
_gameGroup.AddPlayer(_bluePlayer);
@ -115,7 +56,7 @@ public class GameGroupTests
[Test]
public void AddPlayer_WhenNameExists()
{
var redClone = Clone(_redPlayer);
var redClone = Players.Clone(_redPlayer);
_gameGroup.AddPlayer(_redPlayer);
var added = _gameGroup.AddPlayer(redClone);
Assert.That(added, Is.True);