Complete #27 and Fix #44
continuous-integration/drone/push Build is passing Details

pull/45/head
Alexis Drai 2 years ago
parent 0995660259
commit bfe20a653c

@ -20,7 +20,7 @@ namespace Model
else throw new ArgumentException("player name may never be empty or null");
}
}
private string name;
public Player(string name)
@ -28,6 +28,15 @@ namespace Model
Name = name;
}
public Player(Player player)
{
if (player != null)
{
Name = player.name;
}
else throw new ArgumentException("you may not make a copy of a null player");
}
public override string ToString()
{
return Name;

@ -55,10 +55,11 @@ namespace Model
/// <returns>player with said name</returns>
public Player GetOneByName(string name)
{
if (!String.IsNullOrEmpty(name))
if (!String.IsNullOrWhiteSpace(name) && !name.Equals(""))
{
Player result = players.Where(p => p.Name.Equals(name)).FirstOrDefault();
return new Player(result.Name); // will return null if no such player exists
Player result = players.FirstOrDefault(p => p.Name.Equals(name));
return new Player(result); // THIS IS A COPY (using a copy constructor)
// will return null by default if no such player exists
}
return null; // we also want ot return null if no name was provided
}

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tests.Model_UTs
{
internal class PlayerManagerTest
{
// TODO test that Player's copy constructer enables isolated changes
}
}

@ -26,7 +26,7 @@ namespace Tests.Model_UTs
Player player;
// Act
Action action = () => player = new(" ");
void action() => player = new(" ");
// Assert
Assert.Throws<ArgumentException>(action);
@ -39,7 +39,7 @@ namespace Tests.Model_UTs
Player player;
// Act
Action action = () => player = new("");
void action() => player = new("");
// Assert
Assert.Throws<ArgumentException>(action);
@ -50,9 +50,10 @@ namespace Tests.Model_UTs
{
// Arrange
Player player;
string name = null;
// Act
Action action = () => player = new(null);
void action() => player = new Player(name);
// Assert
Assert.Throws<ArgumentException>(action);
@ -98,6 +99,23 @@ namespace Tests.Model_UTs
Assert.False(player.Equals(point));
}
[Fact]
public void TestGoesThruIfObjIsPlayer()
{
// Arrange
Object p1;
Player p2;
// Act
p1 = new Player("Marvin");
p2 = new("Clyde");
// Assert
Assert.False(p1.Equals(p2));
Assert.False(p2.Equals(p1));
}
[Fact]
public void TestEqualsFalseIfNotSameName()
{
@ -193,5 +211,34 @@ namespace Tests.Model_UTs
Assert.True(p1.GetHashCode().Equals(p2.GetHashCode()));
Assert.True(p2.GetHashCode().Equals(p1.GetHashCode()));
}
[Fact]
public void TestCopyConstructorExactCopy()
{
// Arrange
Player p1;
Player p2;
// Act
p1 = new("Elyse");
p2 = new(p1);
// Assert
Assert.True(p1.Equals(p2));
}
[Fact]
public void TestCopyConstructorIfNullThenException()
{
// Arrange
Player p1;
Player p2 = null;
// Act
void action() => p1 = new Player(p2);
// Assert
Assert.Throws<ArgumentException>(action);
}
}
}

Loading…
Cancel
Save