|
|
@ -1,12 +1,35 @@
|
|
|
|
using Model.Games;
|
|
|
|
using Model.Dice.Faces;
|
|
|
|
|
|
|
|
using Model.Games;
|
|
|
|
using Model.Players;
|
|
|
|
using Model.Players;
|
|
|
|
|
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
using System;
|
|
|
|
using System;
|
|
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
using Xunit;
|
|
|
|
using Xunit;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Tests.Model_UTs
|
|
|
|
namespace Tests.Model_UTs
|
|
|
|
{
|
|
|
|
{
|
|
|
|
public class TurnTest
|
|
|
|
public class TurnTest
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
private readonly List<AbstractDieFace> FACES;
|
|
|
|
|
|
|
|
private readonly int FACE_ONE = 1;
|
|
|
|
|
|
|
|
private readonly int FACE_TWO = 12;
|
|
|
|
|
|
|
|
private readonly int FACE_THREE = 54;
|
|
|
|
|
|
|
|
private readonly int FACE_FOUR = 16548;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public TurnTest()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
FACES = new List<AbstractDieFace>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
new NumberDieFace(FACE_ONE),
|
|
|
|
|
|
|
|
new NumberDieFace(FACE_TWO),
|
|
|
|
|
|
|
|
new ImageDieFace(FACE_THREE),
|
|
|
|
|
|
|
|
new ColorDieFace(FACE_FOUR)
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
[Fact]
|
|
|
|
public void TestCreateWithSpecifiedTimeNotUTCThenValid()
|
|
|
|
public void TestCreateWithSpecifiedTimeNotUTCThenValid()
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -16,7 +39,7 @@ namespace Tests.Model_UTs
|
|
|
|
Assert.NotEqual(DateTimeKind.Utc, dateTime.Kind);
|
|
|
|
Assert.NotEqual(DateTimeKind.Utc, dateTime.Kind);
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
// Act
|
|
|
|
Turn turn = Turn.CreateWithSpecifiedTime(dateTime, player);
|
|
|
|
Turn turn = Turn.CreateWithSpecifiedTime(dateTime, player, FACES);
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
// Assert
|
|
|
|
Assert.Equal(DateTimeKind.Utc, turn.when.Kind);
|
|
|
|
Assert.Equal(DateTimeKind.Utc, turn.when.Kind);
|
|
|
@ -32,7 +55,7 @@ namespace Tests.Model_UTs
|
|
|
|
Assert.Equal(DateTimeKind.Utc, dateTime.Kind);
|
|
|
|
Assert.Equal(DateTimeKind.Utc, dateTime.Kind);
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
// Act
|
|
|
|
Turn turn = Turn.CreateWithSpecifiedTime(dateTime, player);
|
|
|
|
Turn turn = Turn.CreateWithSpecifiedTime(dateTime, player, FACES);
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
// Assert
|
|
|
|
Assert.Equal(DateTimeKind.Utc, turn.when.Kind);
|
|
|
|
Assert.Equal(DateTimeKind.Utc, turn.when.Kind);
|
|
|
@ -46,38 +69,54 @@ namespace Tests.Model_UTs
|
|
|
|
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);
|
|
|
|
void action() => Turn.CreateWithSpecifiedTime(dateTime, null, FACES);
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
// Assert
|
|
|
|
Assert.Throws<ArgumentNullException>(action);
|
|
|
|
Assert.Throws<ArgumentNullException>(action);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
[Fact]
|
|
|
|
public void TestCreateWithDefaultTimeThenValid()
|
|
|
|
public void TestCreateWithSpecifiedTimeNullFacesThenException()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// Arrange
|
|
|
|
// Arrange
|
|
|
|
Player player = new("Chloe");
|
|
|
|
DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Utc);
|
|
|
|
|
|
|
|
Player player = new("Chucky");
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
// Act
|
|
|
|
Turn turn = Turn.CreateWithDefaultTime(player);
|
|
|
|
void action() => Turn.CreateWithSpecifiedTime(dateTime, player, null);
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
// Assert
|
|
|
|
Assert.Equal(DateTimeKind.Utc, turn.when.Kind);
|
|
|
|
Assert.Throws<ArgumentException>(action);
|
|
|
|
Assert.Equal(DateTime.Now.ToUniversalTime().Date, turn.when.Date);
|
|
|
|
|
|
|
|
/*** N.B.: might fail between 11:59:59PM and 00:00:00AM ***/
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
[Fact]
|
|
|
|
public void TestCreateWithDefaultTimeNullPlayerThenException()
|
|
|
|
public void TestCreateWithSpecifiedTimeEmptyFacesThenException()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// Arrange
|
|
|
|
// Arrange
|
|
|
|
Player player = new("Devon");
|
|
|
|
DateTime dateTime = new(year: 2018, month: 06, day: 15, hour: 16, minute: 30, second: 0, kind: DateTimeKind.Utc);
|
|
|
|
|
|
|
|
Player player = new("Chucky");
|
|
|
|
|
|
|
|
FACES.Clear();
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
// Act
|
|
|
|
static void action() => Turn.CreateWithDefaultTime(null);
|
|
|
|
void action() => Turn.CreateWithSpecifiedTime(dateTime, player, FACES);
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
// Assert
|
|
|
|
Assert.Throws<ArgumentNullException>(action);
|
|
|
|
Assert.Throws<ArgumentException>(action);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void TestCreateWithDefaultTimeThenValid()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Arrange
|
|
|
|
|
|
|
|
Player player = new("Chloe");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
|
|
|
|
Turn turn = Turn.CreateWithDefaultTime(player, FACES);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
|
|
Assert.Equal(DateTimeKind.Utc, turn.when.Kind);
|
|
|
|
|
|
|
|
Assert.Equal(DateTime.Now.ToUniversalTime().Date, turn.when.Date);
|
|
|
|
|
|
|
|
/*** N.B.: might fail between 11:59:59PM and 00:00:00AM ***/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
[Fact]
|
|
|
@ -87,11 +126,17 @@ namespace Tests.Model_UTs
|
|
|
|
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-15T16:30:00Z -- {name} rolled <face>, <face>, <face>...";
|
|
|
|
string expected = $"2018-06-15 16:30:00 -- {name} rolled: "
|
|
|
|
Turn turn = Turn.CreateWithSpecifiedTime(dateTime, player);
|
|
|
|
+ FACE_ONE + " "
|
|
|
|
|
|
|
|
+ FACE_TWO
|
|
|
|
|
|
|
|
+ " Assets/images/" + FACE_THREE + " "
|
|
|
|
|
|
|
|
+ FACE_FOUR.ToString("X6").Insert(0, "#");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Turn turn = Turn.CreateWithSpecifiedTime(dateTime, player, FACES);
|
|
|
|
|
|
|
|
|
|
|
|
// Act
|
|
|
|
// Act
|
|
|
|
string actual = turn.ToString();
|
|
|
|
string actual = turn.ToString();
|
|
|
|
|
|
|
|
Debug.WriteLine(actual);
|
|
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
// Assert
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|