]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/PHPUnit/PHPUnit/Framework/ComparisonFailure.php
Release 6.2.0
[Github/sugarcrm.git] / tests / PHPUnit / PHPUnit / Framework / ComparisonFailure.php
1 <?php
2 /**
3  * PHPUnit
4  *
5  * Copyright (c) 2002-2011, Sebastian Bergmann <sebastian@phpunit.de>.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  *   * Redistributions of source code must retain the above copyright
13  *     notice, this list of conditions and the following disclaimer.
14  *
15  *   * Redistributions in binary form must reproduce the above copyright
16  *     notice, this list of conditions and the following disclaimer in
17  *     the documentation and/or other materials provided with the
18  *     distribution.
19  *
20  *   * Neither the name of Sebastian Bergmann nor the names of his
21  *     contributors may be used to endorse or promote products derived
22  *     from this software without specific prior written permission.
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35  * POSSIBILITY OF SUCH DAMAGE.
36  *
37  * @package    PHPUnit
38  * @subpackage Framework
39  * @author     Sebastian Bergmann <sebastian@phpunit.de>
40  * @copyright  2002-2011 Sebastian Bergmann <sebastian@phpunit.de>
41  * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
42  * @link       http://www.phpunit.de/
43  * @since      File available since Release 2.0.0
44  */
45
46 /**
47  * Thrown when an assertion for string equality failed.
48  *
49  * @package    PHPUnit
50  * @subpackage Framework
51  * @author     Sebastian Bergmann <sebastian@phpunit.de>
52  * @copyright  2002-2011 Sebastian Bergmann <sebastian@phpunit.de>
53  * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
54  * @version    Release: 3.5.13
55  * @link       http://www.phpunit.de/
56  * @since      Class available since Release 2.0.0
57  */
58 abstract class PHPUnit_Framework_ComparisonFailure extends PHPUnit_Framework_AssertionFailedError
59 {
60     /**
61      * Expected value of the retrieval which does not match $actual.
62      * @var mixed
63      */
64     protected $expected;
65
66     /**
67      * Actually retrieved value which does not match $expected.
68      * @var mixed
69      */
70     protected $actual;
71
72     /**
73      * @var boolean
74      */
75     protected $identical;
76
77     /**
78      * Optional message which is placed in front of the first line
79      * returned by toString().
80      * @var string
81      */
82     protected $message;
83
84     /**
85      * Initialises with the expected value and the actual value.
86      *
87      * @param mixed $expected Expected value retrieved.
88      * @param mixed $actual Actual value retrieved.
89      * @param boolean $identical
90      * @param string $message A string which is prefixed on all returned lines
91      *                        in the difference output.
92      */
93     public function __construct($expected, $actual, $identical = FALSE, $message = '')
94     {
95         $this->expected  = $expected;
96         $this->actual    = $actual;
97         $this->identical = $identical;
98         $this->message   = $message;
99     }
100
101     /**
102      * @return mixed
103      */
104     public function getActual()
105     {
106         return $this->actual;
107     }
108
109     /**
110      * @return mixed
111      */
112     public function getExpected()
113     {
114         return $this->expected;
115     }
116
117     /**
118      * @return boolean
119      */
120     public function identical()
121     {
122         return $this->identical;
123     }
124
125     /**
126      * Figures out which diff class to use for the input types then
127      * instantiates that class and returns the object.
128      * @note The diff is type sensitive, if the type differs only the types
129      *       are shown.
130      *
131      * @param mixed $expected Expected value retrieved.
132      * @param mixed $actual Actual value retrieved.
133      * @param string $message A string which is prefixed on all returned lines
134      *                        in the difference output.
135      * @return PHPUnit_Framework_ComparisonFailure
136      */
137     public static function diffIdentical($expected, $actual, $message = '')
138     {
139         if (gettype($expected) !== gettype($actual)) {
140             return new PHPUnit_Framework_ComparisonFailure_Type(
141               $expected, $actual, TRUE, $message
142             );
143         }
144
145         else if (is_array($expected) && is_array($actual)) {
146             return new PHPUnit_Framework_ComparisonFailure_Array(
147               $expected, $actual, TRUE, $message
148             );
149         }
150
151         else if (is_object($expected) && is_object($actual)) {
152             return new PHPUnit_Framework_ComparisonFailure_Object(
153               $expected, $actual, TRUE, $message
154             );
155         }
156
157         else if (is_string($expected) && !is_object($actual)) {
158             return new PHPUnit_Framework_ComparisonFailure_String(
159               $expected, $actual, TRUE, $message
160             );
161         }
162
163         else if (is_null($expected) || is_scalar($expected)) {
164             return new PHPUnit_Framework_ComparisonFailure_Scalar(
165               $expected, $actual, TRUE, $message
166             );
167         }
168     }
169
170     /**
171      * Figures out which diff class to use for the input types then
172      * instantiates that class and returns the object.
173      * @note The diff is not type sensitive, if the type differs the $actual
174      *       value will be converted to the same type as the $expected.
175      *
176      * @param mixed $expected Expected value retrieved.
177      * @param mixed $actual Actual value retrieved.
178      * @param string $message A string which is prefixed on all returned lines
179      *                        in the difference output.
180      * @return PHPUnit_Framework_ComparisonFailure
181      */
182     public static function diffEqual($expected, $actual, $message = '')
183     {
184         if (is_array($expected) && is_array($actual)) {
185             return new PHPUnit_Framework_ComparisonFailure_Array(
186               $expected, $actual, FALSE, $message
187             );
188         }
189
190         else if (is_object($expected) && is_object($actual)) {
191             return new PHPUnit_Framework_ComparisonFailure_Object(
192               $expected, $actual, FALSE, $message
193             );
194         }
195
196         else if (is_string($expected) && !is_object($actual)) {
197             return new PHPUnit_Framework_ComparisonFailure_String(
198               $expected, $actual, FALSE, $message
199             );
200         }
201
202         else if (is_null($expected) || is_scalar($expected)) {
203             return new PHPUnit_Framework_ComparisonFailure_Scalar(
204               $expected, $actual, FALSE, $message
205             );
206         }
207     }
208 }