• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

globuli94 / blackjack / 14116909189

27 Mar 2025 09:19PM UTC coverage: 55.292% (+12.4%) from 42.857%
14116909189

Pull #17

github

web-flow
Merge b8bae2ec8 into cc233430d
Pull Request #17: Se 10 components

117 of 221 branches covered (52.94%)

Branch coverage included in aggregate %.

156 of 188 new or added lines in 14 files covered. (82.98%)

245 existing lines in 8 files now uncovered.

630 of 1130 relevant lines covered (55.75%)

0.56 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.67
/src/main/scala/controller/controllerComponent/Controller.scala
1
package controller.controllerComponent
2

3
import model.gameComponent.{GameInterface, GameState}
4
import util.Event.invalidCommand
5
import util.{Event, Observable, Observer}
6

7
case class Controller(var game: GameInterface) extends ControllerInterface with Observable {
8

9
  override def getGame: GameInterface = game
1✔
10

11
  override def initializeGame(): Unit = {
1✔
12
    game = game.initialize
1✔
13
    notifyObservers(Event.Start)
1✔
14
  }
15

16
  override def startGame(): Unit = {
1✔
17
    if ((game.getState == GameState.Initialized || game.getState == GameState.Evaluated) && game.getPlayers.nonEmpty) {
1✔
18
      game = game.startGame
1✔
19
      notifyObservers(Event.Start)
1✔
20
    } else {
1✔
21
      notifyObservers(Event.invalidCommand)
1✔
22
    }
23
  }
24

25
  override def addPlayer(name: String): Unit = {
1✔
26
    if (game.getState == GameState.Initialized || game.getState == GameState.Evaluated) {
1✔
27
      if(game.getPlayers.exists(_.getName == name)) {
1✔
28
        notifyObservers(Event.errPlayerNameExists)
1✔
29
      } else {
1✔
30
        game = game.createPlayer(name)
1✔
31
        notifyObservers(Event.AddPlayer)
1✔
32
      }
33
    } else {
1✔
34
      notifyObservers(Event.invalidCommand)
1✔
35
    }
36
  }
37

38
  override def leavePlayer(): Unit = {
1✔
39
    if(game.getPlayers.nonEmpty) {
1✔
40
        game = game.leavePlayer()
1✔
41
        notifyObservers(Event.leavePlayer)
1✔
42
    } else {
1✔
43
      notifyObservers(invalidCommand)
1✔
44
    }
45
  }
46

47
  override def hitNextPlayer(): Unit = {
1✔
48
    val player = game.getPlayers(game.getIndex)
1✔
49
    if (player.getHand.canHit && game.getState == GameState.Started) {
1✔
50
      game = game.hitPlayer
1✔
51
      notifyObservers(Event.hitNextPlayer)
1✔
52
    } else {
1✔
53
      notifyObservers(Event.invalidCommand)
1✔
54
    }
55
  }
56

57
  override def standNextPlayer(): Unit = {
1✔
58
    if (game.getState == GameState.Started) {
1✔
59
      game = game.standPlayer
1✔
60
      notifyObservers(Event.standNextPlayer)
1✔
61
    } else {
1✔
62
      notifyObservers(Event.invalidCommand)
1✔
63
    }
64
  }
65

66
  override def doubleDown(): Unit = {
1✔
67
    val player = game.getPlayers(game.getIndex)
1✔
68

69
    if (game.getState == GameState.Started && player.getHand.canDoubleDown && player.getBet <= player.getMoney) {
1✔
70
      game = game.doubleDownPlayer
1✔
71
      notifyObservers(Event.doubleDown)
1✔
72
    } else {
1✔
73
      notifyObservers(Event.invalidBet)
1✔
74
    }
75
  }
76

77
  override def bet(amount: String): Unit = {
1✔
78
    if (game.getState == GameState.Betting) {
1✔
79
      try {
1✔
80
        if (game.isValidBet(amount.toInt) && amount.toInt > 0) {
1✔
81
          game = game.betPlayer(amount.toInt)
1✔
82
          notifyObservers(Event.bet)
1✔
83
        } else {
1✔
84
          notifyObservers(Event.invalidBet)
1✔
85
        }
86
      } catch {
87
        case _: NumberFormatException => notifyObservers(Event.invalidCommand)
1✔
88
      }
89
    } else {
1✔
90
      notifyObservers(Event.invalidCommand)
1✔
91
    }
92
  }
93

NEW
94
  override def exit(): Unit = {
×
95
    sys.exit(0)
×
96
  }
97

98
  override def toString: String = {
1✔
99
    game.toString
1✔
100
  }
101
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc