Chris@0
|
1 <?php
|
Chris@0
|
2 /*
|
Chris@14
|
3 * This file is part of sebastian/comparator.
|
Chris@0
|
4 *
|
Chris@0
|
5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
|
Chris@0
|
6 *
|
Chris@0
|
7 * For the full copyright and license information, please view the LICENSE
|
Chris@0
|
8 * file that was distributed with this source code.
|
Chris@0
|
9 */
|
Chris@0
|
10
|
Chris@0
|
11 namespace SebastianBergmann\Comparator;
|
Chris@0
|
12
|
Chris@0
|
13 use SebastianBergmann\Diff\Differ;
|
Chris@14
|
14 use SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder;
|
Chris@0
|
15
|
Chris@0
|
16 /**
|
Chris@0
|
17 * Thrown when an assertion for string equality failed.
|
Chris@0
|
18 */
|
Chris@0
|
19 class ComparisonFailure extends \RuntimeException
|
Chris@0
|
20 {
|
Chris@0
|
21 /**
|
Chris@0
|
22 * Expected value of the retrieval which does not match $actual.
|
Chris@14
|
23 *
|
Chris@0
|
24 * @var mixed
|
Chris@0
|
25 */
|
Chris@0
|
26 protected $expected;
|
Chris@0
|
27
|
Chris@0
|
28 /**
|
Chris@0
|
29 * Actually retrieved value which does not match $expected.
|
Chris@14
|
30 *
|
Chris@0
|
31 * @var mixed
|
Chris@0
|
32 */
|
Chris@0
|
33 protected $actual;
|
Chris@0
|
34
|
Chris@0
|
35 /**
|
Chris@0
|
36 * The string representation of the expected value
|
Chris@14
|
37 *
|
Chris@0
|
38 * @var string
|
Chris@0
|
39 */
|
Chris@0
|
40 protected $expectedAsString;
|
Chris@0
|
41
|
Chris@0
|
42 /**
|
Chris@0
|
43 * The string representation of the actual value
|
Chris@14
|
44 *
|
Chris@0
|
45 * @var string
|
Chris@0
|
46 */
|
Chris@0
|
47 protected $actualAsString;
|
Chris@0
|
48
|
Chris@0
|
49 /**
|
Chris@0
|
50 * @var bool
|
Chris@0
|
51 */
|
Chris@0
|
52 protected $identical;
|
Chris@0
|
53
|
Chris@0
|
54 /**
|
Chris@0
|
55 * Optional message which is placed in front of the first line
|
Chris@0
|
56 * returned by toString().
|
Chris@14
|
57 *
|
Chris@0
|
58 * @var string
|
Chris@0
|
59 */
|
Chris@0
|
60 protected $message;
|
Chris@0
|
61
|
Chris@0
|
62 /**
|
Chris@0
|
63 * Initialises with the expected value and the actual value.
|
Chris@0
|
64 *
|
Chris@0
|
65 * @param mixed $expected Expected value retrieved.
|
Chris@0
|
66 * @param mixed $actual Actual value retrieved.
|
Chris@0
|
67 * @param string $expectedAsString
|
Chris@0
|
68 * @param string $actualAsString
|
Chris@0
|
69 * @param bool $identical
|
Chris@0
|
70 * @param string $message A string which is prefixed on all returned lines
|
Chris@0
|
71 * in the difference output.
|
Chris@0
|
72 */
|
Chris@0
|
73 public function __construct($expected, $actual, $expectedAsString, $actualAsString, $identical = false, $message = '')
|
Chris@0
|
74 {
|
Chris@0
|
75 $this->expected = $expected;
|
Chris@0
|
76 $this->actual = $actual;
|
Chris@0
|
77 $this->expectedAsString = $expectedAsString;
|
Chris@0
|
78 $this->actualAsString = $actualAsString;
|
Chris@0
|
79 $this->message = $message;
|
Chris@0
|
80 }
|
Chris@0
|
81
|
Chris@0
|
82 /**
|
Chris@0
|
83 * @return mixed
|
Chris@0
|
84 */
|
Chris@0
|
85 public function getActual()
|
Chris@0
|
86 {
|
Chris@0
|
87 return $this->actual;
|
Chris@0
|
88 }
|
Chris@0
|
89
|
Chris@0
|
90 /**
|
Chris@0
|
91 * @return mixed
|
Chris@0
|
92 */
|
Chris@0
|
93 public function getExpected()
|
Chris@0
|
94 {
|
Chris@0
|
95 return $this->expected;
|
Chris@0
|
96 }
|
Chris@0
|
97
|
Chris@0
|
98 /**
|
Chris@0
|
99 * @return string
|
Chris@0
|
100 */
|
Chris@0
|
101 public function getActualAsString()
|
Chris@0
|
102 {
|
Chris@0
|
103 return $this->actualAsString;
|
Chris@0
|
104 }
|
Chris@0
|
105
|
Chris@0
|
106 /**
|
Chris@0
|
107 * @return string
|
Chris@0
|
108 */
|
Chris@0
|
109 public function getExpectedAsString()
|
Chris@0
|
110 {
|
Chris@0
|
111 return $this->expectedAsString;
|
Chris@0
|
112 }
|
Chris@0
|
113
|
Chris@0
|
114 /**
|
Chris@0
|
115 * @return string
|
Chris@0
|
116 */
|
Chris@0
|
117 public function getDiff()
|
Chris@0
|
118 {
|
Chris@0
|
119 if (!$this->actualAsString && !$this->expectedAsString) {
|
Chris@0
|
120 return '';
|
Chris@0
|
121 }
|
Chris@0
|
122
|
Chris@14
|
123 $differ = new Differ(new UnifiedDiffOutputBuilder("\n--- Expected\n+++ Actual\n"));
|
Chris@0
|
124
|
Chris@0
|
125 return $differ->diff($this->expectedAsString, $this->actualAsString);
|
Chris@0
|
126 }
|
Chris@0
|
127
|
Chris@0
|
128 /**
|
Chris@0
|
129 * @return string
|
Chris@0
|
130 */
|
Chris@0
|
131 public function toString()
|
Chris@0
|
132 {
|
Chris@0
|
133 return $this->message . $this->getDiff();
|
Chris@0
|
134 }
|
Chris@0
|
135 }
|