From e9005aea22508ccb482110a84d6412d1721a395f Mon Sep 17 00:00:00 2001 From: Renette Ros Date: Sat, 31 Aug 2019 23:04:04 +0200 Subject: [PATCH 1/3] Add failing unit test for current worm dead edge case --- .../game/engine/player/WormsPlayerTest.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/game-engine/src/jvmTest/kotlin/za/co/entelect/challenge/game/engine/player/WormsPlayerTest.kt b/game-engine/src/jvmTest/kotlin/za/co/entelect/challenge/game/engine/player/WormsPlayerTest.kt index 4539c257..4c12cfa6 100644 --- a/game-engine/src/jvmTest/kotlin/za/co/entelect/challenge/game/engine/player/WormsPlayerTest.kt +++ b/game-engine/src/jvmTest/kotlin/za/co/entelect/challenge/game/engine/player/WormsPlayerTest.kt @@ -49,6 +49,20 @@ class WormsPlayerTest { assertEquals(player.worms[0], player.currentWorm) } + @Test + fun test_player_wormSelection_currentWormDead() { + val player = WormsPlayer.build(2, config) + + player.updateCurrentWorm(player.worms[1]) + player.worms[1].health = 0; + + assertEquals(2, player.currentWorm.id); + + player.selectNextWorm(); + + assertEquals(3, player.currentWorm.id) + } + @Test fun test_player_dead() { val player = WormsPlayer.build(0, config) From bf3781d440b6e49692171cdddcb2f9b11c407670 Mon Sep 17 00:00:00 2001 From: Renette Ros Date: Sat, 31 Aug 2019 23:12:49 +0200 Subject: [PATCH 2/3] Add additional unit tests and fix current worm dying edge case --- .../game/engine/player/WormsPlayer.kt | 4 +-- .../game/engine/player/WormsPlayerTest.kt | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/game-engine/src/commonMain/kotlin/za/co/entelect/challenge/game/engine/player/WormsPlayer.kt b/game-engine/src/commonMain/kotlin/za/co/entelect/challenge/game/engine/player/WormsPlayer.kt index cd4785f1..2d20316f 100644 --- a/game-engine/src/commonMain/kotlin/za/co/entelect/challenge/game/engine/player/WormsPlayer.kt +++ b/game-engine/src/commonMain/kotlin/za/co/entelect/challenge/game/engine/player/WormsPlayer.kt @@ -46,8 +46,8 @@ class WormsPlayer private constructor(val id: Int, //Assign living worms to a local variable since it is a computed property val livingWorms = this.livingWorms if (livingWorms.isNotEmpty()) { - val nextIndex = (livingWorms.indexOf(currentWorm) + 1) % livingWorms.size - updateCurrentWorm(livingWorms[nextIndex]) + val nextWorm = livingWorms.firstOrNull { it.id > currentWorm.id } ?: livingWorms.first() + updateCurrentWorm(nextWorm) } } diff --git a/game-engine/src/jvmTest/kotlin/za/co/entelect/challenge/game/engine/player/WormsPlayerTest.kt b/game-engine/src/jvmTest/kotlin/za/co/entelect/challenge/game/engine/player/WormsPlayerTest.kt index 4c12cfa6..95ff5c36 100644 --- a/game-engine/src/jvmTest/kotlin/za/co/entelect/challenge/game/engine/player/WormsPlayerTest.kt +++ b/game-engine/src/jvmTest/kotlin/za/co/entelect/challenge/game/engine/player/WormsPlayerTest.kt @@ -49,6 +49,32 @@ class WormsPlayerTest { assertEquals(player.worms[0], player.currentWorm) } + @Test + fun test_player_wormSelection_All() { + val player = WormsPlayer.build(2, config) + assertEquals(1, player.currentWorm.id) + + player.selectNextWorm() + assertEquals(player.worms[1], player.currentWorm) + assertEquals(2, player.currentWorm.id) + + player.selectNextWorm() + assertEquals(player.worms[2], player.currentWorm) + assertEquals(3, player.currentWorm.id) + + player.selectNextWorm() + assertEquals(player.worms[0], player.currentWorm) + assertEquals(1, player.currentWorm.id) + + player.selectNextWorm() + assertEquals(player.worms[1], player.currentWorm) + assertEquals(2, player.currentWorm.id) + + player.selectNextWorm() + assertEquals(player.worms[2], player.currentWorm) + assertEquals(3, player.currentWorm.id) + } + @Test fun test_player_wormSelection_currentWormDead() { val player = WormsPlayer.build(2, config) From f7304a8ed4c8d1ae2abce1ff466b180edbcdb80b Mon Sep 17 00:00:00 2001 From: Renette Ros Date: Mon, 2 Sep 2019 09:32:39 +0200 Subject: [PATCH 3/3] Bump version --- game-engine/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game-engine/build.gradle.kts b/game-engine/build.gradle.kts index bb5881ef..f50f96f2 100644 --- a/game-engine/build.gradle.kts +++ b/game-engine/build.gradle.kts @@ -11,7 +11,7 @@ plugins { } group = "za.co.entelect.challenge" -version = "2019.3.1" +version = "2019.3.2" repositories { mavenLocal()