trailling_whitespaces.phpt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. --TEST--
  2. Acceptance of whitespace in numeric strings
  3. --FILE--
  4. <?php
  5. $strings = [
  6. "123",
  7. "123 ",
  8. "123 \t\n\r\v\f",
  9. " 123",
  10. " \t\n\r\v\f123",
  11. " 123 ",
  12. " \t\n\r\v\f123 \t\n\r\v\f",
  13. "123.0",
  14. "123.0 ",
  15. "123.0 \t\n\r\v\f",
  16. " 123.0",
  17. " \t\n\r\v\f123.0",
  18. " 123.0 ",
  19. " \t\n\r\v\f123 \t\n\r\v\f",
  20. "123e0",
  21. "123e0 ",
  22. "123e0 \t\n\r\v\f",
  23. " 123e0",
  24. " \t\n\r\v\f123e0",
  25. " 123e0 ",
  26. " \t\n\r\v\f123e0 \t\n\r\v\f"
  27. ];
  28. function takes_integer(int $i) {
  29. \assert($i === 123);
  30. }
  31. function takes_float(float $f) {
  32. \assert($f === 123.0);
  33. }
  34. foreach ($strings as $string) {
  35. \assert($string == 123);
  36. $num = +$string;
  37. \assert($num == 123);
  38. takes_integer($string);
  39. takes_float($string);
  40. \assert(\intdiv($string, 1) === 123);
  41. \assert(\is_numeric($string));
  42. $incremented = $string;
  43. ++$incremented;
  44. \assert(\is_int($incremented) || \is_float($incremented));
  45. \assert($incremented == 124);
  46. $decremented = $string;
  47. --$decremented;
  48. \assert(\is_int($decremented) || \is_float($decremented));
  49. \assert($decremented == 122);
  50. }
  51. echo "OK!", PHP_EOL;
  52. ?>
  53. --EXPECT--
  54. OK!