🩹 Pass params by vals instead of by refs
continuous-integration/drone/push Build is passing Details

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/50/head
Alexis Drai 2 years ago
parent e9f628c2da
commit dcb9de97e5

@ -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