From 073fdda6256dffdad47d3a4a539546fa6d7b84f1 Mon Sep 17 00:00:00 2001 From: Christian Kauer Date: Thu, 21 Dec 2023 18:07:30 +0100 Subject: [PATCH] dev --- GameHandler.UnitTests/ExpenseHandlerTests.cs | 20 +++++++++++++++++-- .../Extensions/PinThrowExtensionTests.cs | 12 +++++------ .../Mocks/FakeExpenseRepository.cs | 2 +- GameHandler.UnitTests/PinPictureTests.cs | 20 +++++++++---------- GameHandler.UnitTests/PinThrowTests.cs | 8 ++++---- GameModel/PinPicture.cs | 7 ++++++- GameModel/PinThrow.cs | 7 ++++--- 7 files changed, 49 insertions(+), 27 deletions(-) diff --git a/GameHandler.UnitTests/ExpenseHandlerTests.cs b/GameHandler.UnitTests/ExpenseHandlerTests.cs index 2dcf340..750057a 100644 --- a/GameHandler.UnitTests/ExpenseHandlerTests.cs +++ b/GameHandler.UnitTests/ExpenseHandlerTests.cs @@ -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()); } } } diff --git a/GameHandler.UnitTests/Extensions/PinThrowExtensionTests.cs b/GameHandler.UnitTests/Extensions/PinThrowExtensionTests.cs index 1f50d4e..d9b3300 100644 --- a/GameHandler.UnitTests/Extensions/PinThrowExtensionTests.cs +++ b/GameHandler.UnitTests/Extensions/PinThrowExtensionTests.cs @@ -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 }); } diff --git a/GameHandler.UnitTests/Mocks/FakeExpenseRepository.cs b/GameHandler.UnitTests/Mocks/FakeExpenseRepository.cs index bf713e4..50f85bb 100644 --- a/GameHandler.UnitTests/Mocks/FakeExpenseRepository.cs +++ b/GameHandler.UnitTests/Mocks/FakeExpenseRepository.cs @@ -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), }; diff --git a/GameHandler.UnitTests/PinPictureTests.cs b/GameHandler.UnitTests/PinPictureTests.cs index 387a667..32b5fb2 100644 --- a/GameHandler.UnitTests/PinPictureTests.cs +++ b/GameHandler.UnitTests/PinPictureTests.cs @@ -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; diff --git a/GameHandler.UnitTests/PinThrowTests.cs b/GameHandler.UnitTests/PinThrowTests.cs index a165e42..9787604 100644 --- a/GameHandler.UnitTests/PinThrowTests.cs +++ b/GameHandler.UnitTests/PinThrowTests.cs @@ -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); diff --git a/GameModel/PinPicture.cs b/GameModel/PinPicture.cs index fe01924..2b1aae0 100644 --- a/GameModel/PinPicture.cs +++ b/GameModel/PinPicture.cs @@ -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(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); diff --git a/GameModel/PinThrow.cs b/GameModel/PinThrow.cs index 308a4e4..5319539 100644 --- a/GameModel/PinThrow.cs +++ b/GameModel/PinThrow.cs @@ -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); } } }