Compare commits
13 Commits
47761bd4a6
...
2d6b56ccf1
| Author | SHA1 | Date | |
|---|---|---|---|
| 2d6b56ccf1 | |||
| 10fa4badf0 | |||
| f765dd64dd | |||
| ef7397f7f1 | |||
| d833932f16 | |||
| c5dd02a5e8 | |||
| 3048552f4c | |||
| ec94ecd46c | |||
| 20e8bae883 | |||
| a5dcf3ee90 | |||
| b9a7b0a2af | |||
| fbc0ea2277 | |||
| f998d5f6f0 |
@@ -37,13 +37,11 @@ class CardBaseManager extends CardManager {
|
||||
}
|
||||
|
||||
override def nextCard(): Card = {
|
||||
val card = cc(currentIdx)
|
||||
if (currentIdx + 1 > 51) {
|
||||
if (currentIdx > 51)
|
||||
throw new IndexOutOfBoundsException("Trying to access card 53(out of bounds)")
|
||||
} else {
|
||||
currentIdx += 1
|
||||
card
|
||||
}
|
||||
val card = cc(currentIdx)
|
||||
currentIdx += 1
|
||||
card
|
||||
}
|
||||
|
||||
override def removeCards(amount: Int): List[Card] = {
|
||||
|
||||
@@ -16,6 +16,7 @@ trait GameLogic extends EventHandler with SnapshottingGameLogic {
|
||||
def controlPreRound(): Unit
|
||||
def controlRound(): Unit
|
||||
def endRound(winner: AbstractPlayer, roundResult: RoundResult): Match
|
||||
def returnFromTie(winner: AbstractPlayer): Unit
|
||||
def controlTrick(): Unit
|
||||
def endTrick(): Round
|
||||
def controlPlayerPlay(): Unit
|
||||
@@ -27,12 +28,15 @@ trait GameLogic extends EventHandler with SnapshottingGameLogic {
|
||||
def playerTieLogic: PlayerTieLogic
|
||||
def undoManager: UndoManager
|
||||
def persistenceManager: PersistenceManager
|
||||
|
||||
def changeState(gameState: GameState): Unit
|
||||
|
||||
def getCurrentState: GameState
|
||||
def getCurrentMatch: Option[Match]
|
||||
def getCurrentRound: Option[Round]
|
||||
def getCurrentTrick: Option[Trick]
|
||||
def getCurrentPlayer: Option[AbstractPlayer]
|
||||
def getWinner: Option[AbstractPlayer]
|
||||
def getTrumpPlayer: Option[AbstractPlayer]
|
||||
def getPlayerQueue: Option[CustomPlayerQueue[AbstractPlayer]]
|
||||
|
||||
}
|
||||
|
||||
@@ -53,8 +53,7 @@ final class BaseGameLogic(val config: Configuration) extends EventHandler with G
|
||||
currentTrick = None
|
||||
currentPlayer = None
|
||||
playerQueue = None
|
||||
invoke(GameStateChangeEvent(state, Lobby))
|
||||
state = Lobby
|
||||
changeState(Lobby)
|
||||
}
|
||||
|
||||
override def createMatch(players: List[AbstractPlayer]): Match = {
|
||||
@@ -72,20 +71,23 @@ final class BaseGameLogic(val config: Configuration) extends EventHandler with G
|
||||
if (matchImpl.isOver) {
|
||||
//Winner is the last person in the playersIn list
|
||||
val winner = matchImpl.playersIn.head
|
||||
|
||||
invoke(GameStateChangeEvent(state, FinishedMatch))
|
||||
state = FinishedMatch
|
||||
|
||||
changeState(FinishedMatch)
|
||||
invoke(MatchEndEvent(winner))
|
||||
} else {
|
||||
|
||||
changeState(InGame)
|
||||
|
||||
if (matchImpl.roundlist.isEmpty) {
|
||||
if (cardManager.isEmpty) throw new IllegalStateException("No card manager set")
|
||||
val cardManagerImpl = cardManager.get
|
||||
cardManagerImpl.shuffleAndReset()
|
||||
val firstCard = cardManagerImpl.nextCard()
|
||||
val newRound = RoundUtil.createRound(firstCard.suit, true)
|
||||
|
||||
providePlayersWithCards()
|
||||
|
||||
val randomPlayer: Int = 1//Random.nextInt(matchImpl.playersIn.size)
|
||||
val randomPlayer: Int = Random.nextInt(matchImpl.playersIn.size)
|
||||
playerQueue = Some(config.createRightQueue(matchImpl.playersIn.toArray, randomPlayer))
|
||||
|
||||
matchImpl.playersIn.foreach(player => {invoke(ReceivedHandEvent(player))})
|
||||
@@ -93,7 +95,6 @@ final class BaseGameLogic(val config: Configuration) extends EventHandler with G
|
||||
currentRound = Some(newRound)
|
||||
|
||||
invoke(NewRoundEvent())
|
||||
invoke(DelayEvent(500))
|
||||
|
||||
controlRound()
|
||||
return
|
||||
@@ -106,36 +107,43 @@ final class BaseGameLogic(val config: Configuration) extends EventHandler with G
|
||||
controlPreRound()
|
||||
}
|
||||
}
|
||||
|
||||
override def returnFromTie(winner: AbstractPlayer): Unit = {
|
||||
if (currentMatch.isEmpty) throw new IllegalStateException("No current match set")
|
||||
val matchImpl = currentMatch.get
|
||||
if (currentRound.isEmpty) throw new IllegalStateException("No current round set")
|
||||
val roundImpl = currentRound.get
|
||||
|
||||
val roundResult: RoundResult = RoundUtil.finishRound(roundImpl, matchImpl)
|
||||
val newMatch = endRound(winner, roundResult)
|
||||
currentMatch = Some(newMatch)
|
||||
controlMatch()
|
||||
}
|
||||
|
||||
//
|
||||
override def controlPreRound(): Unit = {
|
||||
if (currentMatch.isEmpty) throw new IllegalStateException("No current match set")
|
||||
val matchImpl = currentMatch.get
|
||||
//Check if the last round had a winner
|
||||
val lastRound = matchImpl.roundlist.last
|
||||
if (lastRound.winner.isEmpty)
|
||||
throw new IllegalStateException("Last round had no winner")
|
||||
val lastWinner = lastRound.winner.get
|
||||
val lastWinner = getTrumpPlayer
|
||||
if (lastWinner.isEmpty) throw new IllegalStateException("No last round winner found")
|
||||
|
||||
//Create new player queue starting with last round winner
|
||||
|
||||
playerQueue = Some(config.createRightQueue(
|
||||
matchImpl.playersIn.toArray,
|
||||
matchImpl.playersIn.indexOf(lastWinner)
|
||||
matchImpl.playersIn.indexOf(lastWinner.get)
|
||||
))
|
||||
|
||||
invoke(GameStateChangeEvent(state, SelectTrump))
|
||||
state = SelectTrump
|
||||
changeState(SelectTrump)
|
||||
|
||||
invoke(TrumpSelectEvent(lastWinner))
|
||||
invoke(TrumpSelectEvent(lastWinner.get))
|
||||
|
||||
playerInputLogic.requestTrumpSuit(lastWinner)
|
||||
playerInputLogic.requestTrumpSuit(lastWinner.get)
|
||||
}
|
||||
|
||||
override def controlRound(): Unit = {
|
||||
if (state != InGame)
|
||||
invoke(GameStateChangeEvent(state, InGame))
|
||||
state = InGame
|
||||
changeState(InGame)
|
||||
if (currentMatch.isEmpty) throw new IllegalStateException("No current match set")
|
||||
val matchImpl = currentMatch.get
|
||||
if (currentRound.isEmpty) throw new IllegalStateException("No current round set")
|
||||
@@ -146,11 +154,9 @@ final class BaseGameLogic(val config: Configuration) extends EventHandler with G
|
||||
if (MatchUtil.isRoundOver(matchImpl, roundImpl)) {
|
||||
val roundResult: RoundResult = RoundUtil.finishRound(roundImpl, matchImpl)
|
||||
if (roundResult.isTie) {
|
||||
invoke(GameStateChangeEvent(state, TieBreak))
|
||||
state = TieBreak
|
||||
changeState(TieBreak)
|
||||
|
||||
invoke(TieEvent(roundResult.winners))
|
||||
invoke(DelayEvent(2000))
|
||||
|
||||
playerTieLogic.handleTie(roundResult)
|
||||
return
|
||||
@@ -161,7 +167,6 @@ final class BaseGameLogic(val config: Configuration) extends EventHandler with G
|
||||
} else {
|
||||
|
||||
invoke(NewTrickEvent())
|
||||
invoke(DelayEvent(1000))
|
||||
|
||||
val trick = Trick()
|
||||
currentTrick = Some(trick)
|
||||
@@ -185,16 +190,16 @@ final class BaseGameLogic(val config: Configuration) extends EventHandler with G
|
||||
invoke(RoundEndEvent(winner, roundResult.tricked.filter(
|
||||
rp => rp.player == winner
|
||||
).map(rp => rp.amountOfTricks).sum))
|
||||
invoke(DelayEvent(2000))
|
||||
|
||||
if (roundResult.notTricked.nonEmpty && !roundImpl.firstRound) {
|
||||
if (matchImpl.dogLife) {
|
||||
if (roundResult.notTricked.nonEmpty && !resultingRound.firstRound) {
|
||||
// When the number of cards is less than 2, dog life ends automatically
|
||||
val cantDogLife = (matchImpl.numberofcards - 1) < 2
|
||||
|
||||
if (matchImpl.dogLife && !cantDogLife) {
|
||||
invoke(ShowPlayersOutEvent(roundResult.notTricked))
|
||||
invoke(DelayEvent(2000))
|
||||
matchImpl = matchImpl.updatePlayersIn(matchImpl.playersIn.filterNot(roundResult.notTricked.contains(_)))
|
||||
} else {
|
||||
invoke(ShowDogsEvent(roundResult.notTricked))
|
||||
invoke(DelayEvent(2000))
|
||||
matchImpl = matchImpl.setDogLife()
|
||||
// Make players dogs
|
||||
roundResult.notTricked.foreach(player => {
|
||||
@@ -226,7 +231,6 @@ final class BaseGameLogic(val config: Configuration) extends EventHandler with G
|
||||
|
||||
invoke(TrickEndEvent(winner))
|
||||
invoke(DelayEvent(2000))
|
||||
|
||||
queueImpl.resetAndSetStart(winner)
|
||||
controlRound()
|
||||
} else {
|
||||
@@ -297,7 +301,11 @@ final class BaseGameLogic(val config: Configuration) extends EventHandler with G
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
override def changeState(gameState: GameState): Unit = {
|
||||
if(state == gameState) return
|
||||
invoke(GameStateChangeEvent(state, gameState))
|
||||
state = gameState
|
||||
}
|
||||
|
||||
// Getters
|
||||
|
||||
@@ -307,8 +315,23 @@ final class BaseGameLogic(val config: Configuration) extends EventHandler with G
|
||||
override def getCurrentTrick: Option[Trick] = currentTrick
|
||||
override def getCurrentPlayer: Option[AbstractPlayer] = currentPlayer
|
||||
override def getPlayerQueue: Option[CustomPlayerQueue[AbstractPlayer]] = playerQueue
|
||||
|
||||
|
||||
override def getWinner: Option[AbstractPlayer] = {
|
||||
if (currentMatch.isEmpty) throw new IllegalStateException("No current match set")
|
||||
val matchImpl = currentMatch.get
|
||||
if (!matchImpl.isOver) return None
|
||||
Some(matchImpl.playersIn.head)
|
||||
}
|
||||
|
||||
override def getTrumpPlayer: Option[AbstractPlayer] = {
|
||||
if (currentMatch.isEmpty) throw new IllegalStateException("No current match set")
|
||||
val matchImpl = currentMatch.get
|
||||
if (matchImpl.roundlist.isEmpty) return None
|
||||
val roundImpl = matchImpl.roundlist.last
|
||||
if (roundImpl.winner.isEmpty) return None
|
||||
Some(roundImpl.winner.get)
|
||||
}
|
||||
//Snapshotting
|
||||
|
||||
override def createSnapshot(): LogicSnapshot[BaseGameLogic.this.type] = {
|
||||
@@ -316,8 +339,14 @@ final class BaseGameLogic(val config: Configuration) extends EventHandler with G
|
||||
}
|
||||
|
||||
override def endSession(): Unit = {
|
||||
//TODO Return to main menu
|
||||
System.exit(0)
|
||||
cardManager = None
|
||||
currentMatch = None
|
||||
currentRound = None
|
||||
currentTrick = None
|
||||
currentPlayer = None
|
||||
playerQueue = None
|
||||
invoke(SessionClosed())
|
||||
changeState(MainMenu)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,13 +2,10 @@ package de.knockoutwhist.control.controllerBaseImpl.sublogic
|
||||
|
||||
import de.knockoutwhist.KnockOutWhist
|
||||
import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic
|
||||
import de.knockoutwhist.control.controllerBaseImpl.sublogic.BasePlayerTieLogic
|
||||
import de.knockoutwhist.control.sublogic.{PersistenceManager, PlayerTieLogic}
|
||||
import de.knockoutwhist.control.sublogic.PersistenceManager
|
||||
import de.knockoutwhist.control.{GameLogic, LogicSnapshot}
|
||||
import de.knockoutwhist.events.util.ReloadAllEvent
|
||||
import de.knockoutwhist.persistence.formats.JSONFormatter
|
||||
import de.knockoutwhist.persistence.{MatchSnapshot, MethodEntryPoint}
|
||||
import de.knockoutwhist.rounds.{Match, Round, Trick}
|
||||
|
||||
class BasePersistenceManager(val gameLogic: BaseGameLogic) extends PersistenceManager {
|
||||
|
||||
|
||||
@@ -10,8 +10,11 @@ import de.knockoutwhist.player.AbstractPlayer
|
||||
|
||||
final class BasePlayerInputLogic(gameLogic: BaseGameLogic) extends PlayerInputLogic {
|
||||
|
||||
val TIME_TO_RESPOND: Int = 30 // seconds
|
||||
|
||||
private var _waitingForInput: Boolean = false
|
||||
|
||||
|
||||
override def requestTrumpSuit(player: AbstractPlayer): Unit = {
|
||||
_waitingForInput = true
|
||||
gameLogic.invoke(RequestTrumpSuitEvent(player))
|
||||
|
||||
@@ -18,7 +18,7 @@ final class BasePlayerTieLogic(gameLogic: BaseGameLogic) extends PlayerTieLogic
|
||||
private[control] var lastNumber = -1
|
||||
private[control] var selectedCard: Map[AbstractPlayer, Card] = Map.empty
|
||||
private var _waitingForInput: Boolean = false
|
||||
|
||||
|
||||
override def handleTie(roundResult: RoundResult): Unit = {
|
||||
this.roundResult = Some(roundResult)
|
||||
tiedPlayers = roundResult.winners
|
||||
@@ -33,14 +33,15 @@ final class BasePlayerTieLogic(gameLogic: BaseGameLogic) extends PlayerTieLogic
|
||||
override def handleNextTieBreakerPlayer(): Unit = {
|
||||
tieBreakerIndex += 1
|
||||
if(tieBreakerIndex >= 0 && tieBreakerIndex < tiedPlayers.size) {
|
||||
requestTieChoice(currentTiePlayer())
|
||||
requestTieChoice(currentTiePlayer().get)
|
||||
} else {
|
||||
// All players have selected their tie-breaker cards
|
||||
// Find the highest card among selected cards
|
||||
|
||||
gameLogic.invoke(TieAllPlayersSelectedEvent())
|
||||
gameLogic.invoke(DelayEvent(2000))
|
||||
gameLogic.invoke(DelayEvent(200))
|
||||
gameLogic.invoke(TieShowPlayerCardsEvent())
|
||||
gameLogic.invoke(DelayEvent(2000))
|
||||
|
||||
val winningEntry = selectedCard.values.maxBy(_.cardValue.ordinal)
|
||||
val winners = selectedCard.filter((_, card) => card == winningEntry).keySet.toList
|
||||
@@ -70,12 +71,14 @@ final class BasePlayerTieLogic(gameLogic: BaseGameLogic) extends PlayerTieLogic
|
||||
|
||||
val winner = winners.head
|
||||
// Inform game logic about the winner
|
||||
|
||||
gameLogic.returnFromTie(winner)
|
||||
}
|
||||
}
|
||||
|
||||
override def currentTiePlayer(): AbstractPlayer = {
|
||||
tiedPlayers(tieBreakerIndex)
|
||||
override def currentTiePlayer(): Option[AbstractPlayer] = {
|
||||
if (tieBreakerIndex < 0 || tieBreakerIndex >= tiedPlayers.size)
|
||||
return None
|
||||
Some(tiedPlayers(tieBreakerIndex))
|
||||
}
|
||||
|
||||
override def requestTieChoice(player: AbstractPlayer): Unit = {
|
||||
@@ -111,7 +114,7 @@ final class BasePlayerTieLogic(gameLogic: BaseGameLogic) extends PlayerTieLogic
|
||||
|
||||
// The highest allowed number is total cards minus the number of tied players already selected
|
||||
// This ensures that each tied player can select a unique card
|
||||
remainingCards - (tiedPlayers.size - selectedCard.size - 1)
|
||||
remainingCards - (tiedPlayers.size - (selectedCard.size + 1)) - 1
|
||||
}
|
||||
|
||||
override def isWaitingForInput: Boolean = _waitingForInput
|
||||
|
||||
@@ -17,7 +17,7 @@ object MatchUtil {
|
||||
}
|
||||
|
||||
def dogNeedsToPlay(matchImpl: Match, roundImpl: Round): Boolean = {
|
||||
remainingRounds(matchImpl, roundImpl) == 1
|
||||
remainingRounds(matchImpl, roundImpl) <= 1
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -34,4 +34,19 @@ object PlayerUtil {
|
||||
Nil
|
||||
}
|
||||
|
||||
def playableCards(round: Round, trick: Trick, player: AbstractPlayer): List[Card] = {
|
||||
val handOption = player.currentHand()
|
||||
if (handOption.isEmpty) {
|
||||
throw new IllegalStateException("You have no cards!")
|
||||
}
|
||||
val hand = handOption.get
|
||||
if (trick.firstCard.isEmpty) {
|
||||
return hand.cards
|
||||
}
|
||||
val playableCards: List[Card] = for cardInHand <- hand.cards
|
||||
if canPlayCard(cardInHand, round, trick, player)
|
||||
yield cardInHand
|
||||
playableCards
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ trait PlayerTieLogic extends SnapshottingGameLogic {
|
||||
|
||||
def handleTie(roundResult: RoundResult): Unit
|
||||
def handleNextTieBreakerPlayer(): Unit
|
||||
def currentTiePlayer(): AbstractPlayer
|
||||
def currentTiePlayer(): Option[AbstractPlayer]
|
||||
def requestTieChoice(player: AbstractPlayer): Unit
|
||||
def receivedTieBreakerCard(number: Int): Unit
|
||||
def highestAllowedNumber(): Int
|
||||
|
||||
@@ -4,5 +4,5 @@ import de.knockoutwhist.control.GameState
|
||||
import de.knockoutwhist.utils.events.SimpleEvent
|
||||
|
||||
case class GameStateChangeEvent(oldState: GameState, newState: GameState) extends SimpleEvent {
|
||||
override def id: String = s"GameStateChangeEvent(from=$oldState,to=$newState)"
|
||||
override def id: String = s"GameStateChangeEvent"
|
||||
}
|
||||
|
||||
@@ -4,5 +4,5 @@ import de.knockoutwhist.player.AbstractPlayer
|
||||
import de.knockoutwhist.utils.events.SimpleEvent
|
||||
|
||||
case class RoundEndEvent(winner: AbstractPlayer, amountOfTricks: Int) extends SimpleEvent {
|
||||
override def id: String = s"RoundEndEvent()"
|
||||
override def id: String = s"RoundEndEvent"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package de.knockoutwhist.events.global
|
||||
|
||||
import de.knockoutwhist.utils.events.SimpleEvent
|
||||
|
||||
case class SessionClosed() extends SimpleEvent {
|
||||
override def id: String = s"SessionClosed"
|
||||
}
|
||||
@@ -3,5 +3,5 @@ package de.knockoutwhist.events.player
|
||||
import de.knockoutwhist.player.AbstractPlayer
|
||||
|
||||
case class RequestCardEvent(player: AbstractPlayer) extends PlayerEvent(player) {
|
||||
override def id: String = "PlayCardEvent"
|
||||
override def id: String = "RequestCardEvent"
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package de.knockoutwhist.ui.gui
|
||||
|
||||
import atlantafx.base.theme.PrimerDark
|
||||
import de.knockoutwhist.control.GameLogic
|
||||
import de.knockoutwhist.control.GameState.{InGame, Lobby, MainMenu, SelectTrump, TieBreak}
|
||||
import de.knockoutwhist.control.GameState.*
|
||||
import de.knockoutwhist.events.global.*
|
||||
import de.knockoutwhist.events.global.tie.{TieShowPlayerCardsEvent, TieTieEvent, TieTurnEvent, TieWinningPlayersEvent}
|
||||
import de.knockoutwhist.events.player.{RequestCardEvent, RequestTieChoiceEvent, RequestTrumpSuitEvent}
|
||||
@@ -64,6 +64,7 @@ class GUIMain extends JFXApp3 with EventListener with UI {
|
||||
_tieMenu.changeSlider(logic.get.playerTieLogic.highestAllowedNumber())
|
||||
case event: NewRoundEvent =>
|
||||
_game.updateTrumpSuit(logic.get.getCurrentRound.get.trumpSuit)
|
||||
case event: NewTrickEvent =>
|
||||
_game.resetFirstCard()
|
||||
case event: RoundEndEvent =>
|
||||
_game.showWon(event.winner, event.amountOfTricks)
|
||||
|
||||
@@ -27,7 +27,7 @@ class TieMenu(gui: GUIMain) {
|
||||
if (gui.logic.isEmpty) throw new IllegalStateException("Logic is not initialized!")
|
||||
val logic = gui.logic.get
|
||||
|
||||
val player = logic.playerTieLogic.currentTiePlayer()
|
||||
val player = logic.playerTieLogic.currentTiePlayer().get
|
||||
updatePlayerLabel(player)
|
||||
|
||||
changeSlider(logic.playerTieLogic.highestAllowedNumber())
|
||||
|
||||
@@ -26,7 +26,7 @@ case class SelectTieNumberCommand[
|
||||
glSnapshot.restore(gameLogic.asInstanceOf[GL])
|
||||
ptlSnapshot.restore(gameLogic.playerTieLogic.asInstanceOf[PT])
|
||||
ControlThread.runLater {
|
||||
gameLogic.playerTieLogic.requestTieChoice(gameLogic.playerTieLogic.currentTiePlayer())
|
||||
gameLogic.playerTieLogic.requestTieChoice(gameLogic.playerTieLogic.currentTiePlayer().get)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,14 @@ import de.knockoutwhist.utils.events.{EventListener, SimpleEvent}
|
||||
|
||||
object DelayHandler extends EventListener {
|
||||
|
||||
private[knockoutwhist] var activateDelay: Boolean = false
|
||||
private[knockoutwhist] var activateDelay: Boolean = true
|
||||
|
||||
override def listen(event: SimpleEvent): Unit = {
|
||||
event match {
|
||||
case event: DelayEvent =>
|
||||
if(activateDelay) Thread.sleep(event.delay)
|
||||
if(activateDelay) {
|
||||
Thread.sleep(event.delay)
|
||||
}
|
||||
case _ =>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package de.knockoutwhist.cards
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class HandSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package de.knockoutwhist.cards.base
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import de.knockoutwhist.cards.*
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.cards._
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class CardBaseManagerSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit}
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.player.{AbstractPlayer, PlayerFactory, Playertype}
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit}
|
||||
import de.knockoutwhist.rounds.{Round, Trick}
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class BaseGameLogicControlPlayerPlaySpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit}
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.player.{AbstractPlayer, PlayerFactory, Playertype}
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit}
|
||||
import de.knockoutwhist.rounds.{Round, Trick}
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class BaseGameLogicEndRoundSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit}
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.player.{AbstractPlayer, PlayerFactory, Playertype}
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit}
|
||||
import de.knockoutwhist.rounds.{Round, Trick}
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class BaseGameLogicMoreSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.player.{StubPlayer, AbstractPlayer}
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import de.knockoutwhist.rounds.Trick
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit}
|
||||
import scala.collection.immutable.HashMap
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.control.controllerBaseImpl.sublogic.util.{ResultPlayer, RoundResult}
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.player.{AbstractPlayer, StubPlayer}
|
||||
import de.knockoutwhist.rounds.Trick
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
import scala.collection.immutable.HashMap
|
||||
|
||||
class BaseGameLogicRoundTrickSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.player.{PlayerFactory, Playertype}
|
||||
import de.knockoutwhist.player.AbstractPlayer
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.control.GameState
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.player.{AbstractPlayer, PlayerFactory, Playertype}
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class BaseGameLogicSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.control.GameState
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.player.AbstractPlayer
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import de.knockoutwhist.control.GameState
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class BaseGameLogicStateSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl.sublogic
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic
|
||||
import de.knockoutwhist.persistence.MethodEntryPoint
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.player.AbstractPlayer
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class BasePersistenceManagerSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl.sublogic
|
||||
|
||||
import de.knockoutwhist.cards.Suit.Spades
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic
|
||||
import de.knockoutwhist.player.StubPlayer
|
||||
import de.knockoutwhist.player.AbstractPlayer
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import de.knockoutwhist.rounds.{Round, Trick}
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit}
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.player.{AbstractPlayer, StubPlayer}
|
||||
import de.knockoutwhist.rounds.{Round, Trick}
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
import scala.collection.immutable.HashMap
|
||||
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl.sublogic
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic
|
||||
import de.knockoutwhist.player.StubPlayer
|
||||
import de.knockoutwhist.player.AbstractPlayer
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.player.{AbstractPlayer, StubPlayer}
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class BasePlayerInputLogicSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl.sublogic
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.player.StubPlayer
|
||||
import de.knockoutwhist.control.controllerBaseImpl.sublogic.util.RoundResult
|
||||
import de.knockoutwhist.player.AbstractPlayer
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit}
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic
|
||||
import de.knockoutwhist.control.controllerBaseImpl.sublogic.util.RoundResult
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.player.{AbstractPlayer, StubPlayer}
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class BasePlayerTieLogicSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
@@ -53,7 +52,7 @@ class BasePlayerTieLogicSpec extends AnyWordSpec with Matchers {
|
||||
tieLogic.getTiedPlayers should contain inOrder (p1, p2)
|
||||
tieLogic.getTieBreakerIndex shouldBe 0
|
||||
tieLogic.isWaitingForInput shouldBe true
|
||||
tieLogic.currentTiePlayer() shouldBe p1
|
||||
tieLogic.currentTiePlayer().get shouldBe p1
|
||||
tieLogic.highestAllowedNumber() shouldBe (logic.cardManager.get.remainingCards - (2 - 0 - 1))
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl.sublogic
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.player.AbstractPlayer
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
import de.knockoutwhist.undo.Command
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
|
||||
class BaseUndoManagerSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl.sublogic.util
|
||||
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import de.knockoutwhist.cards.Suit
|
||||
import de.knockoutwhist.player.{PlayerFactory, Playertype}
|
||||
import de.knockoutwhist.rounds.{Match, Round, Trick}
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class MatchUtilSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl.sublogic.util
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Hand, Suit}
|
||||
import de.knockoutwhist.rounds.{Round, Trick}
|
||||
import de.knockoutwhist.player.StubPlayer
|
||||
import de.knockoutwhist.rounds.{Round, Trick}
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class PlayerUtilSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl.sublogic.util
|
||||
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit}
|
||||
import de.knockoutwhist.player.{PlayerFactory, Playertype}
|
||||
import de.knockoutwhist.rounds.{Match, Round, Trick}
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class RoundUtilSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl.sublogic.util
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.control.controllerBaseImpl.{BaseGameLogic, BaseGameLogicSnapshot}
|
||||
import de.knockoutwhist.player.{AbstractPlayer, PlayerFactory, Playertype}
|
||||
import de.knockoutwhist.control.{GameLogic, GameState, SnapshottingGameLogic}
|
||||
import de.knockoutwhist.persistence.formats.FileFormatter
|
||||
import de.knockoutwhist.player.{AbstractPlayer, PlayerFactory, Playertype}
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class SnapshotUtilSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package de.knockoutwhist.control.controllerBaseImpl.sublogic.util
|
||||
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit}
|
||||
import de.knockoutwhist.player.{PlayerFactory, Playertype}
|
||||
import de.knockoutwhist.rounds.{Match, Round, Trick}
|
||||
import de.knockoutwhist.utils.baseQueue.CustomPlayerBaseQueue
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class TrickUtilSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package de.knockoutwhist.persistence.formats
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Hand, Suit}
|
||||
import de.knockoutwhist.player.Playertype
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit, Hand}
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
import java.util.UUID
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package de.knockoutwhist.persistence.formats
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import play.api.libs.json._
|
||||
import de.knockoutwhist.persistence._
|
||||
import de.knockoutwhist.control.GameState
|
||||
import de.knockoutwhist.cards.{CardValue, Suit}
|
||||
import de.knockoutwhist.control.GameState
|
||||
import de.knockoutwhist.persistence.*
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import play.api.libs.json.*
|
||||
|
||||
import java.util.UUID
|
||||
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
package de.knockoutwhist.persistence.formats
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.persistence.MatchSnapshot
|
||||
import de.knockoutwhist.persistence.MethodEntryPoint
|
||||
import de.knockoutwhist.cards.base.CardBaseManager
|
||||
import de.knockoutwhist.player.PlayerFactory
|
||||
import de.knockoutwhist.player.Playertype
|
||||
import de.knockoutwhist.components.Configuration
|
||||
import de.knockoutwhist.control.controllerBaseImpl.BaseGameLogic
|
||||
import de.knockoutwhist.player.AbstractPlayer
|
||||
import de.knockoutwhist.persistence.{MatchSnapshot, MethodEntryPoint}
|
||||
import de.knockoutwhist.player.{AbstractPlayer, PlayerFactory, Playertype}
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class JSONFormatterRoundtripSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package de.knockoutwhist.persistence.formats
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.persistence.*
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class JSONFormatterSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package de.knockoutwhist.player
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Hand, Suit}
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit, Hand}
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
import java.util.UUID
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package de.knockoutwhist.player
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Hand, Suit}
|
||||
import de.knockoutwhist.player.baseImpl.HumanPlayer
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit, Hand}
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class HumanPlayerSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package de.knockoutwhist.player
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
import java.util.UUID
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package de.knockoutwhist.rounds
|
||||
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import de.knockoutwhist.cards.{Card, CardValue, Suit}
|
||||
import de.knockoutwhist.player.{PlayerFactory, Playertype}
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class RoundsDataSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package de.knockoutwhist.utils.baseQueue
|
||||
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import de.knockoutwhist.player.StubPlayer
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.wordspec.AnyWordSpec
|
||||
|
||||
class CustomPlayerBaseQueueSpec extends AnyWordSpec with Matchers {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user