🩹 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 3 years ago
parent ae063bb58a
commit fd00107e5f

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

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

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

Loading…
Cancel
Save