gmp_setbit_long.phpt 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. --TEST--
  2. gmp_setbit() with large index
  3. --EXTENSIONS--
  4. gmp
  5. --SKIPIF--
  6. <?php if (getenv("TRAVIS") === "true") die("skip not suitable for Travis-CI"); ?>
  7. <?php if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only"); ?>
  8. <?php if (getenv("SKIP_SLOW_TESTS")) die("skip slow test"); ?>
  9. <?php
  10. /* This test requires about 8G RAM which likely not to be present on an arbitrary CI. */
  11. if (!file_exists("/proc/meminfo")) {
  12. die("skip cannot determine free memory amount.");
  13. }
  14. $s = file_get_contents("/proc/meminfo");
  15. $free = 0;
  16. if (preg_match(",MemFree:\s+(\d+)\s+kB,", $s, $m)) {
  17. /* Got amount in kb. */
  18. $free = $m[1]/1024/1024;
  19. }
  20. if ($free < 8) {
  21. die("skip not enough free RAM.");
  22. }
  23. ?>
  24. --FILE--
  25. <?php
  26. $n = gmp_init("227200");
  27. for($a = 1<<30; $a > 0 && $a < 0x8000000000; $a <<= 2) {
  28. $i = $a - 1;
  29. printf("%X\n", $i);
  30. try {
  31. gmp_setbit($n, $i, 1);
  32. } catch (\ValueError $e) {
  33. echo $e->getMessage() . \PHP_EOL;
  34. }
  35. }
  36. echo "Done\n";
  37. ?>
  38. --EXPECTF--
  39. 3FFFFFFF
  40. FFFFFFFF
  41. 3FFFFFFFF
  42. FFFFFFFFF
  43. 3FFFFFFFFF
  44. gmp_setbit(): Argument #2 ($index) must be less than %d * %d
  45. Done