From cb9c29763983618de0c621dc658a37a9637d755e Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Mon, 14 Feb 2022 21:05:20 +0100 Subject: [PATCH 01/11] =?UTF-8?q?Index=20des=20aktuellen=20Spielers=20und?= =?UTF-8?q?=20naiver=20Test=20f=C3=BCr=20TicTacToe.SpielerWechsel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MiniGames/Client/ViewModel/TicTacToe.cs | 11 +++++++++ .../MiniGames/Shared/Models/TicTacToeModel.cs | 1 + .../MiniGamesTests/TicTacToeTest.cs | 23 ++++++++++++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs index c844f89..0cdcefd 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs @@ -17,9 +17,20 @@ namespace MiniGames.Client.ViewModel set { Model.Brett = value; } } + public int AktiverSpielerIndex + { + get { return Model.AktiverSpielerIndex; } + set { Model.AktiverSpielerIndex = value; } + } + public bool SpielerInput(int spielerIndex, int posIndex) { return true; } + + public void SpielerWechsel() + { + AktiverSpielerIndex = 1; + } } } diff --git a/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs b/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs index cc67cbf..140cb73 100644 --- a/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs +++ b/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs @@ -9,6 +9,7 @@ namespace MiniGames.Shared.Models public class TicTacToeModel { public SpielerModel[] Spieler { get; set; } + public int AktiverSpielerIndex { get; set; } = 0; public TicTacToeBrett Brett { get; set; } } } diff --git a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs index 9b7e21d..338d44c 100644 --- a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs +++ b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs @@ -1,4 +1,5 @@ -using MiniGames.Shared.Models; +using MiniGames.Client.ViewModel; +using MiniGames.Shared.Models; using Xunit; namespace MiniGamesTests @@ -35,5 +36,25 @@ namespace MiniGamesTests Brett = StandardBrett(), }; } + + TicTacToe StandardSpiel() + { + return new(StandardModel()); + } + + [Fact] + public void SpielerWechselTest() + { + // arrange + TicTacToe spiel = StandardSpiel(); + spiel.AktiverSpielerIndex = 0; + int erwarteterIndex = 1; + + // act + spiel.SpielerWechsel(); + + // assert + Assert.Equal(erwarteterIndex, spiel.AktiverSpielerIndex); + } } } From f5e5c70190be0e882f34673acd95028fcdbae445 Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Mon, 14 Feb 2022 21:12:27 +0100 Subject: [PATCH 02/11] TicTacToe.SpielerWechsel setzt AktiverSpielerIndex auf den jeweils anderen --- BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs | 2 +- BlazorSolution/MiniGamesTests/TicTacToeTest.cs | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs index 0cdcefd..87f0c0a 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs @@ -30,7 +30,7 @@ namespace MiniGames.Client.ViewModel public void SpielerWechsel() { - AktiverSpielerIndex = 1; + AktiverSpielerIndex = (AktiverSpielerIndex == 0) ? 1 : 0; } } } diff --git a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs index 338d44c..a15c1e9 100644 --- a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs +++ b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs @@ -42,13 +42,15 @@ namespace MiniGamesTests return new(StandardModel()); } - [Fact] - public void SpielerWechselTest() + [Theory] + [InlineData(0, 1)] + [InlineData(1, 0)] + public void SpielerWechselTest(int vorher, int nachher) { // arrange TicTacToe spiel = StandardSpiel(); - spiel.AktiverSpielerIndex = 0; - int erwarteterIndex = 1; + spiel.AktiverSpielerIndex = vorher; + int erwarteterIndex = nachher; // act spiel.SpielerWechsel(); From 4c152fc1ebd0d547aeeb84e5868b2b27616da25e Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Mon, 14 Feb 2022 21:24:15 +0100 Subject: [PATCH 03/11] Refactored TicTacToe.SpielerWechsel --- BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs index 87f0c0a..0b43462 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs @@ -30,7 +30,7 @@ namespace MiniGames.Client.ViewModel public void SpielerWechsel() { - AktiverSpielerIndex = (AktiverSpielerIndex == 0) ? 1 : 0; + AktiverSpielerIndex = 1 - AktiverSpielerIndex; } } } From 280c28c000bc139b5f712ed03601557c345aec41 Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Mon, 14 Feb 2022 23:08:46 +0100 Subject: [PATCH 04/11] =?UTF-8?q?fixed=20TicTacToeBrett.Set=20(x=20und=20y?= =?UTF-8?q?=20vertauscht)=20und=20mehr=20Tests=20f=C3=BCr=20TicTacToeBrett?= =?UTF-8?q?.Set?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MiniGames/Shared/Models/TicTacToeBrett.cs | 4 +- .../MiniGamesTests/TicTacToeBrettTest.cs | 40 ++++++++++++++----- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs b/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs index 8f2ab97..68d1b0d 100644 --- a/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs +++ b/BlazorSolution/MiniGames/Shared/Models/TicTacToeBrett.cs @@ -65,8 +65,8 @@ namespace MiniGames.Shared.Models public bool Set(int pos, int wert) { - int x = pos / 3; - int y = pos % 3; + int x = pos % 3; + int y = pos / 3; try { diff --git a/BlazorSolution/MiniGamesTests/TicTacToeBrettTest.cs b/BlazorSolution/MiniGamesTests/TicTacToeBrettTest.cs index 36ea54a..cb18287 100644 --- a/BlazorSolution/MiniGamesTests/TicTacToeBrettTest.cs +++ b/BlazorSolution/MiniGamesTests/TicTacToeBrettTest.cs @@ -21,20 +21,38 @@ namespace MiniGamesTests ); } - [Fact] - public void Set_FreiesFeldBelegenTest() + [Theory] + [InlineData(4, 0, + TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, + TicTacToeBrett.LEER, 0 + )] + [InlineData(0, 1, + 1 + )] + [InlineData(8, 2, + TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, + TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, + TicTacToeBrett.LEER, TicTacToeBrett.LEER, 2 + )] + [InlineData(6, 3, + TicTacToeBrett.LEER, TicTacToeBrett.LEER, 3, + TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, + TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER + )] + [InlineData(3, 4, + TicTacToeBrett.LEER, 4, TicTacToeBrett.LEER, + TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, + TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER + )] + public void Set_FreiesFeldBelegenTest(int pos, int wert, + int a = TicTacToeBrett.LEER, int b = TicTacToeBrett.LEER, int c = TicTacToeBrett.LEER, + int d = TicTacToeBrett.LEER, int e = TicTacToeBrett.LEER, int f = TicTacToeBrett.LEER, + int g = TicTacToeBrett.LEER, int h = TicTacToeBrett.LEER, int i = TicTacToeBrett.LEER + ) { // arrange TicTacToeBrett brett = new(); - TicTacToeBrett erwartetesBrett = TestBrett( - TicTacToeBrett.LEER, - TicTacToeBrett.LEER, - TicTacToeBrett.LEER, - TicTacToeBrett.LEER, - 0 - ); - int pos = 4; - int wert = 0; + TicTacToeBrett erwartetesBrett = TestBrett(a, b, c, d, e, f, g, h, i); bool erwartetGesetzt = true; // act From 4c2f15b5576583d23e1696b1c6a4adc4f67dcba6 Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Mon, 14 Feb 2022 23:15:53 +0100 Subject: [PATCH 05/11] =?UTF-8?q?Refactored=20TicTacToeBrettTest=20f=C3=BC?= =?UTF-8?q?r=20bessere=20Lesbarkeit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MiniGamesTests/TicTacToeBrettTest.cs | 128 +++++++++--------- 1 file changed, 65 insertions(+), 63 deletions(-) diff --git a/BlazorSolution/MiniGamesTests/TicTacToeBrettTest.cs b/BlazorSolution/MiniGamesTests/TicTacToeBrettTest.cs index cb18287..8d17b4c 100644 --- a/BlazorSolution/MiniGamesTests/TicTacToeBrettTest.cs +++ b/BlazorSolution/MiniGamesTests/TicTacToeBrettTest.cs @@ -5,49 +5,51 @@ namespace MiniGamesTests { public class TicTacToeBrettTest { + const int LEER = TicTacToeBrett.LEER; + public TicTacToeBrett TestBrett( - int a = TicTacToeBrett.LEER, int b = TicTacToeBrett.LEER, int c = TicTacToeBrett.LEER, - int d = TicTacToeBrett.LEER, int e = TicTacToeBrett.LEER, int f = TicTacToeBrett.LEER, - int g = TicTacToeBrett.LEER, int h = TicTacToeBrett.LEER, int i = TicTacToeBrett.LEER + int f00 = LEER, int f10 = LEER, int f20 = LEER, + int f01 = LEER, int f11 = LEER, int f21 = LEER, + int f02 = LEER, int f12 = LEER, int f22 = LEER ) { return new( new int[,] { - { a, b, c, }, - { d, e, f, }, - { g, h, i, }, + { f00, f01, f02, }, + { f10, f11, f12, }, + { f20, f21, f22, }, } ); } [Theory] [InlineData(4, 0, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - TicTacToeBrett.LEER, 0 + LEER, LEER, LEER, + LEER, 0 )] [InlineData(0, 1, 1 )] [InlineData(8, 2, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, 2 + LEER, LEER, LEER, + LEER, LEER, LEER, + LEER, LEER, 2 )] [InlineData(6, 3, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, 3, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER + LEER, LEER, LEER, + LEER, LEER, LEER, + 3, LEER, LEER )] [InlineData(3, 4, - TicTacToeBrett.LEER, 4, TicTacToeBrett.LEER, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER + LEER, LEER, LEER, + 4, LEER, LEER, + LEER, LEER, LEER )] public void Set_FreiesFeldBelegenTest(int pos, int wert, - int a = TicTacToeBrett.LEER, int b = TicTacToeBrett.LEER, int c = TicTacToeBrett.LEER, - int d = TicTacToeBrett.LEER, int e = TicTacToeBrett.LEER, int f = TicTacToeBrett.LEER, - int g = TicTacToeBrett.LEER, int h = TicTacToeBrett.LEER, int i = TicTacToeBrett.LEER + int a = LEER, int b = LEER, int c = LEER, + int d = LEER, int e = LEER, int f = LEER, + int g = LEER, int h = LEER, int i = LEER ) { // arrange @@ -207,7 +209,7 @@ namespace MiniGamesTests { // arrange TicTacToeBrett brett = TestBrett(); - int erwarteterGewinner = TicTacToeBrett.LEER; + int erwarteterGewinner = LEER; // act int erhaltenerGewinner = brett.Gewinner(); @@ -219,56 +221,56 @@ namespace MiniGamesTests [Theory] // Vertikale Reihe 1 [InlineData(0, - 0, 0, 0, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER + 0, LEER, LEER, + 0, LEER, LEER, + 0, LEER, LEER )] // Vertikale Reihe 2 [InlineData(1, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - 1, 1, 1, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER + LEER, 1, LEER, + LEER, 1, LEER, + LEER, 1, LEER )] // Vertikale Reihe 3 [InlineData(2, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - 2, 2, 2 + LEER, LEER, 2, + LEER, LEER, 2, + LEER, LEER, 2 )] // Horizontale Reihe 1 [InlineData(3, - 3, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - 3, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - 3, TicTacToeBrett.LEER, TicTacToeBrett.LEER + 3, 3, 3, + LEER, LEER, LEER, + LEER, LEER, LEER )] // Horizontale Reihe 2 [InlineData(4, - TicTacToeBrett.LEER, 4, TicTacToeBrett.LEER, - TicTacToeBrett.LEER, 4, TicTacToeBrett.LEER, - TicTacToeBrett.LEER, 4, TicTacToeBrett.LEER + LEER, LEER, LEER, + 4, 4, 4, + LEER, LEER, LEER )] // Horizontale Reihe 3 [InlineData(5, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, 5, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, 5, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, 5 + LEER, LEER, LEER, + LEER, LEER, LEER, + 5, 5, 5 )] // Diagonale Reihe links oben nach rechts unten [InlineData(6, - 6, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - TicTacToeBrett.LEER, 6, TicTacToeBrett.LEER, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, 6 + 6, LEER, LEER, + LEER, 6, LEER, + LEER, LEER, 6 )] // Diagonale Reihe rechts oben nach links unten [InlineData(7, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, 7, - TicTacToeBrett.LEER, 7, TicTacToeBrett.LEER, - 7, TicTacToeBrett.LEER, TicTacToeBrett.LEER + LEER, LEER, 7, + LEER, 7, LEER, + 7, LEER, LEER )] public void Gewinner_VolleReihenTest(int gewinner, - int a = TicTacToeBrett.LEER, int b = TicTacToeBrett.LEER, int c = TicTacToeBrett.LEER, - int d = TicTacToeBrett.LEER, int e = TicTacToeBrett.LEER, int f = TicTacToeBrett.LEER, - int g = TicTacToeBrett.LEER, int h = TicTacToeBrett.LEER, int i = TicTacToeBrett.LEER + int a = LEER, int b = LEER, int c = LEER, + int d = LEER, int e = LEER, int f = LEER, + int g = LEER, int h = LEER, int i = LEER ) { // arrange @@ -284,34 +286,34 @@ namespace MiniGamesTests [Theory] [InlineData( - 0, TicTacToeBrett.LEER, 0, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - 0, TicTacToeBrett.LEER, 0 + 0, LEER, 0, + LEER, LEER, LEER, + 0, LEER, 0 )] [InlineData( - 1, 1, TicTacToeBrett.LEER, - 1, 1, TicTacToeBrett.LEER, - TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER + 1, 1, LEER, + 1, 1, LEER, + LEER, LEER, LEER )] [InlineData( - 2, TicTacToeBrett.LEER, TicTacToeBrett.LEER, - 2, TicTacToeBrett.LEER, 2, - TicTacToeBrett.LEER, 2, 2 + 2, 2, LEER, + LEER, LEER, 2, + LEER, 2, 2 )] [InlineData( 1, 1, 2, - 1, 3, 2, - 2, 3, 3 + 1, 3, 3, + 2, 2, 3 )] public void Gewinner_NichtVolleReihenTest( - int a = TicTacToeBrett.LEER, int b = TicTacToeBrett.LEER, int c = TicTacToeBrett.LEER, - int d = TicTacToeBrett.LEER, int e = TicTacToeBrett.LEER, int f = TicTacToeBrett.LEER, - int g = TicTacToeBrett.LEER, int h = TicTacToeBrett.LEER, int i = TicTacToeBrett.LEER + int a = LEER, int b = LEER, int c = LEER, + int d = LEER, int e = LEER, int f = LEER, + int g = LEER, int h = LEER, int i = LEER ) { // arrange TicTacToeBrett brett = TestBrett(a, b, c, d, e, f, g, h, i); - int erwarteterGewinner = TicTacToeBrett.LEER; + int erwarteterGewinner = LEER; // act int erhaltenerGewinner = brett.Gewinner(); From 486401d94101bca2eb57da6832279161042e34a6 Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Mon, 14 Feb 2022 23:34:07 +0100 Subject: [PATCH 06/11] TicTacToe.SpielerInput-Test setzt Feldwert in Brett --- .../MiniGames/Client/ViewModel/ITicTacToe.cs | 2 +- .../MiniGames/Client/ViewModel/TicTacToe.cs | 4 ++-- .../MiniGamesTests/TicTacToeTest.cs | 20 +++++++++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/BlazorSolution/MiniGames/Client/ViewModel/ITicTacToe.cs b/BlazorSolution/MiniGames/Client/ViewModel/ITicTacToe.cs index 6d9794a..f4d6804 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/ITicTacToe.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/ITicTacToe.cs @@ -2,6 +2,6 @@ { public interface ITicTacToe { - bool SpielerInput(int spielerIndex, int posIndex); + void SpielerInput(int posIndex); } } diff --git a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs index 0b43462..a086f3f 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs @@ -23,9 +23,9 @@ namespace MiniGames.Client.ViewModel set { Model.AktiverSpielerIndex = value; } } - public bool SpielerInput(int spielerIndex, int posIndex) + public void SpielerInput(int posIndex) { - return true; + Brett.Set(posIndex, AktiverSpielerIndex); } public void SpielerWechsel() diff --git a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs index a15c1e9..fb94e6f 100644 --- a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs +++ b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs @@ -58,5 +58,25 @@ namespace MiniGamesTests // assert Assert.Equal(erwarteterIndex, spiel.AktiverSpielerIndex); } + + [Fact] + public void SpielerInput_ValidesInputTest() + { + // arrange + TicTacToe spiel = StandardSpiel(); + int pos = 2; + TicTacToeBrett erwartetesBrett = new(new int[,] + { + { TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, }, + { TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, }, + { spiel.AktiverSpielerIndex, TicTacToeBrett.LEER, TicTacToeBrett.LEER, }, + }); + + // act + spiel.SpielerInput(pos); + + // assert + Assert.True(spiel.Brett.Gleich(erwartetesBrett)); + } } } From c237f579a32c137a0a5d58a56e4a4aadcdca24ed Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Mon, 14 Feb 2022 23:37:15 +0100 Subject: [PATCH 07/11] TicTacToe.SpielerInput wechselt den aktiven Spieler --- BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs | 1 + BlazorSolution/MiniGamesTests/TicTacToeTest.cs | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs index a086f3f..611c364 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs @@ -26,6 +26,7 @@ namespace MiniGames.Client.ViewModel public void SpielerInput(int posIndex) { Brett.Set(posIndex, AktiverSpielerIndex); + SpielerWechsel(); } public void SpielerWechsel() diff --git a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs index fb94e6f..cefd005 100644 --- a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs +++ b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs @@ -64,6 +64,9 @@ namespace MiniGamesTests { // arrange TicTacToe spiel = StandardSpiel(); + spiel.AktiverSpielerIndex = 0; + int erwarteterSpielerIndex = 1; + int pos = 2; TicTacToeBrett erwartetesBrett = new(new int[,] { @@ -77,6 +80,7 @@ namespace MiniGamesTests // assert Assert.True(spiel.Brett.Gleich(erwartetesBrett)); + Assert.Equal(erwarteterSpielerIndex, spiel.AktiverSpielerIndex); } } } From 177c717f4a8513aa35c1b247baa1bf1410b61040 Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Mon, 14 Feb 2022 23:43:47 +0100 Subject: [PATCH 08/11] TicTacToe.SpielerInput wechselt nur bei validem Input den Spieler --- .../MiniGames/Client/ViewModel/TicTacToe.cs | 6 ++++-- .../MiniGamesTests/TicTacToeTest.cs | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs index 611c364..81eea92 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs @@ -25,8 +25,10 @@ namespace MiniGames.Client.ViewModel public void SpielerInput(int posIndex) { - Brett.Set(posIndex, AktiverSpielerIndex); - SpielerWechsel(); + if (Brett.Set(posIndex, AktiverSpielerIndex)) + { + SpielerWechsel(); + } } public void SpielerWechsel() diff --git a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs index cefd005..f9e25ce 100644 --- a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs +++ b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs @@ -82,5 +82,24 @@ namespace MiniGamesTests Assert.True(spiel.Brett.Gleich(erwartetesBrett)); Assert.Equal(erwarteterSpielerIndex, spiel.AktiverSpielerIndex); } + + [Fact] + public void SpielerInput_InvalidesInputTest() + { + // arrange + TicTacToe spiel = StandardSpiel(); + spiel.AktiverSpielerIndex = 0; + int erwarteterSpielerIndex = 0; + + int pos = -1; + TicTacToeBrett erwartetesBrett = StandardBrett(); + + // act + spiel.SpielerInput(pos); + + // assert + Assert.True(spiel.Brett.Gleich(erwartetesBrett)); + Assert.Equal(erwarteterSpielerIndex, spiel.AktiverSpielerIndex); + } } } From e8fac71530cc98221936bf0984a211720294bd88 Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Tue, 15 Feb 2022 00:02:29 +0100 Subject: [PATCH 09/11] TicTacToeBrett.Gewinner setzt GewinnerIndex --- .../MiniGames/Client/ViewModel/TicTacToe.cs | 8 ++++++++ .../MiniGames/Shared/Models/TicTacToeModel.cs | 1 + .../MiniGamesTests/TicTacToeTest.cs | 19 +++++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs index 81eea92..c8583bc 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs @@ -23,12 +23,20 @@ namespace MiniGames.Client.ViewModel set { Model.AktiverSpielerIndex = value; } } + public int GewinnerIndex + { + get { return Model.GewinnerIndex; } + set { Model.GewinnerIndex = value; } + } + public void SpielerInput(int posIndex) { if (Brett.Set(posIndex, AktiverSpielerIndex)) { SpielerWechsel(); } + + GewinnerIndex = Brett.Gewinner(); } public void SpielerWechsel() diff --git a/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs b/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs index 140cb73..895e815 100644 --- a/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs +++ b/BlazorSolution/MiniGames/Shared/Models/TicTacToeModel.cs @@ -10,6 +10,7 @@ namespace MiniGames.Shared.Models { public SpielerModel[] Spieler { get; set; } public int AktiverSpielerIndex { get; set; } = 0; + public int GewinnerIndex { get; set; } = -1; public TicTacToeBrett Brett { get; set; } } } diff --git a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs index f9e25ce..0f14cf3 100644 --- a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs +++ b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs @@ -101,5 +101,24 @@ namespace MiniGamesTests Assert.True(spiel.Brett.Gleich(erwartetesBrett)); Assert.Equal(erwarteterSpielerIndex, spiel.AktiverSpielerIndex); } + + [Fact] + public void SpielerInput_GewinnerTest() + { + // arrange + TicTacToe spiel = StandardSpiel(); + spiel.AktiverSpielerIndex = 0; + int erwarteterGewinnerIndex = 0; + + // act + spiel.SpielerInput(0); + spiel.SpielerInput(3); + spiel.SpielerInput(1); + spiel.SpielerInput(4); + spiel.SpielerInput(2); + + // assert + Assert.Equal(spiel.GewinnerIndex, erwarteterGewinnerIndex); + } } } From 48177c625095c9769ac9b4c42dd284d6855b2a2b Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Tue, 15 Feb 2022 00:23:31 +0100 Subject: [PATCH 10/11] =?UTF-8?q?Kein-Gewinner-Test=20f=C3=BCr=20TicTacToe?= =?UTF-8?q?.SpielerInput?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MiniGamesTests/TicTacToeTest.cs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs index 0f14cf3..e98daaa 100644 --- a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs +++ b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs @@ -120,5 +120,25 @@ namespace MiniGamesTests // assert Assert.Equal(spiel.GewinnerIndex, erwarteterGewinnerIndex); } + + [Fact] + public void SpielerInput_KeinGewinnerTest() + { + // arrange + TicTacToe spiel = StandardSpiel(); + spiel.AktiverSpielerIndex = 0; + int erwarteterGewinnerIndex = -1; + + // act + spiel.SpielerInput(0); + spiel.SpielerInput(3); + spiel.SpielerInput(1); + spiel.SpielerInput(4); + spiel.SpielerInput(5); + spiel.SpielerInput(2); + + // assert + Assert.Equal(spiel.GewinnerIndex, erwarteterGewinnerIndex); + } } } From 2e56a1e0cba7b14252016ac4be857b8f35bc20ea Mon Sep 17 00:00:00 2001 From: Felix Detig Date: Tue, 15 Feb 2022 00:33:20 +0100 Subject: [PATCH 11/11] =?UTF-8?q?TicTacToe=20verhindert=20=C3=BCberschreib?= =?UTF-8?q?en=20des=20ersten=20Gewinners?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MiniGames/Client/ViewModel/TicTacToe.cs | 7 ++++++- BlazorSolution/MiniGamesTests/TicTacToeTest.cs | 18 +++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs index c8583bc..514d129 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/TicTacToe.cs @@ -26,7 +26,12 @@ namespace MiniGames.Client.ViewModel public int GewinnerIndex { get { return Model.GewinnerIndex; } - set { Model.GewinnerIndex = value; } + set { + if (Model.GewinnerIndex < 0) + { + Model.GewinnerIndex = value; + } + } } public void SpielerInput(int posIndex) diff --git a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs index e98daaa..9a43703 100644 --- a/BlazorSolution/MiniGamesTests/TicTacToeTest.cs +++ b/BlazorSolution/MiniGamesTests/TicTacToeTest.cs @@ -102,20 +102,20 @@ namespace MiniGamesTests Assert.Equal(erwarteterSpielerIndex, spiel.AktiverSpielerIndex); } - [Fact] - public void SpielerInput_GewinnerTest() + [Theory] + [InlineData(0, 0, 3, 1, 4, 2)] + [InlineData(0, 3, 0, 4, 1, 5, 2)] + public void SpielerInput_GewinnerTest(int gewinnerIndex, params int[] inputs) { // arrange TicTacToe spiel = StandardSpiel(); - spiel.AktiverSpielerIndex = 0; - int erwarteterGewinnerIndex = 0; + int erwarteterGewinnerIndex = gewinnerIndex; // act - spiel.SpielerInput(0); - spiel.SpielerInput(3); - spiel.SpielerInput(1); - spiel.SpielerInput(4); - spiel.SpielerInput(2); + foreach (int input in inputs) + { + spiel.SpielerInput(input); + } // assert Assert.Equal(spiel.GewinnerIndex, erwarteterGewinnerIndex);