🩹 Pass params by vals instead of by refs

if we pass parameters by reference, it must be because we want to
change them in the method and to keep those changes.
This seems like a different situation, so we should be able
to pass the objects by value.
pull/52/head
Alexis Drai 2 years ago
parent ae063bb58a
commit fd00107e5f

@ -3,10 +3,10 @@ namespace Model
{
public interface IManager<T>
{
public T Add(ref T toAdd);
public T Add(T toAdd);
public T GetOneById(int id);
public IEnumerable<T> GetAll();
public T Update(ref T before, ref T after);
public void Remove(ref T toRemove);
public T Update(T before, T after);
public void Remove(T toRemove);
}
}

@ -26,7 +26,7 @@ namespace Model
/// </summary>
/// <param name="toAdd">player to be added</param>
/// <returns>added player, or null if <paramref name="toAdd"/> was null</returns>
public Player Add(ref Player toAdd)
public Player Add(Player toAdd)
{
if (toAdd != null)
{
@ -76,17 +76,17 @@ namespace Model
/// <param name="before">player to be updated</param>
/// <param name="after">player in the state that it needs to be in after the update</param>
/// <returns>updated player</returns>
public Player Update(ref Player before, ref Player after)
public Player Update(Player before, Player after)
{
Remove(ref before);
return Add(ref after);
Remove(before);
return Add(after);
}
/// <summary>
/// remove a player
/// </summary>
/// <param name="toRemove">player to be removed</param>
public void Remove(ref Player toRemove)
public void Remove(Player toRemove)
{
players.Remove(toRemove);
}

@ -41,8 +41,8 @@ namespace Tests.Model_UTs
// Act
HashSet<Player> actual = new()
{
playerManager.Add(ref alice),
playerManager.Add(ref bob)
playerManager.Add(alice),
playerManager.Add(bob)
};
// Assert
@ -59,7 +59,7 @@ namespace Tests.Model_UTs
// Act
expected = null;
actual = playerManager.Add(ref expected);
actual = playerManager.Add(expected);
// Assert
Assert.Equal(expected, actual);
@ -89,7 +89,7 @@ namespace Tests.Model_UTs
// Arrange
PlayerManager playerManager = new();
Player player = new("Bob");
playerManager.Add(ref player);
playerManager.Add(player);
// Act
Player result = playerManager.GetOneByName(name);
@ -104,7 +104,7 @@ namespace Tests.Model_UTs
// Arrange
PlayerManager playerManager = new();
Player player = new("Bob");
playerManager.Add(ref player);
playerManager.Add(player);
// Act
Player result = playerManager.GetOneByName("Clyde");
@ -123,7 +123,7 @@ namespace Tests.Model_UTs
// Arrange
PlayerManager playerManager = new();
Player expected = new("Bob");
playerManager.Add(ref expected);
playerManager.Add(expected);
// Act
Player actual = playerManager.GetOneByName(name);
@ -138,10 +138,10 @@ namespace Tests.Model_UTs
// Arrange
PlayerManager playerManager = new();
Player p1 = new("Dylan");
playerManager.Add(ref p1);
playerManager.Add(p1);
// Act
playerManager.Remove(ref p1);
playerManager.Remove(p1);
// Assert
Assert.DoesNotContain(p1, playerManager.GetAll());
@ -153,12 +153,12 @@ namespace Tests.Model_UTs
// Arrange
PlayerManager playerManager = new();
Player player = new("Dylan");
playerManager.Add(ref player);
playerManager.Add(player);
Player notPlayer = null;
HashSet<Player> expected = new() { player };
// Act
playerManager.Remove(ref notPlayer);
playerManager.Remove(notPlayer);
HashSet<Player> actual = (HashSet<Player>)playerManager.GetAll();
// Assert
@ -171,12 +171,12 @@ namespace Tests.Model_UTs
// Arrange
PlayerManager playerManager = new();
Player player = new("Dylan");
playerManager.Add(ref player);
playerManager.Add(player);
Player notPlayer = new("Eric");
HashSet<Player> expected = new() { player };
// Act
playerManager.Remove(ref notPlayer);
playerManager.Remove(notPlayer);
HashSet<Player> actual = (HashSet<Player>)playerManager.GetAll();
// Assert
@ -189,11 +189,11 @@ namespace Tests.Model_UTs
// Arrange
PlayerManager playerManager = new();
Player oldPlayer = new("Dylan");
playerManager.Add(ref oldPlayer);
playerManager.Add(oldPlayer);
Player newPlayer = new("Eric");
// Act
playerManager.Update(ref oldPlayer, ref newPlayer);
playerManager.Update(oldPlayer, newPlayer);
// Assert
Assert.DoesNotContain(oldPlayer, playerManager.GetAll());
@ -207,11 +207,11 @@ namespace Tests.Model_UTs
string name = "Filibert";
PlayerManager playerManager = new();
Player oldPlayer = new(name);
playerManager.Add(ref oldPlayer);
playerManager.Add(oldPlayer);
Player newPlayer = new(name);
// Act
playerManager.Update(ref oldPlayer, ref newPlayer);
playerManager.Update(oldPlayer, newPlayer);
// Assert
Assert.Contains(oldPlayer, playerManager.GetAll());

Loading…
Cancel
Save