Test Failed
Push — main ( 99efcd...df6632 )
by Alex
14:53
created

WinsStakeTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Importance

Changes 4
Bugs 0 Features 0
Metric Value
eloc 20
c 4
b 0
f 0
dl 0
loc 52
rs 10
wmc 3
1
<?php
2
3
namespace App\Game;
4
5
use PHPUnit\Framework\TestCase;
6
7
/**
8
 * Test cases for when player or banker wins the stake.
9
 */
10
class WinsStakeTest extends TestCase
11
{
12
    /**
13
     * Provide data sets to test placeBet method.
14
     * @return mixed[] As data set
15
     */
16
    public static function winProvider(): array
17
    {
18
        return [
19
            'win — game not over' => [20, 50, false],
20
            'win — game over' => [100, 100, true],
21
        ];
22
    }
23
24
    /**
25
     * Test player wins stake.
26
     * @dataProvider winProvider
27
     * @param int  $bet
28
     * @param int  $max
29
     * @param bool $gameOver
30
     */
31
    public function testPlayerWinsStake(int $bet, int $max, bool $gameOver): void
32
    {
33
        $bettingManager = new BettingManager($max);
34
        $bettingManager->placeBet($bet);
35
        $bettingManager->playerWinsStake();
36
37
        $res = $bettingManager->getState();
38
        $this->assertFalse($res['hasBet']);
39
        $this->assertSame(0, $res['stake']);
40
        $this->assertSame($max + $bet, $res['playerCoins']);
41
        $this->assertSame($gameOver, $res['gameOver']);
42
    }
43
44
    /**
45
     * Test banker wins stake.
46
     * @dataProvider winProvider
47
     * @param int  $bet
48
     * @param int  $max
49
     * @param bool $gameOver
50
     */
51
    public function testBankerWinsStake(int $bet, int $max, bool $gameOver): void
52
    {
53
        $bettingManager = new BettingManager($max);
54
        $bettingManager->placeBet($bet);
55
        $bettingManager->bankerWinsStake();
56
57
        $res = $bettingManager->getState();
58
        $this->assertFalse($res['hasBet']);
59
        $this->assertSame(0, $res['stake']);
60
        $this->assertSame($max + $bet, $res['bankerCoins']);
61
        $this->assertSame($gameOver, $res['gameOver']);
62
    }
63
}
64