ToHaveKey::reportNegativeFailed()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 5
rs 9.4285
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
3
/**
4
 * This file is part of expect package.
5
 *
6
 * (c) Noritaka Horio <[email protected]>
7
 *
8
 * This source file is subject to the MIT license that is bundled
9
 * with this source code in the file LICENSE.
10
 */
11
namespace expect\matcher;
12
13
use expect\FailedMessage;
14
use InvalidArgumentException;
15
16
17
/**
18
 * Verify key exists.
19
 *
20
 * <code>
21
 * $matcher = new ToHaveKey('foo');
22
 * $matcher->match([ 'foo' => 1 ]); //return true
23
 *
24
 * $matcher->match([ 'bar' => 1 ]); //return false
25
 * <code>
26
 *
27
 * @author Noritaka Horio <[email protected]>
28
 * @copyright Noritaka Horio <[email protected]>
29
 */
30
final class ToHaveKey implements ReportableMatcher
31
{
32
    /**
33
     * @var array
34
     */
35
    private $actual;
36
37
    /**
38
     * @var string|int
39
     */
40
    private $expected;
41
42
    /**
43
     * @param string|int $expected
44
     */
45
    public function __construct($expected)
46
    {
47
        $this->expected = $expected;
48
    }
49
50
    /**
51
     * {@inheritdoc}
52
     */
53
    public function match($actual)
54
    {
55
        if (is_array($actual) === false) {
56
            throw new InvalidArgumentException("The actual value is not a array");
57
        }
58
59
        $this->actual = $actual;
60
61
        return array_key_exists($this->expected, $this->actual);
62
    }
63
64
    /**
65
     * {@inheritdoc}
66
     */
67
    public function reportFailed(FailedMessage $message)
68
    {
69
        $message->appendText('Expected array to have the key ')
70
            ->appendValue($this->expected);
71
    }
72
73
    /**
74
     * {@inheritdoc}
75
     */
76
    public function reportNegativeFailed(FailedMessage $message)
77
    {
78
        $message->appendText('Expected array not to have the key ')
79
            ->appendValue($this->expected);
80
    }
81
}
82