Sets the spawn in the backend when player is created, and other fixes :p

This commit is contained in:
Martin Berg Alstad
2023-07-14 19:14:19 +02:00
parent 63502405e1
commit 47196161ac
22 changed files with 276 additions and 124 deletions

View File

@ -11,27 +11,49 @@ namespace BackendTests.Services;
public class ActionServiceTests
{
private readonly IPlayer _blackPlayer = Players.Create("black");
private readonly IPlayer _redPlayer = Players.Create("red");
private readonly IPlayer _whitePlayer = Players.Create("white");
private readonly Player _blackPlayer = (Player)Players.Create("black");
private readonly Player _redPlayer = (Player)Players.Create("red");
private readonly Player _whitePlayer = (Player)Players.Create("white");
private ActionMessage _blackMessage = null!;
private ActionMessage _redMessage = null!;
private IActionService _service = null!;
private Queue<DirectionalPosition> _spawns = null!;
private ActionMessage _whiteMessage = null!;
private IWebSocketService _wssSub = null!;
[SetUp]
public void Setup()
{
_spawns = CreateQueue();
_whiteMessage = new ActionMessage
{ Action = GameAction.PlayerInfo, Data = JsonSerializer.Serialize(_whitePlayer) };
{
Action = GameAction.PlayerInfo,
Data = JsonSerializer.Serialize(new { Player = _whitePlayer, Spawns = CreateQueue() })
};
_blackMessage = new ActionMessage
{ Action = GameAction.PlayerInfo, Data = JsonSerializer.Serialize(_blackPlayer) };
_redMessage = new ActionMessage { Action = GameAction.PlayerInfo, Data = JsonSerializer.Serialize(_redPlayer) };
{
Action = GameAction.PlayerInfo,
Data = JsonSerializer.Serialize(new { Player = _blackPlayer, Spawns = CreateQueue() })
};
_redMessage = new ActionMessage
{
Action = GameAction.PlayerInfo,
Data = JsonSerializer.Serialize(new { Player = _redPlayer, Spawns = CreateQueue() })
};
_wssSub = Substitute.For<WebSocketService>(Substitute.For<ILogger<WebSocketService>>());
_service = new ActionService(Substitute.For<ILogger<ActionService>>(), _wssSub);
}
private static Queue<DirectionalPosition> CreateQueue() =>
new(new[]
{
new DirectionalPosition { At = new Position { X = 3, Y = 3 }, Direction = Direction.Up },
new() { At = new Position { X = 7, Y = 7 }, Direction = Direction.Down }
});
#region RollDice()
[Test]
@ -74,6 +96,9 @@ public class ActionServiceTests
{
var players = _service.SetPlayerInfo(_whiteMessage);
var pos = _spawns.Dequeue();
_whitePlayer.PacMan.Position = pos;
_whitePlayer.PacMan.SpawnPosition = pos;
Assert.That(new List<IPlayer> { _whitePlayer }, Is.EqualTo(players));
}
@ -140,7 +165,7 @@ public class ActionServiceTests
[Test]
public void Ready_TwoReady()
{
var group = new GameGroup { Players = { _blackPlayer, _whitePlayer } };
var group = new GameGroup(new Queue<DirectionalPosition>()) { Players = { _blackPlayer, _whitePlayer } };
_service.Group = group;
_service.Player = _blackPlayer;

View File

@ -9,17 +9,34 @@ namespace BackendTests.Services;
public class GameGroupTests
{
private readonly DirectionalPosition _spawn3By3Up = new()
{ At = new Position { X = 3, Y = 3 }, Direction = Direction.Up };
private readonly DirectionalPosition _spawn7By7Down = new()
{ At = new Position { X = 7, Y = 7 }, Direction = Direction.Down };
private readonly DirectionalPosition _spawn7By7Left = new()
{ At = new Position { X = 7, Y = 7 }, Direction = Direction.Left };
private readonly DirectionalPosition _spawn7By7Right = new()
{ At = new Position { X = 7, Y = 7 }, Direction = Direction.Right };
private IPlayer _bluePlayer = null!;
private GameGroup _gameGroup = null!;
private IPlayer _greenPlayer = null!;
private IPlayer _purplePlayer = null!;
private IPlayer _redPlayer = null!;
private Queue<DirectionalPosition> _spawns = null!;
private IPlayer _yellowPlayer = null!;
[SetUp]
public void Setup()
{
_gameGroup = new GameGroup();
_spawns = new Queue<DirectionalPosition>(
new[] { _spawn3By3Up, _spawn7By7Left, _spawn7By7Down, _spawn7By7Right });
_gameGroup = new GameGroup(_spawns);
_redPlayer = Players.Create("red");
_bluePlayer = Players.Create("blue");
_yellowPlayer = Players.Create("yellow");
@ -70,6 +87,14 @@ public class GameGroupTests
Assert.That(_redPlayer.State, Is.EqualTo(State.WaitingForPlayers));
}
[Test]
public void AddPlayer_AddSpawnPosition()
{
_gameGroup.AddPlayer(_redPlayer);
Assert.That(_redPlayer.PacMan.SpawnPosition, Is.Not.Null);
Assert.That(_redPlayer.PacMan.SpawnPosition, Is.EqualTo(_spawn3By3Up));
}
#endregion
#region Sendtoall(ArraySegment<byte> segment)

View File

@ -11,12 +11,25 @@ namespace BackendTests.Services;
public class WebSocketServiceTests
{
private readonly DirectionalPosition _spawn3By3Up = new()
{ At = new Position { X = 3, Y = 3 }, Direction = Direction.Up };
private IWebSocketService _service = null!;
private Queue<DirectionalPosition> _spawns = null!;
[SetUp]
public void SetUp()
{
_service = new WebSocketService(Substitute.For<ILogger<WebSocketService>>());
_spawns = new Queue<DirectionalPosition>(new[]
{
_spawn3By3Up,
new DirectionalPosition { At = new Position { X = 7, Y = 7 }, Direction = Direction.Down },
new DirectionalPosition { At = new Position { X = 7, Y = 7 }, Direction = Direction.Down },
new DirectionalPosition { At = new Position { X = 7, Y = 7 }, Direction = Direction.Down }
});
}
#region Send(Websocket, ArraySegment<byte>)
@ -135,7 +148,7 @@ public class WebSocketServiceTests
public void AddPlayer_ToEmptyGroup()
{
var player = Players.Create("white");
var group = _service.AddPlayer(player);
var group = _service.AddPlayer(player, _spawns);
Assert.Multiple(() =>
{
@ -151,12 +164,12 @@ public class WebSocketServiceTests
for (var i = 0; i < 4; i++)
{
var player = Players.Create(i.ToString());
_service.AddPlayer(player);
_service.AddPlayer(player, _spawns);
}
var player5 = Players.Create("white");
var group = _service.AddPlayer(player5);
var group = _service.AddPlayer(player5, new Queue<DirectionalPosition>(new[] { _spawn3By3Up }));
Assert.Multiple(() =>
{