5 changed files with 140 additions and 142 deletions
-
21ext/gmp/tests/001.phpt
-
80ext/gmp/tests/gmp_export.phpt
-
72ext/gmp/tests/gmp_import.phpt
-
51ext/gmp/tests/gmp_remroot.phpt
-
58ext/gmp/tests/gmp_root.phpt
@ -1,21 +0,0 @@ |
|||
--TEST-- |
|||
Check for gmp presence |
|||
--SKIPIF-- |
|||
<?php if (!extension_loaded("gmp")) print "skip"; ?> |
|||
--FILE-- |
|||
<?php |
|||
echo "gmp extension is available"; |
|||
/* |
|||
you can add regression tests for your extension here |
|||
|
|||
the output of your test code has to be equal to the |
|||
text in the --EXPECT-- section below for the tests |
|||
to pass, differences between the output and the |
|||
expected text are interpreted as failure |
|||
|
|||
see php5/tests/README for further information on |
|||
writing regression tests |
|||
*/ |
|||
?> |
|||
--EXPECT-- |
|||
gmp extension is available |
|||
@ -0,0 +1,80 @@ |
|||
--TEST-- |
|||
gmp_export() basic tests |
|||
--SKIPIF-- |
|||
<?php if (!extension_loaded("gmp")) echo "skip"; ?> |
|||
--FILE-- |
|||
<?php |
|||
|
|||
// Tests taken from GMPs own test suite. |
|||
|
|||
// format is [output, size, options, expected] |
|||
$export = [ |
|||
['0',1,GMP_BIG_ENDIAN,''], |
|||
['0',2,GMP_BIG_ENDIAN,''], |
|||
['0',3,GMP_BIG_ENDIAN,''], |
|||
['12345678',1,GMP_BIG_ENDIAN,'12345678'], |
|||
['12345678',4,GMP_BIG_ENDIAN,'12345678'], |
|||
['12345678',4,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'12345678'], |
|||
['12345678',1,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'78563412'], |
|||
['12345678',4,GMP_LITTLE_ENDIAN,'78563412'], |
|||
['12345678',4,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'78563412'], |
|||
['123456789ABC',2,GMP_BIG_ENDIAN,'123456789abc'], |
|||
['123456789ABC',2,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'9abc56781234'], |
|||
['123456789ABC',2,GMP_LITTLE_ENDIAN,'34127856bc9a'], |
|||
['123456789ABC',2,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'bc9a78563412'], |
|||
['112233445566778899AABBCC',4,GMP_BIG_ENDIAN,'112233445566778899aabbcc'], |
|||
['112233445566778899AABBCC',4,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'99aabbcc5566778811223344'], |
|||
['112233445566778899AABBCC',4,GMP_LITTLE_ENDIAN,'4433221188776655ccbbaa99'], |
|||
['112233445566778899AABBCC',4,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'ccbbaa998877665544332211'], |
|||
['100120023003400450056006700780089009A00AB00BC00C',8,GMP_BIG_ENDIAN,'100120023003400450056006700780089009a00ab00bc00c'], |
|||
['100120023003400450056006700780089009A00AB00BC00C',8,GMP_LSW_FIRST | GMP_BIG_ENDIAN,'9009a00ab00bc00c50056006700780081001200230034004'], |
|||
['100120023003400450056006700780089009A00AB00BC00C',8,GMP_LITTLE_ENDIAN,'044003300220011008800770066005500cc00bb00aa00990'], |
|||
['100120023003400450056006700780089009A00AB00BC00C',8,GMP_LSW_FIRST | GMP_LITTLE_ENDIAN,'0cc00bb00aa0099008800770066005500440033002200110'] |
|||
]; |
|||
|
|||
$passed = true; |
|||
foreach ($export as $k => $test) { |
|||
$gmp = gmp_init($test[0], 16); |
|||
$str = gmp_export($gmp, $test[1], $test[2]); |
|||
if (is_string($str)) { |
|||
$result = bin2hex($str); |
|||
if ($result !== $test[3]) { |
|||
echo "$k: '$result' !== '{$test[3]}'\n"; |
|||
$passed = false; |
|||
} |
|||
} else { |
|||
$type = gettype($str); |
|||
echo "$k: $type !== '{$test[3]}'\n"; |
|||
} |
|||
} |
|||
|
|||
var_dump($passed); |
|||
|
|||
// Invalid arguments (zpp failure) |
|||
var_dump(gmp_export()); |
|||
|
|||
// Invalid word sizes |
|||
var_dump(gmp_export(123, -1)); |
|||
var_dump(gmp_export(123, 0)); |
|||
|
|||
// Invalid options |
|||
var_dump(gmp_export(123, 1, GMP_MSW_FIRST | GMP_LSW_FIRST)); |
|||
var_dump(gmp_export(123, 1, GMP_BIG_ENDIAN | GMP_LITTLE_ENDIAN)); |
|||
|
|||
--EXPECTF-- |
|||
bool(true) |
|||
|
|||
Warning: gmp_export() expects at least 1 parameter, 0 given in %s on line %d |
|||
NULL |
|||
|
|||
Warning: gmp_export(): Word size must be positive, -1 given in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: gmp_export(): Word size must be positive, 0 given in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: gmp_export(): Invalid options: Conflicting word orders in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: gmp_export(): Invalid options: Conflicting word endianness in %s on line %d |
|||
bool(false) |
|||
@ -0,0 +1,58 @@ |
|||
--TEST-- |
|||
gmp_root() basic tests |
|||
--SKIPIF-- |
|||
<?php if (!extension_loaded("gmp")) print "skip"; ?> |
|||
--FILE-- |
|||
<?php |
|||
|
|||
var_dump(gmp_root()); |
|||
|
|||
var_dump(gmp_root(1000, 3)); |
|||
var_dump(gmp_root(100, 3)); |
|||
var_dump(gmp_root(-100, 3)); |
|||
|
|||
var_dump(gmp_root(1000, 4)); |
|||
var_dump(gmp_root(100, 4)); |
|||
var_dump(gmp_root(-100, 4)); |
|||
|
|||
var_dump(gmp_root(0, 3)); |
|||
var_dump(gmp_root(100, 0)); |
|||
var_dump(gmp_root(100, -3)); |
|||
|
|||
?> |
|||
--EXPECTF-- |
|||
Warning: gmp_root() expects exactly 2 parameters, 0 given in %s on line %d |
|||
NULL |
|||
object(GMP)#%d (1) { |
|||
["num"]=> |
|||
string(2) "10" |
|||
} |
|||
object(GMP)#%d (1) { |
|||
["num"]=> |
|||
string(1) "4" |
|||
} |
|||
object(GMP)#%d (1) { |
|||
["num"]=> |
|||
string(2) "-4" |
|||
} |
|||
object(GMP)#%d (1) { |
|||
["num"]=> |
|||
string(1) "5" |
|||
} |
|||
object(GMP)#%d (1) { |
|||
["num"]=> |
|||
string(1) "3" |
|||
} |
|||
|
|||
Warning: gmp_root(): Can't take even root of negative number in %s on line %d |
|||
bool(false) |
|||
object(GMP)#%d (1) { |
|||
["num"]=> |
|||
string(1) "0" |
|||
} |
|||
|
|||
Warning: gmp_root(): The root must be positive in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: gmp_root(): The root must be positive in %s on line %d |
|||
bool(false) |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue