DetermineWinnerTest::testIsBusted()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 5
nc 1
nop 0
dl 0
loc 7
c 1
b 0
f 1
cc 1
rs 10
1
<?php
2
3
namespace App\Model;
4
5
use PHPUnit\Framework\TestCase;
6
use Exception;
7
8
/**
9
 * Test cases for class Card.
10
 */
11
class DetermineWinnerTest extends TestCase
12
{
13
    /**
14
     * Construct object and verify that the object is of the expected
15
     * type.
16
     */
17
    public function testCreate(): void
18
    {
19
        $determineWinner = new DetermineWinner();
20
        $this->assertInstanceOf("\App\Model\DetermineWinner", $determineWinner);
21
    }
22
23
    /**
24
     * Assert that the function returns the correct winner.
25
     */
26
27
    public function testDetermineWinner(): void
28
    {
29
        $determineWinner = new DetermineWinner();
30
        $player = new HumanPlayer();
31
        $dealer = new BankPlayer();
32
        $player->addCardsToHand([new Card("hearts", "ace", 1, 14), new Card("hearts", "ace", 1, 14)]);
33
        $dealer->addCardsToHand([new Card("hearts", "ace", 1, 14), new Card("hearts", "ace", 1, 14)]);
34
        $player->stand();
35
        $dealer->stand();
36
        $res = $determineWinner->getWinner(["human" => $player, "bank" => $dealer], 'bank');
37
        $exp = "bank";
38
        $this->assertEquals($exp, $res);
39
    }
40
41
    /**
42
     * Assert that the function returns null if not all player has stood.
43
     */
44
45
    public function testDetermineWinnerNull(): void
46
    {
47
        $determineWinner = new DetermineWinner();
48
        $player = new HumanPlayer();
49
        $dealer = new BankPlayer();
50
        $player->addCardsToHand([new Card("hearts", "ace", 1, 14), new Card("hearts", "ace", 1, 14)]);
51
        $dealer->addCardsToHand([new Card("hearts", "ace", 1, 14), new Card("hearts", "ace", 1, 14)]);
52
        $player->stand();
53
        $res = $determineWinner->getWinner(["human" => $player, "bank" => $dealer], 'bank');
54
        $this->assertNull($res);
55
    }
56
57
    /**
58
     * Assert that the function returns human when bank is busted.
59
     */
60
61
    public function testGetWinnerBankBusted(): void
62
    {
63
        $determineWinner = new DetermineWinner();
64
        $dealer = new BankPlayer();
65
        $dealer->addCardsToHand([new Card("", "", 13), new Card("", "", 13)]);
66
67
        $exp = "human";
68
        $res = $determineWinner->getWinner(["bank" => $dealer], 'bank');
69
        $this->assertEquals($exp, $res);
70
    }
71
72
    /**
73
     * Assert that isBusted returns true if the player is busted.
74
     */
75
76
    public function testIsBusted(): void
77
    {
78
        $determineWinner = new DetermineWinner();
79
        $player = new HumanPlayer();
80
        $player->addCardsToHand([new Card("", "", 13), new Card("", "", 13)]);
81
        $res = $determineWinner->isBusted($player->getRealHand());
82
        $this->assertTrue($res);
83
    }
84
}
85