PageRenderTime 46ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/phpunit/phpunit/PHPUnit/Framework/Comparator/Numeric.php

https://gitlab.com/oytunistrator/92five
PHP | 112 lines | 30 code | 4 blank | 78 comment | 6 complexity | e6cb05bed63987974d0e807843df05f6 MD5 | raw file
  1. <?php
  2. /**
  3. * PHPUnit
  4. *
  5. * Copyright (c) 2001-2014, 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 Bernhard Schussek <bschussek@2bepublished.at>
  40. * @copyright 2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
  41. * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
  42. * @link http://www.phpunit.de/
  43. * @since File available since Release 3.6.0
  44. */
  45. /**
  46. * Compares numerical values for equality.
  47. *
  48. * @package PHPUnit
  49. * @subpackage Framework_Comparator
  50. * @author Bernhard Schussek <bschussek@2bepublished.at>
  51. * @author Alexander <iam.asm89@gmail.com>
  52. * @copyright 2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
  53. * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
  54. * @link http://www.phpunit.de/
  55. * @since Class available since Release 3.6.0
  56. */
  57. class PHPUnit_Framework_Comparator_Numeric extends PHPUnit_Framework_Comparator_Scalar
  58. {
  59. /**
  60. * Returns whether the comparator can compare two values.
  61. *
  62. * @param mixed $expected The first value to compare
  63. * @param mixed $actual The second value to compare
  64. * @return boolean
  65. */
  66. public function accepts($expected, $actual)
  67. {
  68. // all numerical values, but not if one of them is a double
  69. return is_numeric($expected) && is_numeric($actual) && !(is_double($expected) || is_double($actual));
  70. }
  71. /**
  72. * Asserts that two values are equal.
  73. *
  74. * @param mixed $expected The first value to compare
  75. * @param mixed $actual The second value to compare
  76. * @param float $delta The allowed numerical distance between two values to
  77. * consider them equal
  78. * @param bool $canonicalize If set to TRUE, arrays are sorted before
  79. * comparison
  80. * @param bool $ignoreCase If set to TRUE, upper- and lowercasing is
  81. * ignored when comparing string values
  82. * @throws PHPUnit_Framework_ComparisonFailure Thrown when the comparison
  83. * fails. Contains information about the
  84. * specific errors that lead to the failure.
  85. */
  86. public function assertEquals($expected, $actual, $delta = 0, $canonicalize = FALSE, $ignoreCase = FALSE)
  87. {
  88. if (is_infinite($actual) && is_infinite($expected)) {
  89. return;
  90. }
  91. if ((is_infinite($actual) XOR is_infinite($expected)) ||
  92. (is_nan($actual) OR is_nan($expected)) ||
  93. abs($actual - $expected) > $delta) {
  94. throw new PHPUnit_Framework_ComparisonFailure(
  95. $expected,
  96. $actual,
  97. '',
  98. '',
  99. FALSE,
  100. sprintf(
  101. 'Failed asserting that %s matches expected %s.',
  102. PHPUnit_Util_Type::export($actual),
  103. PHPUnit_Util_Type::export($expected)
  104. )
  105. );
  106. }
  107. }
  108. }