PlayerHand test
This commit is contained in:
@@ -2,7 +2,7 @@ package eventDemo.app.entity
|
|||||||
|
|
||||||
typealias PlayerHands = Map<Player, List<Card>>
|
typealias PlayerHands = Map<Player, List<Card>>
|
||||||
|
|
||||||
fun PlayerHands.addCard(
|
fun PlayerHands.removeCard(
|
||||||
player: Player,
|
player: Player,
|
||||||
card: Card,
|
card: Card,
|
||||||
) = mapValues { (p, cards) ->
|
) = mapValues { (p, cards) ->
|
||||||
@@ -12,3 +12,14 @@ fun PlayerHands.addCard(
|
|||||||
cards
|
cards
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun PlayerHands.addCards(
|
||||||
|
player: Player,
|
||||||
|
newCards: List<Card>,
|
||||||
|
) = mapValues { (p, cards) ->
|
||||||
|
if (p == player) {
|
||||||
|
cards + newCards
|
||||||
|
} else {
|
||||||
|
cards
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
42
src/test/kotlin/eventDemo/app/entity/PlayerHandKtTest.kt
Normal file
42
src/test/kotlin/eventDemo/app/entity/PlayerHandKtTest.kt
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
package eventDemo.app.entity
|
||||||
|
|
||||||
|
import io.kotest.core.spec.style.FunSpec
|
||||||
|
import io.kotest.matchers.ints.shouldBeExactly
|
||||||
|
import kotlin.test.assertNotNull
|
||||||
|
|
||||||
|
class PlayerHandKtTest :
|
||||||
|
FunSpec({
|
||||||
|
test("addCards") {
|
||||||
|
// Given
|
||||||
|
val playerNumbers = 4
|
||||||
|
val players = (1..playerNumbers).map { Player(name = "name $it") }.toSet()
|
||||||
|
val firstPlayer = players.first()
|
||||||
|
val playersHands: PlayerHands = players.associateWith { emptyList() }
|
||||||
|
val card = Card.NumericCard(0, Card.Color.Red)
|
||||||
|
|
||||||
|
// When
|
||||||
|
val newHands: PlayerHands = playersHands.addCards(firstPlayer, listOf(card))
|
||||||
|
|
||||||
|
assertNotNull(newHands[firstPlayer]).size shouldBeExactly 1
|
||||||
|
assertNotNull(newHands[players.last()]).size shouldBeExactly 0
|
||||||
|
}
|
||||||
|
|
||||||
|
test("removeCard") {
|
||||||
|
// Given
|
||||||
|
val playerNumbers = 4
|
||||||
|
val players = (1..playerNumbers).map { Player(name = "name $it") }.toSet()
|
||||||
|
val firstPlayer = players.first()
|
||||||
|
val card1 = Card.NumericCard(1, Card.Color.Red)
|
||||||
|
val card2 = Card.NumericCard(2, Card.Color.Red)
|
||||||
|
val playersHands: PlayerHands =
|
||||||
|
players
|
||||||
|
.associateWith<Player, List<Card>> { emptyList() }
|
||||||
|
.addCards(firstPlayer, listOf(card1, card2))
|
||||||
|
|
||||||
|
// When
|
||||||
|
val newHands: PlayerHands = playersHands.removeCard(firstPlayer, card1)
|
||||||
|
|
||||||
|
assertNotNull(newHands[firstPlayer]).size shouldBeExactly 1
|
||||||
|
assertNotNull(newHands[players.last()]).size shouldBeExactly 0
|
||||||
|
}
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user