AbstractPlayerTest   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Coupling/Cohesion

Dependencies 5
Metric Value
wmc 5
cbo 5
dl 0
loc 67
rs 10

7 Methods

Rating   Name   Duplication   Size   Complexity  
A testStringRepresentation() 0 4 1
A getSteps() 0 10 1
testPlay() 0 1 ?
A play() 0 6 1
A getGameRules() 0 4 1
A createStep() 0 4 1
getPlayer() 0 1 ?
1
<?php
2
3
namespace Tests\Unit\GameDomain\Player\Players;
4
5
use Tests\Unit\GameDomain\Rule\Mocks\TestRulesSet;
6
use GameDomain\Player\PlayerInterface;
7
use GameDomain\Round\Step\Step;
8
9
/**
10
 * Player Test
11
 */
12
abstract class AbstractPlayerTest extends \PHPUnit_Framework_TestCase
13
{
14
    /**
15
     * @test
16
     */
17
    public function testStringRepresentation()
18
    {
19
        $this->assertNotEmpty((string) $this->getPlayer());
20
    }
21
22
    /**
23
     * @return array
24
     */
25
    public function getSteps()
26
    {
27
        return array(
28
            array(1),
29
            array(3),
30
            array(5),
31
            array(15),
32
            array(100),
33
        );
34
    }
35
36
    /**
37
     * @param int $stepNumber
38
     *
39
     * @dataProvider getSteps
40
     */
41
    abstract public function testPlay($stepNumber);
42
43
    /**
44
     * @param \GameDomain\Player\PlayerInterface $player
45
     * @param int                                $stepNumber
46
     *
47
     * @return bool
48
     */
49
    protected function play(PlayerInterface $player, $stepNumber)
50
    {
51
        return $this->getGameRules()->generateValidAnswer($stepNumber)->isSameAs(
52
            $player->play($this->getGameRules(), $this->createStep($stepNumber))
53
        );
54
    }
55
56
    /**
57
     * @return \GameDomain\Rule\AbstractRulesSet
58
     */
59
    protected function getGameRules()
60
    {
61
        return new TestRulesSet();
62
    }
63
64
    /**
65
     * @param int $stepNumber
66
     *
67
     * @return \GameDomain\Round\Step\Step
68
     */
69
    protected function createStep($stepNumber)
70
    {
71
        return new Step($stepNumber);
72
    }
73
74
    /**
75
     * @return \GameDomain\Player\PlayerInterface
76
     */
77
    abstract protected function getPlayer();
78
}
79