diff --git a/src/main/kotlin/dartzee/game/GameType.kt b/src/main/kotlin/dartzee/game/GameType.kt index dab761da..9e761ab4 100644 --- a/src/main/kotlin/dartzee/game/GameType.kt +++ b/src/main/kotlin/dartzee/game/GameType.kt @@ -2,6 +2,8 @@ package dartzee.game import dartzee.db.DartzeeTemplateEntity +const val GAME_PARAMS_NOT_APPLICABLE = "N/A" + enum class GameType { X01, GOLF, @@ -26,11 +28,16 @@ enum class GameType { } } - fun getParamsDescription(gameParams: String) = - when (this) { + fun getParamsDescription(gameParams: String): String { + if (gameParams == GAME_PARAMS_NOT_APPLICABLE) { + return GAME_PARAMS_NOT_APPLICABLE + } + + return when (this) { X01 -> X01Config.fromJson(gameParams).description() GOLF -> "$gameParams holes" ROUND_THE_CLOCK -> RoundTheClockConfig.fromJson(gameParams).getDescription() DARTZEE -> DartzeeTemplateEntity().retrieveForId(gameParams, false)?.name.orEmpty() } + } } diff --git a/src/main/kotlin/dartzee/screen/stats/player/StatisticsTabTotalScore.kt b/src/main/kotlin/dartzee/screen/stats/player/StatisticsTabTotalScore.kt index 5a45d244..0a6b9417 100644 --- a/src/main/kotlin/dartzee/screen/stats/player/StatisticsTabTotalScore.kt +++ b/src/main/kotlin/dartzee/screen/stats/player/StatisticsTabTotalScore.kt @@ -6,6 +6,7 @@ import dartzee.core.bean.NumberField import dartzee.core.bean.selectedItemTyped import dartzee.core.obj.HashMapCount import dartzee.core.util.TableUtil.DefaultModel +import dartzee.game.GAME_PARAMS_NOT_APPLICABLE import dartzee.screen.stats.median import dartzee.stats.GameWrapper import java.awt.BorderLayout @@ -315,7 +316,7 @@ class StatisticsTabTotalScore(private val graphTitle: String, outlierMax: Int) : // Handle 0 games if (startingScores.isEmpty()) { - startingScores.add("N/A") + startingScores.add(GAME_PARAMS_NOT_APPLICABLE) } val comboOptions = diff --git a/src/test/kotlin/dartzee/achievements/x01/TestAchievementX01BestGame.kt b/src/test/kotlin/dartzee/achievements/x01/TestAchievementX01BestGame.kt index 09686acd..91cb388c 100644 --- a/src/test/kotlin/dartzee/achievements/x01/TestAchievementX01BestGame.kt +++ b/src/test/kotlin/dartzee/achievements/x01/TestAchievementX01BestGame.kt @@ -1,7 +1,9 @@ package dartzee.achievements.x01 import dartzee.achievements.TestAbstractAchievementBestGame +import dartzee.game.FinishType import dartzee.game.GameType +import dartzee.game.X01Config import io.kotest.matchers.shouldBe import org.junit.jupiter.api.Test @@ -13,6 +15,9 @@ class TestAchievementX01BestGame : TestAbstractAchievementBestGame() { - override fun factoryStatsPanel() = GameStatisticsPanelX01("501") + override fun factoryStatsPanel() = factoryStatsPanel(501) + + private fun factoryStatsPanel(startingScore: Int) = + GameStatisticsPanelX01(X01Config(startingScore, FinishType.Doubles).toJson()) override fun makePlayerState() = makeX01PlayerState(completedRound = listOf(Dart(20, 1), Dart(5, 1), Dart(1, 1))) @Test fun `Should set the maximum setupThreshold to be 1 less than the starting score`() { - val panel = GameStatisticsPanelX01("501") + val panel = factoryStatsPanel(501) panel.nfSetupThreshold.getMaximum() shouldBe 500 - val panelTwo = GameStatisticsPanelX01("301") + val panelTwo = factoryStatsPanel(301) panelTwo.nfSetupThreshold.getMaximum() shouldBe 300 } @@ -128,7 +133,7 @@ class TestGameStatisticsPanelX01 : val state = makeX01PlayerState(player = insertPlayer(name = "Alice"), completedRound = roundOne) - val statsPanel = GameStatisticsPanelX01("501") + val statsPanel = factoryStatsPanel(501) statsPanel.showStats(listOf(state)) statsPanel.shouldHaveBreakdownState(hashMapOf("20 - 39" to 1)) @@ -183,7 +188,7 @@ class TestGameStatisticsPanelX01 : val state = makeX01PlayerState(player = insertPlayer(name = "Alice"), completedRound = roundOne) - val statsPanel = GameStatisticsPanelX01("701") + val statsPanel = factoryStatsPanel(701) statsPanel.showStats(listOf(state)) statsPanel.shouldHaveBreakdownState(hashMapOf("180" to 1)) @@ -213,7 +218,7 @@ class TestGameStatisticsPanelX01 : val state = makeX01PlayerState(player = insertPlayer(name = "Alice"), completedRound = roundOne) - val statsPanel = GameStatisticsPanelX01("501") + val statsPanel = factoryStatsPanel(501) statsPanel.showStats(listOf(state)) // [20, 20, 5] diff --git a/src/test/kotlin/dartzee/screen/game/x01/TestMatchStatisticsPanelX01.kt b/src/test/kotlin/dartzee/screen/game/x01/TestMatchStatisticsPanelX01.kt index 7b37d88c..a41c7ace 100644 --- a/src/test/kotlin/dartzee/screen/game/x01/TestMatchStatisticsPanelX01.kt +++ b/src/test/kotlin/dartzee/screen/game/x01/TestMatchStatisticsPanelX01.kt @@ -1,6 +1,7 @@ package dartzee.screen.game.x01 import dartzee.game.state.X01PlayerState +import dartzee.helper.DEFAULT_X01_CONFIG import dartzee.helper.makeDart import dartzee.helper.makeX01PlayerState import dartzee.helper.makeX01PlayerStateWithRounds @@ -13,7 +14,7 @@ import org.junit.jupiter.api.Test class TestMatchStatisticsPanelX01 : AbstractGameStatisticsPanelTest() { - override fun factoryStatsPanel() = MatchStatisticsPanelX01("501") + override fun factoryStatsPanel() = MatchStatisticsPanelX01(DEFAULT_X01_CONFIG.toJson()) override fun makePlayerState() = makeX01PlayerState(completedRound = listOf(Dart(20, 1), Dart(5, 1), Dart(1, 1))) diff --git a/src/test/kotlin/dartzee/screen/stats/player/x01/TestStatisticsTabX01ThreeDartAverage.kt b/src/test/kotlin/dartzee/screen/stats/player/x01/TestStatisticsTabX01ThreeDartAverage.kt index 7f2e0a31..aee8a4d5 100644 --- a/src/test/kotlin/dartzee/screen/stats/player/x01/TestStatisticsTabX01ThreeDartAverage.kt +++ b/src/test/kotlin/dartzee/screen/stats/player/x01/TestStatisticsTabX01ThreeDartAverage.kt @@ -25,6 +25,8 @@ import dartzee.drtOuterTwenty import dartzee.drtTrebleFourteen import dartzee.drtTrebleOne import dartzee.drtTrebleTwenty +import dartzee.game.FinishType +import dartzee.game.X01Config import dartzee.getRows import dartzee.helper.AbstractTest import dartzee.helper.makeGameWrapper @@ -144,7 +146,11 @@ class TestStatisticsTabX01ThreeDartAverage : AbstractTest() { listOf(drtDoubleSixteen()) // Fin. ) - val g = makeGameWrapper(gameParams = "301", dartRounds = rounds) + val g = + makeGameWrapper( + gameParams = X01Config(301, FinishType.Doubles).toJson(), + dartRounds = rounds + ) val tab = StatisticsTabX01ThreeDartAverage() tab.setFilteredGames(listOf(g), emptyList()) tab.populateStats()