gmp_random_seed.phpt 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. --TEST--
  2. gmp_random_seed() basic tests
  3. --EXTENSIONS--
  4. gmp
  5. --SKIPIF--
  6. <?php if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only"); ?>
  7. --FILE--
  8. <?php
  9. // zero int
  10. var_dump(gmp_random_seed(0));
  11. var_dump(gmp_strval(gmp_random_bits(10)));
  12. var_dump(gmp_strval(gmp_random_bits(100)));
  13. var_dump(gmp_strval(gmp_random_bits(1000)));
  14. var_dump(gmp_strval(gmp_random_range(0, 10000)));
  15. var_dump(gmp_strval(gmp_random_range(-10000, 10000)));
  16. var_dump(gmp_strval(gmp_random_range(-10000, 0)));
  17. // zero gmp
  18. var_dump(gmp_random_seed(gmp_init(0)));
  19. var_dump(gmp_strval(gmp_random_bits(10)));
  20. var_dump(gmp_strval(gmp_random_bits(100)));
  21. var_dump(gmp_strval(gmp_random_bits(1000)));
  22. var_dump(gmp_strval(gmp_random_range(0, 10000)));
  23. var_dump(gmp_strval(gmp_random_range(-10000, 10000)));
  24. var_dump(gmp_strval(gmp_random_range(-10000, 0)));
  25. // negative int
  26. var_dump(gmp_random_seed(-100));
  27. var_dump(gmp_strval(gmp_random_bits(10)));
  28. var_dump(gmp_strval(gmp_random_bits(100)));
  29. var_dump(gmp_strval(gmp_random_bits(1000)));
  30. var_dump(gmp_strval(gmp_random_range(0, 10000)));
  31. var_dump(gmp_strval(gmp_random_range(-10000, 10000)));
  32. var_dump(gmp_strval(gmp_random_range(-10000, 0)));
  33. // negative gmp
  34. var_dump(gmp_random_seed(gmp_init(-100)));
  35. var_dump(gmp_strval(gmp_random_bits(10)));
  36. var_dump(gmp_strval(gmp_random_bits(100)));
  37. var_dump(gmp_strval(gmp_random_bits(1000)));
  38. var_dump(gmp_strval(gmp_random_range(0, 10000)));
  39. var_dump(gmp_strval(gmp_random_range(-10000, 10000)));
  40. var_dump(gmp_strval(gmp_random_range(-10000, 0)));
  41. // positive int
  42. var_dump(gmp_random_seed(100));
  43. var_dump(gmp_strval(gmp_random_bits(10)));
  44. var_dump(gmp_strval(gmp_random_bits(100)));
  45. var_dump(gmp_strval(gmp_random_bits(1000)));
  46. var_dump(gmp_strval(gmp_random_range(0, 10000)));
  47. var_dump(gmp_strval(gmp_random_range(-10000, 10000)));
  48. var_dump(gmp_strval(gmp_random_range(-10000, 0)));
  49. // positive gmp
  50. var_dump(gmp_random_seed(100));
  51. var_dump(gmp_strval(gmp_random_bits(10)));
  52. var_dump(gmp_strval(gmp_random_bits(100)));
  53. var_dump(gmp_strval(gmp_random_bits(1000)));
  54. var_dump(gmp_strval(gmp_random_range(0, 10000)));
  55. var_dump(gmp_strval(gmp_random_range(-10000, 10000)));
  56. var_dump(gmp_strval(gmp_random_range(-10000, 0)));
  57. $seed = gmp_init(1);
  58. $seed <<= 512;
  59. // large negative gmp
  60. var_dump(gmp_random_seed($seed * -1));
  61. var_dump(gmp_strval(gmp_random_bits(10)));
  62. var_dump(gmp_strval(gmp_random_bits(100)));
  63. var_dump(gmp_strval(gmp_random_bits(1000)));
  64. var_dump(gmp_strval(gmp_random_range(0, 10000)));
  65. var_dump(gmp_strval(gmp_random_range(-10000, 10000)));
  66. var_dump(gmp_strval(gmp_random_range(-10000, 0)));
  67. // large positive gmp
  68. var_dump(gmp_random_seed($seed));
  69. var_dump(gmp_strval(gmp_random_bits(10)));
  70. var_dump(gmp_strval(gmp_random_bits(100)));
  71. var_dump(gmp_strval(gmp_random_bits(1000)));
  72. var_dump(gmp_strval(gmp_random_range(0, 10000)));
  73. var_dump(gmp_strval(gmp_random_range(-10000, 10000)));
  74. var_dump(gmp_strval(gmp_random_range(-10000, 0)));
  75. // standard non conversion error
  76. try {
  77. var_dump(gmp_random_seed('not a number'));
  78. } catch (\ValueError $e) {
  79. echo $e->getMessage() . \PHP_EOL;
  80. }
  81. echo "Done\n";
  82. ?>
  83. --EXPECT--
  84. NULL
  85. string(3) "107"
  86. string(30) "576055025228722307492589900056"
  87. string(301) "5075491613651149525976453192895895253653438900772590630831858908690082668789318258254821002217677675804439098856210618572534955562143303188483908287009522532300439665975877709754914215718998849272363858786685187951932478210775857465448084868199807983919191214972626993925394176279001074206804955195464"
  88. string(4) "4098"
  89. string(3) "866"
  90. string(5) "-4602"
  91. NULL
  92. string(3) "107"
  93. string(30) "576055025228722307492589900056"
  94. string(301) "5075491613651149525976453192895895253653438900772590630831858908690082668789318258254821002217677675804439098856210618572534955562143303188483908287009522532300439665975877709754914215718998849272363858786685187951932478210775857465448084868199807983919191214972626993925394176279001074206804955195464"
  95. string(4) "4098"
  96. string(3) "866"
  97. string(5) "-4602"
  98. NULL
  99. string(3) "800"
  100. string(30) "136797365759249926716355081555"
  101. string(300) "983682312243221532860194306859606025979259367996304596374614332718375645173854152266611727577102182844028492473112400528817154210713755887896949560718745264129216953815968005630126359941634684721501777057142617647654380585317016323758806063124938232519551123440573348326061244006512869165793958775168"
  102. string(4) "1029"
  103. string(4) "7093"
  104. string(5) "-9074"
  105. NULL
  106. string(3) "800"
  107. string(30) "136797365759249926716355081555"
  108. string(300) "983682312243221532860194306859606025979259367996304596374614332718375645173854152266611727577102182844028492473112400528817154210713755887896949560718745264129216953815968005630126359941634684721501777057142617647654380585317016323758806063124938232519551123440573348326061244006512869165793958775168"
  109. string(4) "1029"
  110. string(4) "7093"
  111. string(5) "-9074"
  112. NULL
  113. string(3) "800"
  114. string(30) "136797365759249926716355081555"
  115. string(300) "983682312243221532860194306859606025979259367996304596374614332718375645173854152266611727577102182844028492473112400528817154210713755887896949560718745264129216953815968005630126359941634684721501777057142617647654380585317016323758806063124938232519551123440573348326061244006512869165793958775168"
  116. string(4) "1029"
  117. string(4) "7093"
  118. string(5) "-9074"
  119. NULL
  120. string(3) "800"
  121. string(30) "136797365759249926716355081555"
  122. string(300) "983682312243221532860194306859606025979259367996304596374614332718375645173854152266611727577102182844028492473112400528817154210713755887896949560718745264129216953815968005630126359941634684721501777057142617647654380585317016323758806063124938232519551123440573348326061244006512869165793958775168"
  123. string(4) "1029"
  124. string(4) "7093"
  125. string(5) "-9074"
  126. NULL
  127. string(3) "762"
  128. string(30) "822340340897453415684831711085"
  129. string(301) "7240560133683902061389868703829443708354917824328579773726122219756981024103097560162756171513655189995985599958252688592185764428631571614485572869738344560301294144844739876478557439580966605216861285841689262517286639329902832431755450003123084728943981078635297917573398492558065003906539489023830"
  130. string(4) "9636"
  131. string(5) "-9848"
  132. string(5) "-9648"
  133. NULL
  134. string(3) "762"
  135. string(30) "822340340897453415684831711085"
  136. string(301) "7240560133683902061389868703829443708354917824328579773726122219756981024103097560162756171513655189995985599958252688592185764428631571614485572869738344560301294144844739876478557439580966605216861285841689262517286639329902832431755450003123084728943981078635297917573398492558065003906539489023830"
  137. string(4) "9636"
  138. string(5) "-9848"
  139. string(5) "-9648"
  140. gmp_random_seed(): Argument #1 ($seed) is not an integer string
  141. Done