|
|
@ -1,4 +1,5 @@
|
|
|
|
using Model;
|
|
|
|
using Model;
|
|
|
|
|
|
|
|
using System;
|
|
|
|
using Xunit;
|
|
|
|
using Xunit;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Tests.Model_UTs
|
|
|
|
namespace Tests.Model_UTs
|
|
|
@ -6,10 +7,191 @@ namespace Tests.Model_UTs
|
|
|
|
public class PlayerTest
|
|
|
|
public class PlayerTest
|
|
|
|
{
|
|
|
|
{
|
|
|
|
[Fact]
|
|
|
|
[Fact]
|
|
|
|
public void TestConstructor()
|
|
|
|
public void TestConstructorIfNameThenCorrectName()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Player player = new Player("Alice");
|
|
|
|
// Arrange
|
|
|
|
|
|
|
|
Player player;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
|
|
|
player = new("Alice");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
Assert.Equal("Alice", player.Name);
|
|
|
|
Assert.Equal("Alice", player.Name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void TestConstructorIfWhitespaceThenException()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
|
|
|
Player player;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
|
|
|
Action action = () => player = new(" ");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
|
|
Assert.Throws<ArgumentException>(action);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void TestConstructorIfBlankThenException()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
|
|
|
Player player;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
|
|
|
Action action = () => player = new("");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
|
|
Assert.Throws<ArgumentException>(action);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void TestConstructorIfNullThenException()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
|
|
|
Player player;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
|
|
|
Action action = () => player = new(null);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
|
|
Assert.Throws<ArgumentException>(action);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void TestToStringCorrectName()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
|
|
|
string expected = "Bob";
|
|
|
|
|
|
|
|
Player player = new(expected);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
|
|
|
string actual = player.ToString();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Point
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
public int X { get; set; }
|
|
|
|
|
|
|
|
public int Y { get; set; }
|
|
|
|
|
|
|
|
public Point(int x, int y)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
X = x; Y = y;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void TestEqualsFalseIfNotPlayer()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
|
|
|
Point point;
|
|
|
|
|
|
|
|
Player player;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
|
|
|
point = new(1, 2);
|
|
|
|
|
|
|
|
player = new("Clyde");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
|
|
Assert.False(point.Equals(player));
|
|
|
|
|
|
|
|
Assert.False(player.Equals(point));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void TestEqualsFalseIfNotSameName()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
|
|
|
Player p1;
|
|
|
|
|
|
|
|
Player p2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
|
|
|
p1 = new("Panama");
|
|
|
|
|
|
|
|
p2 = new("Clyde");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
|
|
Assert.False(p1.Equals(p2));
|
|
|
|
|
|
|
|
Assert.False(p2.Equals(p1));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void TestEqualsTrueIfSameNameDifferentCase()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
|
|
|
Player p1;
|
|
|
|
|
|
|
|
Player p2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
|
|
|
p1 = new("Devon");
|
|
|
|
|
|
|
|
p2 = new("devoN");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
|
|
Assert.True(p1.Equals(p2));
|
|
|
|
|
|
|
|
Assert.True(p2.Equals(p1));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void TestEqualsTrueIfExactlySameName()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
|
|
|
Player p1;
|
|
|
|
|
|
|
|
Player p2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
|
|
|
p1 = new("Elyse");
|
|
|
|
|
|
|
|
p2 = new("Elyse");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
|
|
Assert.True(p1.Equals(p2));
|
|
|
|
|
|
|
|
Assert.True(p2.Equals(p1));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void TestSameHashFalseIfNotSameName()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
|
|
|
Player p1;
|
|
|
|
|
|
|
|
Player p2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
|
|
|
p1 = new("Panama");
|
|
|
|
|
|
|
|
p2 = new("Clyde");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
|
|
Assert.False(p1.GetHashCode().Equals(p2.GetHashCode()));
|
|
|
|
|
|
|
|
Assert.False(p2.GetHashCode().Equals(p1.GetHashCode()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void TestSameHashTrueIfSameNameDifferentCase()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
|
|
|
Player p1;
|
|
|
|
|
|
|
|
Player p2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
|
|
|
p1 = new("Devon");
|
|
|
|
|
|
|
|
p2 = new("devoN");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
|
|
Assert.True(p1.GetHashCode().Equals(p2.GetHashCode()));
|
|
|
|
|
|
|
|
Assert.True(p2.GetHashCode().Equals(p1.GetHashCode()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void TestSameHashTrueIfExactlySameName()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
|
|
|
Player p1;
|
|
|
|
|
|
|
|
Player p2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
|
|
|
p1 = new("Elyse");
|
|
|
|
|
|
|
|
p2 = new("Elyse");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
|
|
Assert.True(p1.GetHashCode().Equals(p2.GetHashCode()));
|
|
|
|
|
|
|
|
Assert.True(p2.GetHashCode().Equals(p1.GetHashCode()));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|