using Model; using System; using Xunit; namespace Tests.Model_UTs { public class PlayerTest { [Fact] public void TestConstructorIfNameThenCorrectName() { // Arrange Player player; // Act player = new("Alice"); // Assert Assert.Equal("Alice", player.Name); } [Fact] public void TestConstructorIfWhitespaceThenException() { // Arrange Player player; // Act Action action = () => player = new(" "); // Assert Assert.Throws(action); } [Fact] public void TestConstructorIfBlankThenException() { // Arrange Player player; // Act Action action = () => player = new(""); // Assert Assert.Throws(action); } [Fact] public void TestConstructorIfNullThenException() { // Arrange Player player; // Act Action action = () => player = new(null); // Assert Assert.Throws(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())); } } }