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