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;
using GameModel.Exceptions;
using GameModel.Mocks; using GameModel.Mocks;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -25,7 +26,7 @@ namespace GameHandler.UnitTests
public void CheckThrow_SinkCausesMultipleSinkExpsenses() public void CheckThrow_SinkCausesMultipleSinkExpsenses()
{ {
var bs = BoardState.Create(); 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 expense1 = model.MemberExpenses.First();
var expense2 = model.MemberExpenses.Skip(1).First(); var expense2 = model.MemberExpenses.Skip(1).First();
Assert.That(expense1.Name, Is.EqualTo("Gosse")); Assert.That(expense1.Name, Is.EqualTo("Gosse"));
@ -35,13 +36,28 @@ namespace GameHandler.UnitTests
[Test] [Test]
public void CheckThrow_NinePinsCausesExpenseForAllOthers() 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] [Test]
public void CheckThrow_NoWoodAndBellCausesSinkAndBellExpsense() 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() public void GetExpenseTriggers_SinkReturnsSinkTrigger()
{ {
var bs = BoardState.Create(); 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); var tirgger = pt.GetExpenseTriggers(bs);
CollectionAssert.AreEqual(tirgger, new[] {ExpenseTrigger.Sink}); CollectionAssert.AreEqual(tirgger, new[] {ExpenseTrigger.Sink});
} }
@ -27,7 +27,7 @@ namespace GameHandler.UnitTests.Extensions
public void GetExpenseTriggers_SinkAndBellReturnsSinkAndBellTrigger() public void GetExpenseTriggers_SinkAndBellReturnsSinkAndBellTrigger()
{ {
var bs = BoardState.Create(); 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); var tirgger = pt.GetExpenseTriggers(bs);
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.Sink, ExpenseTrigger.Bell }); CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.Sink, ExpenseTrigger.Bell });
} }
@ -36,7 +36,7 @@ namespace GameHandler.UnitTests.Extensions
public void GetExpenseTriggers_NoWoodReturnsNoWoodTrigger() public void GetExpenseTriggers_NoWoodReturnsNoWoodTrigger()
{ {
var bs = BoardState.Create(); 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); var tirgger = pt.GetExpenseTriggers(bs);
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.NoWood }); CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.NoWood });
} }
@ -45,7 +45,7 @@ namespace GameHandler.UnitTests.Extensions
public void GetExpenseTriggers_CircleReturnsCircleTrigger() public void GetExpenseTriggers_CircleReturnsCircleTrigger()
{ {
var bs = BoardState.Create(); 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); var tirgger = pt.GetExpenseTriggers(bs);
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.Circle }); CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.Circle });
} }
@ -54,7 +54,7 @@ namespace GameHandler.UnitTests.Extensions
public void GetExpenseTriggers_NineReturnsNineTrigger() public void GetExpenseTriggers_NineReturnsNineTrigger()
{ {
var bs = BoardState.Create(); 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); var tirgger = pt.GetExpenseTriggers(bs);
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.NinePins }); CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.NinePins });
} }
@ -63,7 +63,7 @@ namespace GameHandler.UnitTests.Extensions
public void GetExpenseTriggers_SinkAtStartReturnsSinkAtStartTrigger() public void GetExpenseTriggers_SinkAtStartReturnsSinkAtStartTrigger()
{ {
var bs = BoardState.Create(ThrowMode.Decrease); 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); var tirgger = pt.GetExpenseTriggers(bs);
CollectionAssert.AreEqual(tirgger, new[] { ExpenseTrigger.FullSink }); 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.NinePins }, "alle Neune", 1m, true),
Expense.Create(ExpenseType.Monetary,new[] { ExpenseTrigger.Eliminated }, "Ausgeschieden", 0.5m, false), 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.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.FirstThrowFail }, "Anwurffehler", 0.5m, false),
Expense.Create(ExpenseType.Monetary,new[] { ExpenseTrigger.ExpensePoint }, "Strafpunkt, z.B. im \"Scheißspiel\"", 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() public void PicturePlusSinkIsSamePicture()
{ {
var p = PinPicture.Create(); 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)); Assert.That(p,Is.EqualTo(p2));
} }
@ -135,31 +135,31 @@ namespace GameHandler.UnitTests
{ {
var p1 = PinPicture.Create(); var p1 = PinPicture.Create();
var throwPic1 = PinPicture.Create(1, PinState.Down); 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 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 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 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 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 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 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 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 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 p2 = p1 + pinThrow1;
var p3 = p2 + pinThrow2; var p3 = p2 + pinThrow2;

View File

@ -14,7 +14,7 @@ namespace GameHandler.UnitTests
public void AllNineThrow_IsNotIsNotCircle() 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 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.IsSink, Is.False);
Assert.That(t.IsNinePins, Is.True); Assert.That(t.IsNinePins, Is.True);
@ -27,7 +27,7 @@ namespace GameHandler.UnitTests
public void SinkThrow_IsNothing() 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 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.IsSink, Is.True);
Assert.That(t.IsNinePins, Is.False); Assert.That(t.IsNinePins, Is.False);
@ -40,7 +40,7 @@ namespace GameHandler.UnitTests
public void Circle_IsNotAllNine() 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 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.IsSink, Is.False);
Assert.That(t.IsNinePins, Is.False); Assert.That(t.IsNinePins, Is.False);
@ -53,7 +53,7 @@ namespace GameHandler.UnitTests
public void NoWood_IsNotSink() 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 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.IsSink, Is.False);
Assert.That(t.IsNinePins, Is.False); Assert.That(t.IsNinePins, Is.False);
Assert.That(t.IsCircle, Is.False); Assert.That(t.IsCircle, Is.False);

View File

@ -166,9 +166,14 @@ namespace GameModel
{ {
return this.GetEnumerator(); return this.GetEnumerator();
} }
public static PinPicture Create(int pinNumber, PinState pinState) 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(); 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; states[pinNumber - 1] = pinState;
return PinPicture.Create(states); return PinPicture.Create(states);

View File

@ -23,10 +23,11 @@ namespace GameModel
{ {
return new PinThrow(PlayerId, PicPicture, IsBell, IsSink); 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);
} }
} }
} }