@@ -190,6 +190,29 @@ public function ok($exp, $message = '')
190190 return $ result ;
191191 }
192192
193+ /**
194+ * Compares two values and returns true if they are equal
195+ *
196+ * @param mixed $exp1 left value
197+ * @param mixed $exp2 right value
198+ * @return bool
199+ */
200+ private function equals ($ exp1 , $ exp2 )
201+ {
202+ if (is_object ($ exp1 ) || is_object ($ exp2 )) {
203+ $ value = $ exp1 === $ exp2 ;
204+ } else if (is_float ($ exp1 ) && is_float ($ exp2 )) {
205+ $ value = abs ($ exp1 - $ exp2 ) < self ::EPSILON ;
206+ } else if (is_string ($ exp1 ) && is_numeric ($ exp1 ) || is_string ($ exp2 ) && is_numeric ($ exp2 )) {
207+ return $ exp1 == $ exp2 ;
208+ } else if (is_string ($ exp1 ) || is_string ($ exp2 )) {
209+ return (string ) $ exp1 === (string ) $ exp2 ;
210+ } else {
211+ $ value = $ exp1 == $ exp2 ;
212+ }
213+ return $ value ;
214+ }
215+
193216 /**
194217 * Compares two values and passes if they are equal (==)
195218 *
@@ -201,18 +224,7 @@ public function ok($exp, $message = '')
201224 */
202225 public function is ($ exp1 , $ exp2 , $ message = '' )
203226 {
204- if (is_object ($ exp1 ) || is_object ($ exp2 ))
205- {
206- $ value = $ exp1 === $ exp2 ;
207- }
208- else if (is_float ($ exp1 ) && is_float ($ exp2 ))
209- {
210- $ value = abs ($ exp1 - $ exp2 ) < self ::EPSILON ;
211- }
212- else
213- {
214- $ value = $ exp1 == $ exp2 ;
215- }
227+ $ value = $ this ->equals ($ exp1 , $ exp2 );
216228
217229 if (!$ result = $ this ->ok ($ value , $ message ))
218230 {
@@ -233,9 +245,11 @@ public function is($exp1, $exp2, $message = '')
233245 */
234246 public function isnt ($ exp1 , $ exp2 , $ message = '' )
235247 {
236- if (!$ result = $ this ->ok ($ exp1 != $ exp2 , $ message ))
248+ $ value = $ this ->equals ($ exp1 , $ exp2 );
249+
250+ if (!$ result = $ this ->ok (!$ value , $ message ))
237251 {
238- $ this ->set_last_test_errors (array (sprintf (" %s " , var_export ($ exp2 , true )), ' ne ' , sprintf (" %s " , var_export ($ exp2 , true ))));
252+ $ this ->set_last_test_errors (array (sprintf (" %s " , var_export ($ exp1 , true )), ' ne ' , sprintf (" %s " , var_export ($ exp2 , true ))));
239253 }
240254
241255 return $ result ;
0 commit comments