StepResultTest::testIsValid()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 19
Code Lines 13

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 19
rs 9.4285
cc 1
eloc 13
nc 1
nop 5
1
<?php
2
3
namespace Tests\Unit\GameDomain\Round\Step;
4
5
use GameDomain\Player\PlayerInterface;
6
use GameDomain\Player\Players\PerfectPlayer;
7
use GameDomain\Player\Players\StupidPlayer;
8
use GameDomain\Round\Step\Answer;
9
use GameDomain\Round\Step\Step;
10
use GameDomain\Round\Step\StepResult;
11
12
/**
13
 * StepResult Test
14
 */
15
class StepResultTest extends \PHPUnit_Framework_TestCase
16
{
17
    /**
18
     * @dataProvider getStepResults
19
     *
20
     * @param \GameDomain\Player\PlayerInterface $player
21
     * @param \GameDomain\Round\Step\Answer      $playerAnswer
22
     * @param \GameDomain\Round\Step\Answer      $validAnswer
23
     * @param \GameDomain\Round\Step\Step        $step
24
     * @param string                             $expectedStringRepresentation
25
     */
26
    public function testIsValid(
27
        PlayerInterface $player,
28
        Answer $playerAnswer,
29
        Answer $validAnswer,
30
        Step $step,
31
        $expectedStringRepresentation
32
    ) {
33
        $stepResult = new StepResult($player, $playerAnswer, $validAnswer, $step);
34
35
        // Tests for methods having logic
36
        $this->assertEquals($playerAnswer->isSameAs($validAnswer), $stepResult->isValid());
37
        $this->assertEquals($expectedStringRepresentation, (string) $stepResult);
38
39
        // Tests for getters
40
        $this->assertInstanceOf('\GameDomain\Player\PlayerInterface', $stepResult->getPlayer());
41
        $this->assertInstanceOf('\GameDomain\Round\Step\Step', $stepResult->getStep());
42
        $this->assertInstanceOf('\GameDomain\Round\Step\Answer', $stepResult->getPlayerAnswer());
43
        $this->assertInstanceOf('\GameDomain\Round\Step\Answer', $stepResult->getValidAnswer());
44
    }
45
46
    /**
47
     * @return array
48
     */
49
    public function getStepResults()
50
    {
51
        return array(
52
            array(
53
                new PerfectPlayer(),
54
                new Answer(1),
55
                new Answer(1),
56
                new Step(1),
57
                'Player "Perfect" correctly answered "1" at step #1.',
58
            ),
59
            array(
60
                new StupidPlayer(),
61
                new Answer('fail'),
62
                new Answer(2),
63
                new Step(2),
64
                'Player "Stupid" failed by answering "fail" at step #2. Correct answer was "2".',
65
            ),
66
        );
67
    }
68
}
69