plus simple
All checks were successful
Main Build Process / Build & Test (pull_request) Successful in 1m42s
check main state / build (8.0.x) (push) Successful in 55s
Main Build Process / Build & Test (push) Successful in 1m23s

This commit was merged in pull request #13.
This commit is contained in:
2024-09-03 20:59:49 +02:00
parent 4a5fc49c31
commit 0503e95d64
6 changed files with 21 additions and 69 deletions

View File

@@ -17,6 +17,7 @@ public class MatchTesting
Match match2 = new Match(getter); Match match2 = new Match(getter);
match2.AddPlayer("Player1"); match2.AddPlayer("Player1");
match2.AddPlayer("Player2"); match2.AddPlayer("Player2");
Assert.Throws<MatchConfigException>(() => match2.AddPlayer("Player2"));
match2.Init(); match2.Init();
Match match3 = new Match(getter); Match match3 = new Match(getter);
@@ -51,10 +52,23 @@ public class MatchTesting
PlayerZone player1 = match.GetPlayerZone("Player1"); PlayerZone player1 = match.GetPlayerZone("Player1");
PlayerZone player1_3 = match.GetPlayerZone("Player2"); PlayerZone player1_3 = match.GetPlayerZone("Player2");
Assert.Equal(3, player1.Ressources[Enums.ResourceType.Piece]); Assert.Equal(3, player1.Ressources[Enums.ResourceType.Piece]);
player1.AddRessources(ResourceType.Piece, 1); player1.AddRessources(ResourceType.Piece, 1);
Assert.Equal(3, player1_3.Ressources[Enums.ResourceType.Piece]); Assert.Equal(3, player1_3.Ressources[Enums.ResourceType.Piece]);
Assert.Equal(4, player1.Objectives.Count); Assert.Equal(4, player1.Objectives.Count);
} }
[Fact]
public void MatchGetters()
{
StaticDataGetter getter = new();
Match match = new Match(getter);
match.AddPlayer("Player1");
match.AddPlayer("Player2");
match.Init();
Assert.Throws<ArgumentException>(() => match.GetPlayerZone("UnknownPlayer"));
}
} }

View File

@@ -1,36 +0,0 @@
using LittleTown.Core.Actions;
using LittleTown.StaticDataAcces;
namespace LittleTown.Core.Tests;
public class MatchUpdaterTesting
{
private class TestAction : IAction
{
public Action<MatchUpdater> CB { get; init; } = delegate { };
public void Execute(MatchUpdater updater)
{
CB(updater);
}
}
[Fact]
public void EnforcePlayerCountInMatchCreation()
{
StaticDataGetter getter = new StaticDataGetter();
Match match = new Match(getter);
match.AddPlayer("Player1");
match.AddPlayer("Player2");
match.Init();
TestAction ta = new TestAction()
{
CB = (updater) =>
{
Assert.True(updater.GetMatch() == match);
}
};
}
}

View File

@@ -6,10 +6,10 @@ namespace LittleTown.Core.Actions;
public class EmptyAction : IAction public class EmptyAction : IAction
{ {
/// <inheritdoc/> /// <inheritdoc/>
public void Execute(MatchUpdater updater) public void Execute(Match match)
{ {
ArgumentNullException.ThrowIfNull(updater); ArgumentNullException.ThrowIfNull(match);
updater.NextPlayer(); match.NextPlayer();
} }
} }

View File

@@ -8,6 +8,6 @@ public interface IAction
/// <summary> /// <summary>
/// Methode demandant a l'action d'appliquer ses changement au match /// Methode demandant a l'action d'appliquer ses changement au match
/// </summary> /// </summary>
/// <param name="updater">une interface permettant de modifier le match, elle est valide que la durée de l'appel d'execute</param> /// <param name="match">le match a modifier avec cette action</param>
public void Execute(MatchUpdater updater); public void Execute(Match match);
} }

View File

@@ -1,21 +0,0 @@
namespace LittleTown.Core.Actions;
using LittleTown.Core;
using LittleTown.Core.Enums;
/// <summary>
/// Ceci est une structure offrant des méthodes pour modifier les données d'un match
/// Il permet aux actions de modifier des valeurs qui sont privées
/// </summary>
public class MatchUpdater
{
/// <summary> Permet de récupérer le match qui sera modifié par cet updater </summary>
public required Func<Match> GetMatch { get; init; }
/// <summary> Permet d'ajouter des ressources a un joueur </summary>
public required Action<ResourceType> AddRessourceToPlayer { get; init; }
/// <summary> demande au match de changer de joueur en cours </summary>
public required Action NextPlayer { get; init; }
}

View File

@@ -86,12 +86,7 @@ public class Match
} }
//autoriser l'action a s'executer en lui donner les getters dont elle a besoin //autoriser l'action a s'executer en lui donner les getters dont elle a besoin
action.Execute(new MatchUpdater() action.Execute(this);
{
GetMatch = () => { return this; },
AddRessourceToPlayer = (resourceType) => { },
NextPlayer = NextPlayer
});
} }
/// <summary> Initialiser la partie, il faut avoir ajouté les joueurs au préalable </summary> /// <summary> Initialiser la partie, il faut avoir ajouté les joueurs au préalable </summary>
@@ -171,7 +166,7 @@ public class Match
} }
return result; return result;
} }
private void NextPlayer() public void NextPlayer()
{ {
_currentPlayerIndex++; _currentPlayerIndex++;
if (_currentPlayerIndex >= _players.Count) if (_currentPlayerIndex >= _players.Count)