Mercurial > hg > isophonics-drupal-site
comparison vendor/sebastian/comparator/src/NumericComparator.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 1fec387a4317 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
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 /** | |
14 * Compares numerical values for equality. | |
15 */ | |
16 class NumericComparator extends ScalarComparator | |
17 { | |
18 /** | |
19 * Returns whether the comparator can compare two values. | |
20 * | |
21 * @param mixed $expected The first value to compare | |
22 * @param mixed $actual The second value to compare | |
23 * @return bool | |
24 */ | |
25 public function accepts($expected, $actual) | |
26 { | |
27 // all numerical values, but not if one of them is a double | |
28 // or both of them are strings | |
29 return is_numeric($expected) && is_numeric($actual) && | |
30 !(is_double($expected) || is_double($actual)) && | |
31 !(is_string($expected) && is_string($actual)); | |
32 } | |
33 | |
34 /** | |
35 * Asserts that two values are equal. | |
36 * | |
37 * @param mixed $expected First value to compare | |
38 * @param mixed $actual Second value to compare | |
39 * @param float $delta Allowed numerical distance between two values to consider them equal | |
40 * @param bool $canonicalize Arrays are sorted before comparison when set to true | |
41 * @param bool $ignoreCase Case is ignored when set to true | |
42 * | |
43 * @throws ComparisonFailure | |
44 */ | |
45 public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false) | |
46 { | |
47 if (is_infinite($actual) && is_infinite($expected)) { | |
48 return; | |
49 } | |
50 | |
51 if ((is_infinite($actual) xor is_infinite($expected)) || | |
52 (is_nan($actual) or is_nan($expected)) || | |
53 abs($actual - $expected) > $delta) { | |
54 throw new ComparisonFailure( | |
55 $expected, | |
56 $actual, | |
57 '', | |
58 '', | |
59 false, | |
60 sprintf( | |
61 'Failed asserting that %s matches expected %s.', | |
62 $this->exporter->export($actual), | |
63 $this->exporter->export($expected) | |
64 ) | |
65 ); | |
66 } | |
67 } | |
68 } |