Floats.areEqual().phpt 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. /**
  3. * Test: Nette\Utils\Floats::areEqual()
  4. */
  5. declare(strict_types=1);
  6. use Nette\Utils\Floats;
  7. use Tester\Assert;
  8. require __DIR__ . '/../bootstrap.php';
  9. Assert::true(Floats::areEqual(9, 9));
  10. Assert::true(Floats::areEqual(9, 9.0));
  11. Assert::true(Floats::areEqual(3.0, 3));
  12. Assert::true(Floats::areEqual(0.0, 0));
  13. Assert::true(Floats::areEqual(0.0, 0.0));
  14. Assert::true(Floats::areEqual(0.1 + 0.2, 0.3));
  15. Assert::true(Floats::areEqual(0.1 - 0.5, -0.4));
  16. Assert::false(Floats::areEqual(0.0, 5));
  17. Assert::false(Floats::areEqual(-5, 5));
  18. Assert::false(Floats::areEqual(0.001, 0.01));
  19. $float1 = 1 / 3;
  20. $float2 = 1 - 2 / 3;
  21. Assert::true(Floats::areEqual($float1, $float2));
  22. Assert::true(Floats::areEqual($float1 * 1e9, $float2 * 1e9));
  23. Assert::true(Floats::areEqual($float1 - $float2, 0.0));
  24. Assert::true(Floats::areEqual($float1 - $float2 + 123, $float2 - $float1 + 123));
  25. Assert::true(Floats::areEqual($float1 - $float2, $float2 - $float1));
  26. Assert::true(Floats::areEqual(INF, INF));
  27. Assert::false(Floats::areEqual(INF, -INF));
  28. Assert::false(Floats::areEqual(-INF, INF));
  29. Assert::exception(
  30. fn() => Floats::areEqual(NAN, NAN),
  31. LogicException::class,
  32. );