gmp_random_range.phpt 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. --TEST--
  2. gmp_random_range() basic tests
  3. --EXTENSIONS--
  4. gmp
  5. --FILE--
  6. <?php
  7. $minusTen = gmp_init(-10);
  8. $plusTen = gmp_init(10);
  9. $zero = gmp_init(0);
  10. try {
  11. var_dump(gmp_random_range(10, -10));
  12. } catch (\ValueError $e) {
  13. echo $e->getMessage() . \PHP_EOL;
  14. }
  15. try {
  16. var_dump(gmp_random_range($plusTen, $minusTen));
  17. } catch (\ValueError $e) {
  18. echo $e->getMessage() . \PHP_EOL;
  19. }
  20. try {
  21. var_dump(gmp_random_range($plusTen, $zero));
  22. } catch (\ValueError $e) {
  23. echo $e->getMessage() . \PHP_EOL;
  24. }
  25. // If these error the test fails.
  26. gmp_random_range(0, 10);
  27. gmp_random_range(1, 10);
  28. gmp_random_range(-1, 10);
  29. gmp_random_range(-10, 0);
  30. gmp_random_range(-10, -1);
  31. gmp_random_range(0, $plusTen);
  32. gmp_random_range(1, $plusTen);
  33. gmp_random_range(-1, $plusTen);
  34. gmp_random_range($zero, $plusTen);
  35. gmp_random_range($minusTen, $plusTen);
  36. // 0.5 seconds to make sure the numbers stay in range
  37. $start = microtime(true);
  38. while (1) {
  39. for ($i = 0; $i < 5000; $i++) {
  40. $result = gmp_random_range(0, 1000);
  41. if ($result < 0 || $result > 1000) {
  42. print "RANGE VIOLATION 1\n";
  43. var_dump($result);
  44. break 2;
  45. }
  46. $result = gmp_random_range(-1000, 0);
  47. if ($result < -1000 || $result > 0) {
  48. print "RANGE VIOLATION 2\n";
  49. var_dump($result);
  50. break 2;
  51. }
  52. $result = gmp_random_range(-500, 500);
  53. if ($result < -500 || $result > 500) {
  54. print "RANGE VIOLATION 3\n";
  55. var_dump($result);
  56. break 2;
  57. }
  58. }
  59. if (microtime(true) - $start > 0.5) {
  60. break;
  61. }
  62. }
  63. echo "Done\n";
  64. ?>
  65. --EXPECT--
  66. gmp_random_range(): Argument #1 ($min) must be less than argument #2 ($maximum)
  67. gmp_random_range(): Argument #1 ($min) must be less than argument #2 ($maximum)
  68. gmp_random_range(): Argument #1 ($min) must be less than argument #2 ($maximum)
  69. Done