This commit is contained in:
Christian Kauer 2023-12-21 18:07:30 +01:00
parent ce0f465e8a
commit 073fdda625
7 changed files with 49 additions and 27 deletions

View File

@ -1,4 +1,5 @@
using GameModel;
using GameModel.Exceptions;
using GameModel.Mocks;
using System;
using System.Collections.Generic;
@ -25,7 +26,7 @@ namespace GameHandler.UnitTests
public void CheckThrow_SinkCausesMultipleSinkExpsenses()
{
var bs = BoardState.Create();
var model = _eh.CheckThrow(bs, PinThrow.Create(PinPicture.Create(), false, true), _player);
var model = _eh.CheckThrow(bs, PinThrow.Create(1, PinPicture.Create(), false, true), _player);
var expense1 = model.MemberExpenses.First();
var expense2 = model.MemberExpenses.Skip(1).First();
Assert.That(expense1.Name, Is.EqualTo("Gosse"));
@ -35,13 +36,28 @@ namespace GameHandler.UnitTests
[Test]
public void CheckThrow_NinePinsCausesExpenseForAllOthers()
{
var bs = BoardState.Create();
var model = _eh.CheckThrow(bs, PinThrow.Create(1, PinPicture.CreateAllPins(), false, false), _player);
Assert.That(model.MemberExpenses.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);
var expense1 = model.MemberExpenses.First();
var expense2 = model.MemberExpenses.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.MemberExpenses.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>());
}
}
}

View File

@ -18,7 +18,7 @@ namespace GameHandler.UnitTests.Extensions
public void GetExpenseTriggers_SinkReturnsSinkTrigger()
{
var bs = BoardState.Create();
var pt = PinThrow.Create(PinPicture.Create(1,PinState.Down),false,true);
var pt = PinThrow.Create(1, PinPicture.Create(1, PinState.Down), false, true);
var tirgger = pt.GetExpenseTriggers(bs);
CollectionAssert.AreEqual(tirgger, new[] {ExpenseTrigger.Sink});
}
@ -27,7 +27,7 @@ namespace GameHandler.UnitTests.Extensions
public void GetExpenseTriggers_SinkAndBellReturnsSinkAndBellTrigger()
{
var bs = BoardState.Create();
var pt = PinThrow.Create(PinPicture.Create(1, PinState.Down), true, true);
var pt = PinThrow.Create(1, PinPicture.Create(1, PinState.Down), true, true);
var tirgger = pt.GetExpenseTriggers(bs);
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.Sink, ExpenseTrigger.Bell });
}
@ -36,7 +36,7 @@ namespace GameHandler.UnitTests.Extensions
public void GetExpenseTriggers_NoWoodReturnsNoWoodTrigger()
{
var bs = BoardState.Create();
var pt = PinThrow.Create(PinPicture.Create(), false, false);
var pt = PinThrow.Create(1, PinPicture.Create(), false, false);
var tirgger = pt.GetExpenseTriggers(bs);
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.NoWood });
}
@ -45,7 +45,7 @@ namespace GameHandler.UnitTests.Extensions
public void GetExpenseTriggers_CircleReturnsCircleTrigger()
{
var bs = BoardState.Create();
var pt = PinThrow.Create(PinPicture.CreateCircle(), false, false);
var pt = PinThrow.Create(1, PinPicture.CreateCircle(), false, false);
var tirgger = pt.GetExpenseTriggers(bs);
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.Circle });
}
@ -54,7 +54,7 @@ namespace GameHandler.UnitTests.Extensions
public void GetExpenseTriggers_NineReturnsNineTrigger()
{
var bs = BoardState.Create();
var pt = PinThrow.Create(PinPicture.CreateAllPins(), false, false);
var pt = PinThrow.Create(1, PinPicture.CreateAllPins(), false, false);
var tirgger = pt.GetExpenseTriggers(bs);
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.NinePins });
}
@ -63,7 +63,7 @@ namespace GameHandler.UnitTests.Extensions
public void GetExpenseTriggers_SinkAtStartReturnsSinkAtStartTrigger()
{
var bs = BoardState.Create(ThrowMode.Decrease);
var pt = PinThrow.Create(PinPicture.CreateAllPins(), false, true);
var pt = PinThrow.Create(1, PinPicture.CreateAllPins(), false, true);
var tirgger = pt.GetExpenseTriggers(bs);
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.FullSink });
}

View File

@ -17,7 +17,7 @@ namespace GameModel.Mocks
Expense.Create(ExpenseType.Monetary,new[] { ExpenseTrigger.NinePins }, "alle Neune", 1m, true),
Expense.Create(ExpenseType.Monetary,new[] { ExpenseTrigger.Eliminated }, "Ausgeschieden", 0.5m, false),
Expense.Create(ExpenseType.Monetary,new[] { ExpenseTrigger.NoWood }, "kein Holz", 0.5m, false),
Expense.Create(ExpenseType.Monetary,new[] { ExpenseTrigger.Bell }, "Klingen", 0.5m, false),
Expense.Create(ExpenseType.Monetary,new[] { ExpenseTrigger.Bell }, "Klingel", 0.5m, false),
Expense.Create(ExpenseType.Monetary,new[] { ExpenseTrigger.FirstThrowFail }, "Anwurffehler", 0.5m, false),
Expense.Create(ExpenseType.Monetary,new[] { ExpenseTrigger.ExpensePoint }, "Strafpunkt, z.B. im \"Scheißspiel\"", 0.5m, false),
};

View File

@ -113,7 +113,7 @@ namespace GameHandler.UnitTests
public void PicturePlusSinkIsSamePicture()
{
var p = PinPicture.Create();
var p2 = p + PinThrow.Create(null, false, true);
var p2 = p + PinThrow.Create(1, null, false, true);
Assert.That(p,Is.EqualTo(p2));
}
@ -135,31 +135,31 @@ namespace GameHandler.UnitTests
{
var p1 = PinPicture.Create();
var throwPic1 = PinPicture.Create(1, PinState.Down);
var pinThrow1 = PinThrow.Create(throwPic1, false, false);
var pinThrow1 = PinThrow.Create(1, throwPic1, false, false);
var throwPic2 = PinPicture.Create(2, PinState.Down);
var pinThrow2 = PinThrow.Create(throwPic2, false, false);
var pinThrow2 = PinThrow.Create(1, throwPic2, false, false);
var throwPic3 = PinPicture.Create(3, PinState.Down);
var pinThrow3 = PinThrow.Create(throwPic3, false, false);
var pinThrow3 = PinThrow.Create(1, throwPic3, false, false);
var throwPic4 = PinPicture.Create(4, PinState.Down);
var pinThrow4 = PinThrow.Create(throwPic4, false, false);
var pinThrow4 = PinThrow.Create(1, throwPic4, false, false);
var throwPic5 = PinPicture.Create(5, PinState.Down);
var pinThrow5 = PinThrow.Create(throwPic5, false, false);
var pinThrow5 = PinThrow.Create(1, throwPic5, false, false);
var throwPic6 = PinPicture.Create(6, PinState.Down);
var pinThrow6 = PinThrow.Create(throwPic6, false, false);
var pinThrow6 = PinThrow.Create(1, throwPic6, false, false);
var throwPic7 = PinPicture.Create(7, PinState.Down);
var pinThrow7 = PinThrow.Create(throwPic7, false, false);
var pinThrow7 = PinThrow.Create(1, throwPic7, false, false);
var throwPic8 = PinPicture.Create(8, PinState.Down);
var pinThrow8 = PinThrow.Create(throwPic8, false, false);
var pinThrow8 = PinThrow.Create(1, throwPic8, false, false);
var throwPic9 = PinPicture.Create(9, PinState.Down);
var pinThrow9 = PinThrow.Create(throwPic9, false, false);
var pinThrow9 = PinThrow.Create(1, throwPic9, false, false);
var p2 = p1 + pinThrow1;
var p3 = p2 + pinThrow2;

View File

@ -14,7 +14,7 @@ namespace GameHandler.UnitTests
public void AllNineThrow_IsNotIsNotCircle()
{
var pic = new PinPicture(PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down);
var t = PinThrow.Create(pic,false,false);
var t = PinThrow.Create(1, pic,false,false);
Assert.That(t.IsSink, Is.False);
Assert.That(t.IsNinePins, Is.True);
@ -27,7 +27,7 @@ namespace GameHandler.UnitTests
public void SinkThrow_IsNothing()
{
var pic = new PinPicture(PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Down);
var t = PinThrow.Create(pic, false, true);
var t = PinThrow.Create(1, pic, false, true);
Assert.That(t.IsSink, Is.True);
Assert.That(t.IsNinePins, Is.False);
@ -40,7 +40,7 @@ namespace GameHandler.UnitTests
public void Circle_IsNotAllNine()
{
var pic = new PinPicture(PinState.Down, PinState.Down, PinState.Down, PinState.Down, PinState.Up, PinState.Down, PinState.Down, PinState.Down, PinState.Down);
var t = PinThrow.Create(pic, false, false);
var t = PinThrow.Create(1, pic, false, false);
Assert.That(t.IsSink, Is.False);
Assert.That(t.IsNinePins, Is.False);
@ -53,7 +53,7 @@ namespace GameHandler.UnitTests
public void NoWood_IsNotSink()
{
var pic = new PinPicture(PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up);
var t = PinThrow.Create(pic, false, false);
var t = PinThrow.Create(1, pic, false, false);
Assert.That(t.IsSink, Is.False);
Assert.That(t.IsNinePins, Is.False);
Assert.That(t.IsCircle, Is.False);

View File

@ -166,9 +166,14 @@ namespace GameModel
{
return this.GetEnumerator();
}
public static PinPicture Create(int pinNumber, PinState pinState)
{
if (pinNumber < 1 || pinNumber > 9)
{
throw new InvalidPinPictureException();
}
var states = new List<PinState>(new[] { PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up, PinState.Up }).ToArray();
states[pinNumber - 1] = pinState;
return PinPicture.Create(states);

View File

@ -23,10 +23,11 @@ namespace GameModel
{
return new PinThrow(PlayerId, PicPicture, IsBell, IsSink);
}
public static PinThrow Create(PinPicture PicPicture, bool IsBell, bool IsSink)
public static PinThrow Create(int PlayerId, bool IsBell, bool IsSink)
{
return Create(1, PicPicture, IsBell, IsSink);
var p = PinPicture.Create();
return Create(PlayerId, p, IsBell, IsSink);
}
}
}