File: gmp_random_bits.phpt

package info (click to toggle)
php8.4 8.4.11-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 208,108 kB
  • sloc: ansic: 1,060,628; php: 35,345; sh: 11,866; cpp: 7,201; pascal: 4,913; javascript: 3,091; asm: 2,810; yacc: 2,411; makefile: 689; xml: 446; python: 301; awk: 148
file content (46 lines) | stat: -rw-r--r-- 943 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
--TEST--
gmp_random_bits() basic tests
--EXTENSIONS--
gmp
--FILE--
<?php

try {
    var_dump(gmp_random_bits(0));
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}
try {
    var_dump(gmp_random_bits(-1));
} catch (\ValueError $e) {
    echo $e->getMessage() . \PHP_EOL;
}

// If these error the test fails.
gmp_random_bits(1);
gmp_random_bits(1024);

// 0.5 seconds to make sure the numbers stay in range
$start = microtime(true);
$limit = (2 ** 30) - 1;
while (1) {
    for ($i = 0; $i < 5000; $i++) {
        $result = gmp_random_bits(30);
        if ($result < 0 || $result > $limit) {
            print "RANGE VIOLATION\n";
            var_dump($result);
            break 2;
        }
    }

    if (microtime(true) - $start > 0.5) {
        break;
    }
}

echo "Done\n";
?>
--EXPECTF--
gmp_random_bits(): Argument #1 ($bits) must be between 1 and %d
gmp_random_bits(): Argument #1 ($bits) must be between 1 and %d
Done