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 11namespace SebastianBergmann\Comparator; 12 13/** 14 * Compares doubles for equality. 15 */ 16class DoubleComparator extends NumericComparator 17{ 18 /** 19 * Smallest value available in PHP. 20 * 21 * @var float 22 */ 23 const EPSILON = 0.0000000001; 24 25 /** 26 * Returns whether the comparator can compare two values. 27 * 28 * @param mixed $expected The first value to compare 29 * @param mixed $actual The second value to compare 30 * @return bool 31 */ 32 public function accepts($expected, $actual) 33 { 34 return (is_double($expected) || is_double($actual)) && is_numeric($expected) && is_numeric($actual); 35 } 36 37 /** 38 * Asserts that two values are equal. 39 * 40 * @param mixed $expected First value to compare 41 * @param mixed $actual Second value to compare 42 * @param float $delta Allowed numerical distance between two values to consider them equal 43 * @param bool $canonicalize Arrays are sorted before comparison when set to true 44 * @param bool $ignoreCase Case is ignored when set to true 45 * 46 * @throws ComparisonFailure 47 */ 48 public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false) 49 { 50 if ($delta == 0) { 51 $delta = self::EPSILON; 52 } 53 54 parent::assertEquals($expected, $actual, $delta, $canonicalize, $ignoreCase); 55 } 56} 57