64 lines
2.2 KiB
C#
64 lines
2.2 KiB
C#
using GameHandler.UnitTests.Mocks;
|
|
using GameModel;
|
|
using GameModel.Exceptions;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace GameHandler.UnitTests
|
|
{
|
|
[TestFixture]
|
|
internal class ExpenseHandlerTests
|
|
{
|
|
private ExpenseHandler _eh;
|
|
private int[] _player;
|
|
|
|
[SetUp]
|
|
public void SetUp()
|
|
{
|
|
_eh = new ExpenseHandler(new FakeExpenseRepository());
|
|
_player = new[] { 1, 2, 3, 4 };
|
|
}
|
|
|
|
[Test]
|
|
public void CheckThrow_SinkCausesMultipleSinkExpsenses()
|
|
{
|
|
var bs = BoardState.Create();
|
|
var model = _eh.CheckThrow(bs, PinThrow.Create(1, PinPicture.Create(), false, true), _player).Result;
|
|
var expense1 = model.First();
|
|
var expense2 = model.Skip(1).First();
|
|
Assert.That(expense1.Name, Is.EqualTo("Gosse"));
|
|
Assert.That(expense2.Name, Is.EqualTo("Gosse2"));
|
|
}
|
|
|
|
[Test]
|
|
public void CheckThrow_NinePinsCausesExpenseForAllOthers()
|
|
{
|
|
var bs = BoardState.Create();
|
|
var model = _eh.CheckThrow(bs, PinThrow.Create(1, PinPicture.CreateAllPins(), false, false), _player).Result;
|
|
Assert.That(model.Count, Is.EqualTo(_player.Count()-1));
|
|
}
|
|
|
|
[Test]
|
|
public void CheckThrow_NoWoodAndBellCausesSinkAndBellExpsense()
|
|
{
|
|
var bs = BoardState.Create();
|
|
var model = _eh.CheckThrow(bs, PinThrow.Create(1, true, true), _player).Result;
|
|
var expense1 = model.First();
|
|
var expense2 = model.Skip(2).First(); // there are two triggers for sink in testdata
|
|
Assert.That(expense1.Name, Is.EqualTo("Gosse"));
|
|
Assert.That(expense2.Name, Is.EqualTo("Klingel"));
|
|
Assert.That(model.Count, Is.EqualTo(3));
|
|
}
|
|
|
|
[Test]
|
|
public void CheckThrow_ThrowsExcetionIfPlayerIsNotPartOfModel()
|
|
{
|
|
var bs = BoardState.Create();
|
|
Assert.That(() => _eh.CheckThrow(bs, PinThrow.Create(5, PinPicture.Create(), false, true), _player), Throws.TypeOf<InvalidPinThrowException>());
|
|
}
|
|
}
|
|
}
|