]> granicus.if.org Git - php/commitdiff
Add tests for bug #66872 and gmp_[rem]root
authorNikita Popov <nikic@php.net>
Tue, 11 Mar 2014 12:28:26 +0000 (13:28 +0100)
committerNikita Popov <nikic@php.net>
Tue, 11 Mar 2014 13:06:12 +0000 (14:06 +0100)
ext/gmp/tests/041.phpt [new file with mode: 0644]
ext/gmp/tests/bug66872.phpt [new file with mode: 0644]

diff --git a/ext/gmp/tests/041.phpt b/ext/gmp/tests/041.phpt
new file mode 100644 (file)
index 0000000..6e6d959
--- /dev/null
@@ -0,0 +1,147 @@
+--TEST--
+gmp_root() and gmp_rootrem() basic tests
+--SKIPIF--
+<?php if (!extension_loaded("gmp")) print "skip"; ?>
+--FILE--
+<?php
+
+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));
+
+var_dump(gmp_rootrem(1000, 3));
+var_dump(gmp_rootrem(100, 3));
+var_dump(gmp_rootrem(-100, 3));
+
+var_dump(gmp_rootrem(1000, 4));
+var_dump(gmp_rootrem(100, 4));
+var_dump(gmp_rootrem(-100, 4));
+
+var_dump(gmp_rootrem(0, 3));
+var_dump(gmp_rootrem(100, 0));
+var_dump(gmp_rootrem(100, -3));
+
+?>
+--EXPECTF--    
+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)
+array(2) {
+  [0]=>
+  object(GMP)#%d (1) {
+    ["num"]=>
+    string(2) "10"
+  }
+  [1]=>
+  object(GMP)#%d (1) {
+    ["num"]=>
+    string(1) "0"
+  }
+}
+array(2) {
+  [0]=>
+  object(GMP)#%d (1) {
+    ["num"]=>
+    string(1) "4"
+  }
+  [1]=>
+  object(GMP)#%d (1) {
+    ["num"]=>
+    string(2) "36"
+  }
+}
+array(2) {
+  [0]=>
+  object(GMP)#%d (1) {
+    ["num"]=>
+    string(2) "-4"
+  }
+  [1]=>
+  object(GMP)#%d (1) {
+    ["num"]=>
+    string(2) "36"
+  }
+}
+array(2) {
+  [0]=>
+  object(GMP)#%d (1) {
+    ["num"]=>
+    string(1) "5"
+  }
+  [1]=>
+  object(GMP)#%d (1) {
+    ["num"]=>
+    string(3) "375"
+  }
+}
+array(2) {
+  [0]=>
+  object(GMP)#%d (1) {
+    ["num"]=>
+    string(1) "3"
+  }
+  [1]=>
+  object(GMP)#%d (1) {
+    ["num"]=>
+    string(2) "19"
+  }
+}
+
+Warning: gmp_rootrem(): Can't take even root of negative number in %s on line %d
+bool(false)
+array(2) {
+  [0]=>
+  object(GMP)#%d (1) {
+    ["num"]=>
+    string(1) "0"
+  }
+  [1]=>
+  object(GMP)#%d (1) {
+    ["num"]=>
+    string(1) "0"
+  }
+}
+
+Warning: gmp_rootrem(): The root must be positive in %s on line %d
+bool(false)
+
+Warning: gmp_rootrem(): The root must be positive in %s on line %d
+bool(false)
diff --git a/ext/gmp/tests/bug66872.phpt b/ext/gmp/tests/bug66872.phpt
new file mode 100644 (file)
index 0000000..715b7ba
--- /dev/null
@@ -0,0 +1,11 @@
+--TEST--
+Bug #66872: Crash when passing string to gmp_testbit
+--FILE--
+<?php
+
+var_dump(gmp_testbit("abc", 1));
+
+?>
+--EXPECTF--
+Warning: gmp_testbit(): Unable to convert variable to GMP - string is not an integer in %s on line %d
+bool(false)