Juggle with dependencies to make it make sense

pull/104/head
Alexis Drai 3 years ago
parent 32d07e1e3c
commit 8514606fa6

@ -7,7 +7,6 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Data\Data.csproj" /> <ProjectReference Include="..\Data\Data.csproj" />
<ProjectReference Include="..\Model\Model.csproj" />
</ItemGroup> </ItemGroup>
</Project> </Project>

@ -1,11 +1,11 @@
using Data; using Model.Dice;
using Model.Dice;
using Model.Dice.Faces; using Model.Dice.Faces;
using Model.Games; using Model.Games;
using Model.Players; using Model.Players;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Data;
namespace App namespace App
{ {

@ -7,10 +7,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Model", "Model\Model.csproj
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests", "Tests\Tests.csproj", "{11BDDDA8-CBED-46EE-A224-144C3CD545A7}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests", "Tests\Tests.csproj", "{11BDDDA8-CBED-46EE-A224-144C3CD545A7}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Data", "Data\Data.csproj", "{3047BFD8-EF44-4095-9E54-45D47C7AB212}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{953D2D67-BCE7-412C-B7BB-7C63B5592359}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{953D2D67-BCE7-412C-B7BB-7C63B5592359}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Data", "Data\Data.csproj", "{E9683741-E603-4ED3-8088-4099D67FCA6D}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -25,10 +25,10 @@ Global
{11BDDDA8-CBED-46EE-A224-144C3CD545A7}.Debug|Any CPU.Build.0 = Debug|Any CPU {11BDDDA8-CBED-46EE-A224-144C3CD545A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{11BDDDA8-CBED-46EE-A224-144C3CD545A7}.Release|Any CPU.ActiveCfg = Release|Any CPU {11BDDDA8-CBED-46EE-A224-144C3CD545A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{11BDDDA8-CBED-46EE-A224-144C3CD545A7}.Release|Any CPU.Build.0 = Release|Any CPU {11BDDDA8-CBED-46EE-A224-144C3CD545A7}.Release|Any CPU.Build.0 = Release|Any CPU
{3047BFD8-EF44-4095-9E54-45D47C7AB212}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E9683741-E603-4ED3-8088-4099D67FCA6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3047BFD8-EF44-4095-9E54-45D47C7AB212}.Debug|Any CPU.Build.0 = Debug|Any CPU {E9683741-E603-4ED3-8088-4099D67FCA6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3047BFD8-EF44-4095-9E54-45D47C7AB212}.Release|Any CPU.ActiveCfg = Release|Any CPU {E9683741-E603-4ED3-8088-4099D67FCA6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3047BFD8-EF44-4095-9E54-45D47C7AB212}.Release|Any CPU.Build.0 = Release|Any CPU {E9683741-E603-4ED3-8088-4099D67FCA6D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

@ -12,10 +12,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "App", "App\App.csproj", "{8
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests", "Tests\Tests.csproj", "{11BDDDA8-CBED-46EE-A224-144C3CD545A7}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests", "Tests\Tests.csproj", "{11BDDDA8-CBED-46EE-A224-144C3CD545A7}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Data", "Data\Data.csproj", "{3047BFD8-EF44-4095-9E54-45D47C7AB212}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{953D2D67-BCE7-412C-B7BB-7C63B5592359}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{953D2D67-BCE7-412C-B7BB-7C63B5592359}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Data", "Data\Data.csproj", "{E9683741-E603-4ED3-8088-4099D67FCA6D}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -34,10 +34,10 @@ Global
{11BDDDA8-CBED-46EE-A224-144C3CD545A7}.Debug|Any CPU.Build.0 = Debug|Any CPU {11BDDDA8-CBED-46EE-A224-144C3CD545A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{11BDDDA8-CBED-46EE-A224-144C3CD545A7}.Release|Any CPU.ActiveCfg = Release|Any CPU {11BDDDA8-CBED-46EE-A224-144C3CD545A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{11BDDDA8-CBED-46EE-A224-144C3CD545A7}.Release|Any CPU.Build.0 = Release|Any CPU {11BDDDA8-CBED-46EE-A224-144C3CD545A7}.Release|Any CPU.Build.0 = Release|Any CPU
{3047BFD8-EF44-4095-9E54-45D47C7AB212}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E9683741-E603-4ED3-8088-4099D67FCA6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3047BFD8-EF44-4095-9E54-45D47C7AB212}.Debug|Any CPU.Build.0 = Debug|Any CPU {E9683741-E603-4ED3-8088-4099D67FCA6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3047BFD8-EF44-4095-9E54-45D47C7AB212}.Release|Any CPU.ActiveCfg = Release|Any CPU {E9683741-E603-4ED3-8088-4099D67FCA6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3047BFD8-EF44-4095-9E54-45D47C7AB212}.Release|Any CPU.Build.0 = Release|Any CPU {E9683741-E603-4ED3-8088-4099D67FCA6D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

@ -1,5 +1,4 @@
using Data; using Model;
using Model;
using Model.Dice; using Model.Dice;
using Model.Dice.Faces; using Model.Dice.Faces;
using Model.Games; using Model.Games;
@ -8,13 +7,14 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Xunit; using Xunit;
using Data;
namespace Tests.Model_UTs namespace Tests.Model_UTs
{ {
public class GameRunnerTest public class GameRunnerTest
{ {
private readonly GameRunner stubGameRunner = new Stub().LoadApp(); private readonly GameRunner stubGameRunner = new Stub().LoadApp();
[Fact] [Fact]
public void TestConstructorWhenNoGamesThenNewIEnumerable() public void TestConstructorWhenNoGamesThenNewIEnumerable()
{ {

@ -1,16 +1,12 @@
using Model.Dice.Faces; using Model.Dice;
using Model.Dice; using Model.Dice.Faces;
using Model.Games; using Model.Games;
using Model.Players; using Model.Players;
using Model;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit; using Xunit;
using static System.Collections.Specialized.BitVector32;
using System.Diagnostics;
namespace Tests.Model_UTs namespace Tests.Model_UTs
{ {

@ -3,7 +3,6 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Xml.Linq;
using Xunit; using Xunit;
namespace Tests.Model_UTs namespace Tests.Model_UTs

@ -1,10 +1,4 @@
using System; namespace Tests.Model_UTs
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tests.Model_UTs
{ {
public class Point public class Point
{ {

@ -1,322 +1,322 @@
using Model.Dice; using Model.Dice;
using Model.Dice.Faces; using Model.Dice.Faces;
using Model.Games; using Model.Games;
using Model.Players; using Model.Players;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using Xunit; using Xunit;
namespace Tests.Model_UTs namespace Tests.Model_UTs
{ {
public class TurnTest public class TurnTest
{ {
private readonly Dictionary<AbstractDie<AbstractDieFace>, AbstractDieFace> DICE_N_FACES_1; private readonly Dictionary<AbstractDie<AbstractDieFace>, AbstractDieFace> DICE_N_FACES_1;
private readonly Dictionary<AbstractDie<AbstractDieFace>, AbstractDieFace> DICE_N_FACES_2; private readonly Dictionary<AbstractDie<AbstractDieFace>, AbstractDieFace> DICE_N_FACES_2;
private static readonly AbstractDieFace FACE_ONE = new NumberDieFace(1); private static readonly AbstractDieFace FACE_ONE = new NumberDieFace(1);
private static readonly AbstractDieFace FACE_TWO = new NumberDieFace(12); private static readonly AbstractDieFace FACE_TWO = new NumberDieFace(12);
private static readonly AbstractDieFace FACE_THREE = new ImageDieFace(54); private static readonly AbstractDieFace FACE_THREE = new ImageDieFace(54);
private static readonly AbstractDieFace FACE_FOUR = new ColorDieFace(16548); private static readonly AbstractDieFace FACE_FOUR = new ColorDieFace(16548);
private readonly static NumberDieFace[] FACES1 = new NumberDieFace[] private readonly static NumberDieFace[] FACES1 = new NumberDieFace[]
{ {
FACE_ONE as NumberDieFace, FACE_ONE as NumberDieFace,
new NumberDieFace(2), new NumberDieFace(2),
new NumberDieFace(3), new NumberDieFace(3),
new NumberDieFace(4) new NumberDieFace(4)
}; };
private readonly static NumberDieFace[] FACES2 = new NumberDieFace[] { private readonly static NumberDieFace[] FACES2 = new NumberDieFace[] {
new NumberDieFace(9), new NumberDieFace(9),
new NumberDieFace(10), new NumberDieFace(10),
new NumberDieFace(11), new NumberDieFace(11),
FACE_TWO as NumberDieFace, FACE_TWO as NumberDieFace,
new NumberDieFace(13), new NumberDieFace(13),
new NumberDieFace(14) new NumberDieFace(14)
}; };
private readonly static ImageDieFace[] FACES3 = new ImageDieFace[] { private readonly static ImageDieFace[] FACES3 = new ImageDieFace[] {
new ImageDieFace(13), new ImageDieFace(13),
new ImageDieFace(27), new ImageDieFace(27),
new ImageDieFace(38), new ImageDieFace(38),
FACE_THREE as ImageDieFace FACE_THREE as ImageDieFace
}; };
private readonly static ColorDieFace[] FACES4 = new ColorDieFace[] { private readonly static ColorDieFace[] FACES4 = new ColorDieFace[] {
new(11651), new(11651),
new(24651), new(24651),
FACE_FOUR as ColorDieFace, FACE_FOUR as ColorDieFace,
new(412) new(412)
}; };
private readonly AbstractDie<AbstractDieFace> NUM1 = new NumberDie(FACES1); private readonly AbstractDie<AbstractDieFace> NUM1 = new NumberDie(FACES1);
private readonly AbstractDie<AbstractDieFace> NUM2 = new NumberDie(FACES2); private readonly AbstractDie<AbstractDieFace> NUM2 = new NumberDie(FACES2);
private readonly AbstractDie<AbstractDieFace> IMG1 = new ImageDie(FACES3); private readonly AbstractDie<AbstractDieFace> IMG1 = new ImageDie(FACES3);
private readonly AbstractDie<AbstractDieFace> CLR1 = new ColorDie(FACES4); private readonly AbstractDie<AbstractDieFace> CLR1 = new ColorDie(FACES4);
public TurnTest() public TurnTest()
{ {
DICE_N_FACES_1 = new() DICE_N_FACES_1 = new()
{ {
{ NUM1, FACE_ONE }, { NUM1, FACE_ONE },
{ NUM2, FACE_TWO }, { NUM2, FACE_TWO },
{ IMG1, FACE_THREE }, { IMG1, FACE_THREE },
{ CLR1, FACE_FOUR } { CLR1, FACE_FOUR }
}; };
DICE_N_FACES_2 = new() DICE_N_FACES_2 = new()
{ {
{ NUM1, FACE_TWO }, { NUM1, FACE_TWO },
{ IMG1, FACE_THREE }, { IMG1, FACE_THREE },
{ CLR1, FACE_FOUR } { CLR1, FACE_FOUR }
}; };
} }
[Fact] [Fact]
public void TestCreateWithSpecifiedTimeNotUTCThenValid() public void TestCreateWithSpecifiedTimeNotUTCThenValid()
{ {
// Arrange // Arrange
DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Local); DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Local);
Player player = new("Alice"); Player player = new("Alice");
Assert.NotEqual(DateTimeKind.Utc, dateTime.Kind); Assert.NotEqual(DateTimeKind.Utc, dateTime.Kind);
// Act // Act
Turn turn = Turn.CreateWithSpecifiedTime(dateTime, player, DICE_N_FACES_1); Turn turn = Turn.CreateWithSpecifiedTime(dateTime, player, DICE_N_FACES_1);
// Assert // Assert
Assert.Equal(DateTimeKind.Utc, turn.When.Kind); Assert.Equal(DateTimeKind.Utc, turn.When.Kind);
Assert.Equal(dateTime.ToUniversalTime(), turn.When); Assert.Equal(dateTime.ToUniversalTime(), turn.When);
} }
[Fact] [Fact]
public void TestCreateWithSpecifiedTimeUTCThenValid() public void TestCreateWithSpecifiedTimeUTCThenValid()
{ {
// Arrange // Arrange
DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Utc); DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Utc);
Player player = new("Bobby"); Player player = new("Bobby");
Assert.Equal(DateTimeKind.Utc, dateTime.Kind); Assert.Equal(DateTimeKind.Utc, dateTime.Kind);
// Act // Act
Turn turn = Turn.CreateWithSpecifiedTime(dateTime, player, DICE_N_FACES_1); Turn turn = Turn.CreateWithSpecifiedTime(dateTime, player, DICE_N_FACES_1);
// Assert // Assert
Assert.Equal(DateTimeKind.Utc, turn.When.Kind); Assert.Equal(DateTimeKind.Utc, turn.When.Kind);
Assert.Equal(dateTime.ToUniversalTime(), turn.When); Assert.Equal(dateTime.ToUniversalTime(), turn.When);
} }
[Fact] [Fact]
public void TestCreateWithSpecifiedTimeNullPlayerThenException() public void TestCreateWithSpecifiedTimeNullPlayerThenException()
{ {
// Arrange // Arrange
DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Utc); DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Utc);
// Act // Act
void action() => Turn.CreateWithSpecifiedTime(dateTime, null, DICE_N_FACES_1); void action() => Turn.CreateWithSpecifiedTime(dateTime, null, DICE_N_FACES_1);
// Assert // Assert
Assert.Throws<ArgumentNullException>(action); Assert.Throws<ArgumentNullException>(action);
} }
[Fact] [Fact]
public void TestCreateWithSpecifiedTimeNullFacesThenException() public void TestCreateWithSpecifiedTimeNullFacesThenException()
{ {
// Arrange // Arrange
DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Utc); DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Utc);
Player player = new("Chucky"); Player player = new("Chucky");
// Act // Act
void action() => Turn.CreateWithSpecifiedTime(dateTime, player, null); void action() => Turn.CreateWithSpecifiedTime(dateTime, player, null);
// Assert // Assert
Assert.Throws<ArgumentNullException>(action); Assert.Throws<ArgumentNullException>(action);
} }
[Fact] [Fact]
public void TestCreateWithSpecifiedTimeEmptyFacesThenException() public void TestCreateWithSpecifiedTimeEmptyFacesThenException()
{ {
// Arrange // Arrange
DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Utc); DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Utc);
Player player = new("Chucky"); Player player = new("Chucky");
DICE_N_FACES_1.Clear(); DICE_N_FACES_1.Clear();
// Act // Act
void action() => Turn.CreateWithSpecifiedTime(dateTime, player, DICE_N_FACES_1); void action() => Turn.CreateWithSpecifiedTime(dateTime, player, DICE_N_FACES_1);
// Assert // Assert
Assert.Throws<ArgumentException>(action); Assert.Throws<ArgumentException>(action);
} }
[Fact] [Fact]
public void TestCreateWithDefaultTimeThenValid() public void TestCreateWithDefaultTimeThenValid()
{ {
// Arrange // Arrange
Player player = new("Chloe"); Player player = new("Chloe");
// Act // Act
Turn turn = Turn.CreateWithDefaultTime(player, DICE_N_FACES_1); Turn turn = Turn.CreateWithDefaultTime(player, DICE_N_FACES_1);
// Assert // Assert
Assert.Equal(DateTimeKind.Utc, turn.When.Kind); Assert.Equal(DateTimeKind.Utc, turn.When.Kind);
Assert.Equal(DateTime.Now.ToUniversalTime().Date, turn.When.Date); Assert.Equal(DateTime.Now.ToUniversalTime().Date, turn.When.Date);
// N.B.: might fail between 11:59:59PM and 00:00:00AM // N.B.: might fail between 11:59:59PM and 00:00:00AM
} }
[Fact] [Fact]
public void TestToStringValidIfAllNormal() public void TestToStringValidIfAllNormal()
{ {
// Arrange // Arrange
DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Utc); DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Utc);
string name = "Bobby"; string name = "Bobby";
Player player = new(name); Player player = new(name);
string expected = $"2018-06-15 16:30:00 -- {name} rolled: " string expected = $"2018-06-15 16:30:00 -- {name} rolled: "
+ FACE_ONE.ToString() + " " + FACE_ONE.ToString() + " "
+ FACE_TWO.ToString() + " " + FACE_TWO.ToString() + " "
+ FACE_THREE.ToString() + " " + FACE_THREE.ToString() + " "
+ FACE_FOUR.ToString(); + FACE_FOUR.ToString();
Turn turn = Turn.CreateWithSpecifiedTime(dateTime, player, DICE_N_FACES_1); Turn turn = Turn.CreateWithSpecifiedTime(dateTime, player, DICE_N_FACES_1);
// Act // Act
string actual = turn.ToString(); string actual = turn.ToString();
Debug.WriteLine(actual); Debug.WriteLine(actual);
// Assert // Assert
Assert.Equal(expected, actual); Assert.Equal(expected, actual);
} }
[Fact] [Fact]
public void TestDiceNFacesProperty() public void TestDiceNFacesProperty()
{ {
// Arrange // Arrange
Player player = new("Erika"); Player player = new("Erika");
// Act // Act
Turn turn = Turn.CreateWithDefaultTime(player, DICE_N_FACES_1); Turn turn = Turn.CreateWithDefaultTime(player, DICE_N_FACES_1);
IEnumerable<KeyValuePair<AbstractDie<AbstractDieFace>, AbstractDieFace>> expected = DICE_N_FACES_1.AsEnumerable(); IEnumerable<KeyValuePair<AbstractDie<AbstractDieFace>, AbstractDieFace>> expected = DICE_N_FACES_1.AsEnumerable();
// Assert // Assert
Assert.Equal(expected, turn.DiceNFaces); Assert.Equal(expected, turn.DiceNFaces);
}
[Fact]
public void TestEqualsFalseIfNotTurn()
{
// Arrange
Point point;
Turn turn;
Player player = new("Freddie");
// Act
point = new(1, 2);
turn = Turn.CreateWithDefaultTime(player, DICE_N_FACES_1);
// Assert
Assert.False(point.Equals(turn));
Assert.False(point.GetHashCode().Equals(turn.GetHashCode()));
Assert.False(turn.Equals(point));
Assert.False(turn.GetHashCode().Equals(point.GetHashCode()));
}
[Fact]
public void TestGoesThruToSecondMethodIfObjIsTypeTurn()
{
// Arrange
Object t1;
Turn t2;
Player player1 = new Player("Marvin");
Player player2 = new Player("Noah");
// Act
t1 = Turn.CreateWithDefaultTime(player1, DICE_N_FACES_1);
t2 = Turn.CreateWithDefaultTime(player2, DICE_N_FACES_2);
// Assert
Assert.False(t1.Equals(t2));
Assert.False(t1.GetHashCode().Equals(t2.GetHashCode()));
Assert.False(t2.Equals(t1));
Assert.False(t2.GetHashCode().Equals(t1.GetHashCode()));
}
[Fact]
public void TestEqualsFalseIfNotSamePlayer()
{
// Arrange
Player player1= new("Panama");
Player player2= new("Clyde");
// Act
Turn t1 = Turn.CreateWithDefaultTime(player1, DICE_N_FACES_2);
Turn t2 = Turn.CreateWithDefaultTime(player2, DICE_N_FACES_2);
// Assert
Assert.False(t1.Equals(t2));
Assert.False(t1.GetHashCode().Equals(t2.GetHashCode()));
Assert.False(t2.Equals(t1));
Assert.False(t2.GetHashCode().Equals(t1.GetHashCode()));
} }
[Fact] [Fact]
public void TestEqualsFalseIfNotTurn() public void TestEqualsFalseIfNotSameTime()
{ {
// Arrange // Arrange
Point point; Player player = new("Oscar");
Turn turn;
Player player = new("Freddie"); // Act
Turn t1 = Turn.CreateWithSpecifiedTime(new DateTime(1994, 07, 10), player, DICE_N_FACES_1);
// Act Turn t2 = Turn.CreateWithSpecifiedTime(new DateTime(1991, 08, 20), player, DICE_N_FACES_1);
point = new(1, 2);
turn = Turn.CreateWithDefaultTime(player, DICE_N_FACES_1); // Assert
Assert.False(t1.Equals(t2));
// Assert Assert.False(t1.GetHashCode().Equals(t2.GetHashCode()));
Assert.False(point.Equals(turn)); Assert.False(t2.Equals(t1));
Assert.False(point.GetHashCode().Equals(turn.GetHashCode())); Assert.False(t2.GetHashCode().Equals(t1.GetHashCode()));
Assert.False(turn.Equals(point));
Assert.False(turn.GetHashCode().Equals(point.GetHashCode()));
}
[Fact]
public void TestGoesThruToSecondMethodIfObjIsTypeTurn()
{
// Arrange
Object t1;
Turn t2;
Player player1 = new Player("Marvin");
Player player2 = new Player("Noah");
// Act
t1 = Turn.CreateWithDefaultTime(player1, DICE_N_FACES_1);
t2 = Turn.CreateWithDefaultTime(player2, DICE_N_FACES_2);
// Assert
Assert.False(t1.Equals(t2));
Assert.False(t1.GetHashCode().Equals(t2.GetHashCode()));
Assert.False(t2.Equals(t1));
Assert.False(t2.GetHashCode().Equals(t1.GetHashCode()));
}
[Fact]
public void TestEqualsFalseIfNotSamePlayer()
{
// Arrange
Player player1= new("Panama");
Player player2= new("Clyde");
// Act
Turn t1 = Turn.CreateWithDefaultTime(player1, DICE_N_FACES_2);
Turn t2 = Turn.CreateWithDefaultTime(player2, DICE_N_FACES_2);
// Assert
Assert.False(t1.Equals(t2));
Assert.False(t1.GetHashCode().Equals(t2.GetHashCode()));
Assert.False(t2.Equals(t1));
Assert.False(t2.GetHashCode().Equals(t1.GetHashCode()));
} }
[Fact] [Fact]
public void TestEqualsFalseIfNotSameTime() public void TestEqualsFalseIfNotSameDiceNFaces()
{ {
// Arrange // Arrange
Player player = new("Oscar"); Player player = new("Django");
// Act // Act
Turn t1 = Turn.CreateWithSpecifiedTime(new DateTime(1994, 07, 10), player, DICE_N_FACES_1); Turn t1 = Turn.CreateWithDefaultTime(player, DICE_N_FACES_1);
Turn t2 = Turn.CreateWithSpecifiedTime(new DateTime(1991, 08, 20), player, DICE_N_FACES_1); Turn t2 = Turn.CreateWithDefaultTime(player, DICE_N_FACES_2);
// Assert // Assert
Assert.False(t1.Equals(t2)); Assert.False(t1.Equals(t2));
Assert.False(t1.GetHashCode().Equals(t2.GetHashCode())); Assert.False(t1.GetHashCode().Equals(t2.GetHashCode()));
Assert.False(t2.Equals(t1)); Assert.False(t2.Equals(t1));
Assert.False(t2.GetHashCode().Equals(t1.GetHashCode())); Assert.False(t2.GetHashCode().Equals(t1.GetHashCode()));
} }
[Fact] [Fact]
public void TestEqualsFalseIfNotSameDiceNFaces() public void TestEqualsTrueIfExactlySameProperties()
{ {
// Arrange // Arrange
Player player = new("Django"); Player player = new("Elyse");
// Act // Act
Turn t1 = Turn.CreateWithDefaultTime(player, DICE_N_FACES_1); Turn t1 = Turn.CreateWithSpecifiedTime(new DateTime(1990, 04, 29), player, DICE_N_FACES_1);
Turn t2 = Turn.CreateWithDefaultTime(player, DICE_N_FACES_2); Turn t2 = Turn.CreateWithSpecifiedTime(new DateTime(1990, 04, 29), player, DICE_N_FACES_1);
// Assert // Assert
Assert.False(t1.Equals(t2)); Assert.True(t1.Equals(t2));
Assert.False(t1.GetHashCode().Equals(t2.GetHashCode())); Assert.True(t1.GetHashCode().Equals(t2.GetHashCode()));
Assert.False(t2.Equals(t1)); Assert.True(t2.Equals(t1));
Assert.False(t2.GetHashCode().Equals(t1.GetHashCode())); Assert.True(t2.GetHashCode().Equals(t1.GetHashCode()));
} }
}
[Fact] }
public void TestEqualsTrueIfExactlySameProperties()
{
// Arrange
Player player = new("Elyse");
// Act
Turn t1 = Turn.CreateWithSpecifiedTime(new DateTime(1990, 04, 29), player, DICE_N_FACES_1);
Turn t2 = Turn.CreateWithSpecifiedTime(new DateTime(1990, 04, 29), player, DICE_N_FACES_1);
// Assert
Assert.True(t1.Equals(t2));
Assert.True(t1.GetHashCode().Equals(t2.GetHashCode()));
Assert.True(t2.Equals(t1));
Assert.True(t2.GetHashCode().Equals(t1.GetHashCode()));
}
}
}

@ -21,7 +21,6 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Data\Data.csproj" /> <ProjectReference Include="..\Data\Data.csproj" />
<ProjectReference Include="..\Model\Model.csproj" />
</ItemGroup> </ItemGroup>
</Project> </Project>

Loading…
Cancel
Save