Skip to content

Commit 03797a7

Browse files
committed
Split GMP tests testing multiple functions
Also drop dummy test
1 parent 9586b15 commit 03797a7

File tree

5 files changed

+140
-142
lines changed

5 files changed

+140
-142
lines changed

ext/gmp/tests/001.phpt

Lines changed: 0 additions & 21 deletions
This file was deleted.

ext/gmp/tests/gmp_export.phpt

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
--TEST--
2+
gmp_export() basic tests
3+
--SKIPIF--
4+
<?php if (!extension_loaded("gmp")) echo "skip"; ?>
5+
--FILE--
6+
<?php
7+
8+
// Tests taken from GMPs own test suite.
9+
10+
// format is [output, size, options, expected]
11+
$export = [
12+
['0',1,GMP_BIG_ENDIAN,''],
13+
['0',2,GMP_BIG_ENDIAN,''],
14+
['0',3,GMP_BIG_ENDIAN,''],
15+
['12345678',1,GMP_BIG_ENDIAN,'12345678'],
16+
['12345678',4,GMP_BIG_ENDIAN,'12345678'],
17+
['12345678',4,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'12345678'],
18+
['12345678',1,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'78563412'],
19+
['12345678',4,GMP_LITTLE_ENDIAN,'78563412'],
20+
['12345678',4,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'78563412'],
21+
['123456789ABC',2,GMP_BIG_ENDIAN,'123456789abc'],
22+
['123456789ABC',2,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'9abc56781234'],
23+
['123456789ABC',2,GMP_LITTLE_ENDIAN,'34127856bc9a'],
24+
['123456789ABC',2,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'bc9a78563412'],
25+
['112233445566778899AABBCC',4,GMP_BIG_ENDIAN,'112233445566778899aabbcc'],
26+
['112233445566778899AABBCC',4,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'99aabbcc5566778811223344'],
27+
['112233445566778899AABBCC',4,GMP_LITTLE_ENDIAN,'4433221188776655ccbbaa99'],
28+
['112233445566778899AABBCC',4,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'ccbbaa998877665544332211'],
29+
['100120023003400450056006700780089009A00AB00BC00C',8,GMP_BIG_ENDIAN,'100120023003400450056006700780089009a00ab00bc00c'],
30+
['100120023003400450056006700780089009A00AB00BC00C',8,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'9009a00ab00bc00c50056006700780081001200230034004'],
31+
['100120023003400450056006700780089009A00AB00BC00C',8,GMP_LITTLE_ENDIAN,'044003300220011008800770066005500cc00bb00aa00990'],
32+
['100120023003400450056006700780089009A00AB00BC00C',8,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'0cc00bb00aa0099008800770066005500440033002200110']
33+
];
34+
35+
$passed = true;
36+
foreach ($export as $k => $test) {
37+
$gmp = gmp_init($test[0], 16);
38+
$str = gmp_export($gmp, $test[1], $test[2]);
39+
if (is_string($str)) {
40+
$result = bin2hex($str);
41+
if ($result !== $test[3]) {
42+
echo "$k: '$result' !== '{$test[3]}'\n";
43+
$passed = false;
44+
}
45+
} else {
46+
$type = gettype($str);
47+
echo "$k: $type !== '{$test[3]}'\n";
48+
}
49+
}
50+
51+
var_dump($passed);
52+
53+
// Invalid arguments (zpp failure)
54+
var_dump(gmp_export());
55+
56+
// Invalid word sizes
57+
var_dump(gmp_export(123, -1));
58+
var_dump(gmp_export(123, 0));
59+
60+
// Invalid options
61+
var_dump(gmp_export(123, 1, GMP_MSW_FIRST | GMP_LSW_FIRST));
62+
var_dump(gmp_export(123, 1, GMP_BIG_ENDIAN | GMP_LITTLE_ENDIAN));
63+
64+
--EXPECTF--
65+
bool(true)
66+
67+
Warning: gmp_export() expects at least 1 parameter, 0 given in %s on line %d
68+
NULL
69+
70+
Warning: gmp_export(): Word size must be positive, -1 given in %s on line %d
71+
bool(false)
72+
73+
Warning: gmp_export(): Word size must be positive, 0 given in %s on line %d
74+
bool(false)
75+
76+
Warning: gmp_export(): Invalid options: Conflicting word orders in %s on line %d
77+
bool(false)
78+
79+
Warning: gmp_export(): Invalid options: Conflicting word endianness in %s on line %d
80+
bool(false)
Lines changed: 1 addition & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
--TEST--
2-
Check gmp_import and gmp_export behave as intended
2+
gmp_import() basic tests
33
--SKIPIF--
44
<?php if (!extension_loaded("gmp")) echo "skip"; ?>
55
--FILE--
@@ -30,32 +30,6 @@ $import = [
3030
['100120023003400450056006700780089009a00ab00bc00c',8,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'0cc00bb00aa0099008800770066005500440033002200110']
3131
];
3232

33-
// format is [output, size, options, expected]
34-
$export = [
35-
['0',1,GMP_BIG_ENDIAN,''],
36-
['0',2,GMP_BIG_ENDIAN,''],
37-
['0',3,GMP_BIG_ENDIAN,''],
38-
['12345678',1,GMP_BIG_ENDIAN,'12345678'],
39-
['12345678',4,GMP_BIG_ENDIAN,'12345678'],
40-
['12345678',4,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'12345678'],
41-
['12345678',1,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'78563412'],
42-
['12345678',4,GMP_LITTLE_ENDIAN,'78563412'],
43-
['12345678',4,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'78563412'],
44-
['123456789ABC',2,GMP_BIG_ENDIAN,'123456789abc'],
45-
['123456789ABC',2,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'9abc56781234'],
46-
['123456789ABC',2,GMP_LITTLE_ENDIAN,'34127856bc9a'],
47-
['123456789ABC',2,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'bc9a78563412'],
48-
['112233445566778899AABBCC',4,GMP_BIG_ENDIAN,'112233445566778899aabbcc'],
49-
['112233445566778899AABBCC',4,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'99aabbcc5566778811223344'],
50-
['112233445566778899AABBCC',4,GMP_LITTLE_ENDIAN,'4433221188776655ccbbaa99'],
51-
['112233445566778899AABBCC',4,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'ccbbaa998877665544332211'],
52-
['100120023003400450056006700780089009A00AB00BC00C',8,GMP_BIG_ENDIAN,'100120023003400450056006700780089009a00ab00bc00c'],
53-
['100120023003400450056006700780089009A00AB00BC00C',8,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'9009a00ab00bc00c50056006700780081001200230034004'],
54-
['100120023003400450056006700780089009A00AB00BC00C',8,GMP_LITTLE_ENDIAN,'044003300220011008800770066005500cc00bb00aa00990'],
55-
['100120023003400450056006700780089009A00AB00BC00C',8,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'0cc00bb00aa0099008800770066005500440033002200110']
56-
];
57-
58-
echo "Import:\n";
5933
$passed = true;
6034
foreach ($import as $k => $test) {
6135
$gmp = gmp_import(hex2bin($test[3]), $test[1], $test[2]);
@@ -73,34 +47,12 @@ foreach ($import as $k => $test) {
7347

7448
var_dump($passed);
7549

76-
echo "\nExport:\n";
77-
$passed = true;
78-
foreach ($export as $k => $test) {
79-
$gmp = gmp_init($test[0], 16);
80-
$str = gmp_export($gmp, $test[1], $test[2]);
81-
if (is_string($str)) {
82-
$result = bin2hex($str);
83-
if ($result !== $test[3]) {
84-
echo "$k: '$result' !== '{$test[3]}'\n";
85-
$passed = false;
86-
}
87-
} else {
88-
$type = gettype($str);
89-
echo "$k: $type !== '{$test[3]}'\n";
90-
}
91-
}
92-
93-
var_dump($passed);
94-
9550
// Invalid arguments (zpp failure)
9651
var_dump(gmp_import());
97-
var_dump(gmp_export());
9852

9953
// Invalid word sizes
10054
var_dump(gmp_import('a', -1));
10155
var_dump(gmp_import('a', 0));
102-
var_dump(gmp_export(123, -1));
103-
var_dump(gmp_export(123, 0));
10456

10557
// Invalid data lengths
10658
var_dump(gmp_import('a', 2));
@@ -111,34 +63,18 @@ var_dump(gmp_import(str_repeat('a', 100), 64));
11163
var_dump(gmp_import('a', 1, GMP_MSW_FIRST | GMP_LSW_FIRST));
11264
var_dump(gmp_import('a', 1, GMP_BIG_ENDIAN | GMP_LITTLE_ENDIAN));
11365

114-
var_dump(gmp_export(123, 1, GMP_MSW_FIRST | GMP_LSW_FIRST));
115-
var_dump(gmp_export(123, 1, GMP_BIG_ENDIAN | GMP_LITTLE_ENDIAN));
116-
11766
--EXPECTF--
118-
Import:
119-
bool(true)
120-
121-
Export:
12267
bool(true)
12368

12469
Warning: gmp_import() expects at least 1 parameter, 0 given in %s on line %d
12570
NULL
12671

127-
Warning: gmp_export() expects at least 1 parameter, 0 given in %s on line %d
128-
NULL
129-
13072
Warning: gmp_import(): Word size must be positive, -1 given in %s on line %d
13173
bool(false)
13274

13375
Warning: gmp_import(): Word size must be positive, 0 given in %s on line %d
13476
bool(false)
13577

136-
Warning: gmp_export(): Word size must be positive, -1 given in %s on line %d
137-
bool(false)
138-
139-
Warning: gmp_export(): Word size must be positive, 0 given in %s on line %d
140-
bool(false)
141-
14278
Warning: gmp_import(): Input length must be a multiple of word size in %s on line %d
14379
bool(false)
14480

@@ -153,9 +89,3 @@ bool(false)
15389

15490
Warning: gmp_import(): Invalid options: Conflicting word endianness in %s on line %d
15591
bool(false)
156-
157-
Warning: gmp_export(): Invalid options: Conflicting word orders in %s on line %d
158-
bool(false)
159-
160-
Warning: gmp_export(): Invalid options: Conflicting word endianness in %s on line %d
161-
bool(false)

ext/gmp/tests/041.phpt renamed to ext/gmp/tests/gmp_remroot.phpt

Lines changed: 1 addition & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,12 @@
11
--TEST--
2-
gmp_root() and gmp_rootrem() basic tests
2+
gmp_rootrem() basic tests
33
--SKIPIF--
44
<?php if (!extension_loaded("gmp")) print "skip"; ?>
55
--FILE--
66
<?php
77

8-
var_dump(gmp_root());
98
var_dump(gmp_rootrem());
109

11-
var_dump(gmp_root(1000, 3));
12-
var_dump(gmp_root(100, 3));
13-
var_dump(gmp_root(-100, 3));
14-
15-
var_dump(gmp_root(1000, 4));
16-
var_dump(gmp_root(100, 4));
17-
var_dump(gmp_root(-100, 4));
18-
19-
var_dump(gmp_root(0, 3));
20-
var_dump(gmp_root(100, 0));
21-
var_dump(gmp_root(100, -3));
22-
2310
var_dump(gmp_rootrem(1000, 3));
2411
var_dump(gmp_rootrem(100, 3));
2512
var_dump(gmp_rootrem(-100, 3));
@@ -34,44 +21,8 @@ var_dump(gmp_rootrem(100, -3));
3421

3522
?>
3623
--EXPECTF--
37-
Warning: gmp_root() expects exactly 2 parameters, 0 given in %s on line %d
38-
NULL
39-
4024
Warning: gmp_rootrem() expects exactly 2 parameters, 0 given in %s on line %d
4125
NULL
42-
object(GMP)#%d (1) {
43-
["num"]=>
44-
string(2) "10"
45-
}
46-
object(GMP)#%d (1) {
47-
["num"]=>
48-
string(1) "4"
49-
}
50-
object(GMP)#%d (1) {
51-
["num"]=>
52-
string(2) "-4"
53-
}
54-
object(GMP)#%d (1) {
55-
["num"]=>
56-
string(1) "5"
57-
}
58-
object(GMP)#%d (1) {
59-
["num"]=>
60-
string(1) "3"
61-
}
62-
63-
Warning: gmp_root(): Can't take even root of negative number in %s on line %d
64-
bool(false)
65-
object(GMP)#%d (1) {
66-
["num"]=>
67-
string(1) "0"
68-
}
69-
70-
Warning: gmp_root(): The root must be positive in %s on line %d
71-
bool(false)
72-
73-
Warning: gmp_root(): The root must be positive in %s on line %d
74-
bool(false)
7526
array(2) {
7627
[0]=>
7728
object(GMP)#%d (1) {

ext/gmp/tests/gmp_root.phpt

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
--TEST--
2+
gmp_root() basic tests
3+
--SKIPIF--
4+
<?php if (!extension_loaded("gmp")) print "skip"; ?>
5+
--FILE--
6+
<?php
7+
8+
var_dump(gmp_root());
9+
10+
var_dump(gmp_root(1000, 3));
11+
var_dump(gmp_root(100, 3));
12+
var_dump(gmp_root(-100, 3));
13+
14+
var_dump(gmp_root(1000, 4));
15+
var_dump(gmp_root(100, 4));
16+
var_dump(gmp_root(-100, 4));
17+
18+
var_dump(gmp_root(0, 3));
19+
var_dump(gmp_root(100, 0));
20+
var_dump(gmp_root(100, -3));
21+
22+
?>
23+
--EXPECTF--
24+
Warning: gmp_root() expects exactly 2 parameters, 0 given in %s on line %d
25+
NULL
26+
object(GMP)#%d (1) {
27+
["num"]=>
28+
string(2) "10"
29+
}
30+
object(GMP)#%d (1) {
31+
["num"]=>
32+
string(1) "4"
33+
}
34+
object(GMP)#%d (1) {
35+
["num"]=>
36+
string(2) "-4"
37+
}
38+
object(GMP)#%d (1) {
39+
["num"]=>
40+
string(1) "5"
41+
}
42+
object(GMP)#%d (1) {
43+
["num"]=>
44+
string(1) "3"
45+
}
46+
47+
Warning: gmp_root(): Can't take even root of negative number in %s on line %d
48+
bool(false)
49+
object(GMP)#%d (1) {
50+
["num"]=>
51+
string(1) "0"
52+
}
53+
54+
Warning: gmp_root(): The root must be positive in %s on line %d
55+
bool(false)
56+
57+
Warning: gmp_root(): The root must be positive in %s on line %d
58+
bool(false)

0 commit comments

Comments
 (0)