@ -18,84 +18,76 @@ namespace Tests.Data_UTs.Dice
{
{
public class DiceGroupManagerTest
public class DiceGroupManagerTest
{
{
private readonly MasterOfCeremonies stubGameRunner = new Stub ( ) . LoadApp ( ) ;
private static readonly Task< MasterOfCeremonies> stubGameRunner = new Stub ( ) . LoadApp ( ) ;
[Fact]
[Fact]
public void TestConstructorReturnsEmptyEnumerable ( )
public void TestConstructorReturnsEmptyEnumerable ( )
{
{
// Arrange
// Arrange
DiceGroupManager diceGroupManager = new ( ) ;
DiceGroupManager diceGroupManager = new ( ) ;
Dictionary < string , IEnumerable < Die > > expected ;
Dictionary < string , IEnumerable < Die > > actual ;
List < DiceGroup > expected ;
Task < ReadOnlyCollection < DiceGroup > > actual ;
// Act
// Act
expected = new Dictionary< string , IEnumerable < Die > > ( ) ;
expected = new List< DiceGroup > ( ) ;
actual = ( Dictionary < string , IEnumerable < Die > > ) diceGroupManager . GetAll ( ) ;
actual = diceGroupManager . GetAll ( ) ;
// Assert
// Assert
Xunit . Assert . Equal ( expected , actual );
Xunit . Assert . Equal ( expected , actual .Result );
}
}
[Fact]
[Fact]
public void TestAddWhenDiceGroupThenDoAddAndReturnDiceGroup ( )
public async Task TestAddWhenDiceGroupThenDoAddAndReturnDiceGroup ( )
{
{
// Arrange
// Arrange
DiceGroupManager dgm = new ( ) ;
DiceGroupManager dgm = new ( ) ;
KeyValuePair < string , IEnumerable < Die > > group1 = stubGameRunner . DiceGroupManager . GetAll ( ) . First ( ) ;
DiceGroup group1 = new ( "Monopoly" , new List < NumberDie > { new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) , new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) } ) ;
KeyValuePair < string , IEnumerable < Die > > group2 = stubGameRunner . DiceGroupManager . GetAll ( ) . Last ( ) ;
DiceGroup group2 = new ( "Scrabble" , new List < NumberDie > { new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) , new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) } ) ;
// Act
//...adding keys and values to some dictionary for future comparison
Dictionary < string , IEnumerable < Die > > expected = new ( )
{
{ group1 . Key , group1 . Value } ,
{ group2 . Key , group2 . Value }
} ;
//...storing the results of DiceGroupManager.Add() in variables
//...storing the results of DiceGroupManager.Add() in variables
KeyValuePair < string , IEnumerable < Die > > resultFromAdd1 = dgm . Add ( group1 ) ;
Collection < DiceGroup > expected = new ( ) { group1 , group2 } ;
KeyValuePair < string , IEnumerable < Die > > resultFromAdd2 = dgm . Add ( group2 ) ;
Collection < DiceGroup > actual = new ( )
//...using those variables to fill a second dictionary for comparison
Dictionary < string , IEnumerable < Die > > actual = new ( )
{
{
{ resultFromAdd1 . Key , resultFromAdd1 . Value } ,
await dgm . Add ( group1 ) ,
{ resultFromAdd2 . Key , resultFromAdd2 . Value }
await dgm . Add ( group2 )
} ;
} ;
// Assert
// Assert
Xunit . Assert . Equal ( expected , actual ) ;
Xunit . Assert . Equal ( expected , actual ) ;
Xunit . Assert . Equal ( expected , actual ) ;
}
}
[Fact]
public async Task TestAddIfNullThrowsException ( )
{
DiceGroupManager dgm = new ( ) ;
DiceGroup expected ;
expected = null ;
async Task actionAsync ( ) = > await dgm . Add ( expected ) ; // Add() returns the added element if succesful
// Assert
Xunit . Assert . Null ( expected ) ;
await Xunit . Assert . ThrowsAsync < ArgumentNullException > ( actionAsync ) ;
Xunit . Assert . DoesNotContain ( expected , await dgm . GetAll ( ) ) ;
}
[Fact]
[Fact]
public void TestAddIfNullThrowsException ( )
public async Task TestAddIfAlreadyExists ThrowsException( )
{
{
DiceGroupManager dgm = new ( ) ;
DiceGroupManager dgm = new ( ) ;
KeyValuePair < string , IEnumerable < Die > > group1 = stubGameRunner . DiceGroupManager . GetAll ( ) . First ( ) ;
await dgm . Add ( new ( "Monopoly" , new List < NumberDie > { new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) , new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) } ) ) ;
KeyValuePair < string , IEnumerable < Die > > group2 = stubGameRunner . DiceGroupManager . GetAll ( ) . Last ( ) ;
DiceGroup group1 = new ( "Monopoly" , new List < NumberDie > { new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) , new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) } ) ;
NumberFace [ ] d6Faces = new NumberFace [ ] { new ( 1 ) , new ( 2 ) , new ( 3 ) , new ( 4 ) , new ( 5 ) , new ( 6 ) } ;
async Task actionAsync ( ) = > await dgm . Add ( group1 ) ;
// Assert
await Xunit . Assert . ThrowsAsync < Exception > ( actionAsync ) ;
Dictionary < string , IEnumerable < Die > > expected = new ( )
{
{ "" , new List < NumberDie > { new NumberDie ( d6Faces [ 0 ] , d6Faces [ 1. . ] ) , new NumberDie ( d6Faces [ 0 ] , d6Faces [ 3. . ] ) } }
} ;
Dictionary < string , IEnumerable < Die > > toAdd = new ( ) ;
/ * void action ( ) = > toAdd . Add ( "" , new List < NumberDie > { new NumberDie ( d6Faces [ 0 ] , d6Faces [ 1. . ] ) ,
new NumberDie ( d6Faces [ 0 ] , d6Faces [ 3. . ] ) } ) ; * /
// Xunit.Assert.Empty(expected.Keys);
foreach ( KeyValuePair < string , IEnumerable < Die > > entry in expected )
{
Xunit . Assert . Empty ( entry . Key ) ;
// do something with entry.Value or entry.Key
}
}
}
/ *
[Fact]
[Fact]
public void TestAddIfAlreadyExistsThrowsException ( )
public void TestAddIfAlreadyExistsThrowsException ( )
@ -103,10 +95,12 @@ namespace Tests.Data_UTs.Dice
DiceGroupManager dgm = new ( ) ;
DiceGroupManager dgm = new ( ) ;
// Act
// Act
KeyValuePair < string , IEnumerable < Die > > toAdd = new ( "Monopoly" , new List < NumberDie > { new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) , new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) } ) ;
KeyValuePair < string , IEnumerable < Die > > toAdd = new ( "Monopoly" , new List < NumberDie > { new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) , new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) } ) ;
dgm . Add ( toAdd ) ;
DiceGroup diceGroup = new DiceGroup ( "Monopoly" , new List < NumberDie > { new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) , new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) } ) ;
dgm . Add ( diceGroup ) ;
void action ( ) = > dgm . Add ( toAdd ) ;
void action ( ) = > dgm . Add ( diceGroup ) ;
// Assert
// Assert
Xunit . Assert . Throws < ArgumentException > ( action ) ;
Xunit . Assert . Throws < ArgumentException > ( action ) ;
@ -135,7 +129,9 @@ namespace Tests.Data_UTs.Dice
// Arrange
// Arrange
DiceGroupManager dgm = new ( ) ;
DiceGroupManager dgm = new ( ) ;
KeyValuePair < string , IEnumerable < Die > > toAdd = new ( "Monopoly" , new List < NumberDie > { new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) , new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) } ) ;
KeyValuePair < string , IEnumerable < Die > > toAdd = new ( "Monopoly" , new List < NumberDie > { new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) , new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) } ) ;
dgm . Add ( toAdd ) ;
DiceGroup diceGroup = new DiceGroup ( "Monopoly" , new List < NumberDie > { new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) , new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) } ) ;
dgm . Add ( diceGroup ) ;
void action ( ) = > dgm . GetOneByName ( name ) ;
void action ( ) = > dgm . GetOneByName ( name ) ;
// Assert
// Assert
@ -147,11 +143,13 @@ namespace Tests.Data_UTs.Dice
{
{
// Arrange
// Arrange
DiceGroupManager dgm = new ( ) ;
DiceGroupManager dgm = new ( ) ;
KeyValuePair < string , IEnumerable < Die > > toAdd = new ( "Monopoly" , new List < NumberDie > { new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) , new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) } ) ;
// KeyValuePair<string, IEnumerable<Die>> toAdd = new("Monopoly", new List<NumberDie> { new NumberDie(new NumberFace(5), new NumberFace(7)), new NumberDie(new NumberFace(5), new NumberFace(7)) });
dgm . Add ( toAdd ) ;
DiceGroup diceGroup = new DiceGroup ( "Monopoly" , new List < NumberDie > { new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) , new NumberDie ( new NumberFace ( 5 ) , new NumberFace ( 7 ) ) } ) ;
dgm . Remove ( toAdd ) ;
Xunit . Assert . DoesNotContain ( toAdd , dgm . GetAll ( ) ) ;
dgm . Add ( diceGroup ) ;
dgm . Remove ( diceGroup ) ;
Xunit . Assert . DoesNotContain ( diceGroup , ( IEnumerable < DiceGroup > ) dgm . GetAll ( ) ) ;
}
}
[Fact]
[Fact]
@ -185,7 +183,7 @@ namespace Tests.Data_UTs.Dice
Xunit . Assert . True ( dgm . GetAll ( ) . Count ( ) = = 1 ) ;
Xunit . Assert . True ( dgm . GetAll ( ) . Count ( ) = = 1 ) ;
}
}
* /