]> granicus.if.org Git - php/commitdiff
Added tests for pow()
authorJeroen van Wolffelaar <jeroen@php.net>
Sat, 4 Aug 2001 13:20:31 +0000 (13:20 +0000)
committerJeroen van Wolffelaar <jeroen@php.net>
Sat, 4 Aug 2001 13:20:31 +0000 (13:20 +0000)
#The tests near LONG_MAX/MIN fail, I know that

ext/standard/tests/math/pow.phpt [new file with mode: 0644]
ext/standard/tests/math/test_eval.inc [new file with mode: 0644]

diff --git a/ext/standard/tests/math/pow.phpt b/ext/standard/tests/math/pow.phpt
new file mode 100644 (file)
index 0000000..bc6472b
--- /dev/null
@@ -0,0 +1,136 @@
+--TEST--
+Various pow() tests
+--POST--
+--GET--
+--FILE--
+<?php 
+define('LONG_MAX', is_int(5000000000)? 9223372036854775807 : 0x7FFFFFFF);
+define('LONG_MIN', -LONG_MAX - 1);
+printf("%d,%d,%d,%d\n",is_int(LONG_MIN  ),is_int(LONG_MAX  ),
+                                          is_int(LONG_MIN-1),is_int(LONG_MAX+1));
+
+$tests = <<<TESTS
+ 0.25 === pow(-2,-2)
+-0.5  === pow(-2,-1)
+ 1    === pow(-2, 0)
+-2    === pow(-2, 1)
+ 4    === pow(-2, 2)
+ 1    === pow(-1,-2)
+-1    === pow(-1,-1)
+ 1    === pow(-1, 0)
+-1    === pow(-1, 1)
+ 1    === pow(-1, 2)
+FALSE === pow( 0,-2)
+FALSE === pow( 0,-1)
+ 1    === pow( 0, 0)
+ 0    === pow( 0, 1)
+ 0    === pow( 0, 2)
+ 1    === pow( 1,-2)
+ 1    === pow( 1,-1)
+ 1    === pow( 1, 0)
+ 1    === pow( 1, 1)
+ 1    === pow( 1, 2)
+ 0.25 === pow( 2,-2)
+ 0.5  === pow( 2,-1)
+ 1    === pow( 2, 0)
+ 2    === pow( 2, 1)
+ 4    === pow( 2, 2)
+FALSE === pow(-2,-2.0)
+FALSE === pow(-2,-1.0)
+FALSE === pow(-2, 0.0)
+FALSE === pow(-2, 1.0)
+FALSE === pow(-2, 2.0)
+FALSE === pow(-1,-2.0)
+FALSE === pow(-1,-1.0)
+FALSE === pow(-1, 0.0)
+FALSE === pow(-1, 1.0)
+FALSE === pow(-1, 2.0)
+FALSE === pow( 0,-2.0)
+FALSE === pow( 0,-1.0)
+FALSE === pow( 0, 0.0)
+FALSE === pow( 0, 1.0)
+FALSE === pow( 0, 2.0)
+ 1.0  === pow( 1,-2.0)
+ 1.0  === pow( 1,-1.0)
+ 1.0  === pow( 1, 0.0)
+ 1.0  === pow( 1, 1.0)
+ 1.0  === pow( 1, 2.0)
+ 0.25 === pow( 2,-2.0)
+ 0.5  === pow( 2,-1.0)
+ 1.0  === pow( 2, 0.0)
+ 2.0  === pow( 2, 1.0)
+ 4.0  === pow( 2, 2.0)
+ 2147483648 === pow(2,31)
+-2147483648 === pow(-2,31)
+ 1000000000 === pow(10,9)
+ 100000000  === pow(-10,8)
+ 1    === pow(-1,1443279822)
+-1    === pow(-1,1443279821)
+sqrt(2) === pow(2,1/2)
+FALSE === pow(-2.0,-2.0)
+FALSE === pow(-2.0,-1.0)
+FALSE === pow(-2.0, 0.0)
+FALSE === pow(-2.0, 1.0)
+FALSE === pow(-2.0, 2.0)
+FALSE === pow(-1.0,-2.0)
+FALSE === pow(-1.0,-1.0)
+FALSE === pow(-1.0, 0.0)
+FALSE === pow(-1.0, 1.0)
+FALSE === pow(-1.0, 2.0)
+FALSE === pow( 0.0,-2.0)
+FALSE === pow( 0.0,-1.0)
+FALSE === pow( 0.0, 0.0)
+FALSE === pow( 0.0, 1.0)
+FALSE === pow( 0.0, 2.0)
+ 1.0  === pow( 1.0,-2.0)
+ 1.0  === pow( 1.0,-1.0)
+ 1.0  === pow( 1.0, 0.0)
+ 1.0  === pow( 1.0, 1.0)
+ 1.0  === pow( 1.0, 2.0)
+ 0.25 === pow( 2.0,-2.0)
+ 0.5  === pow( 2.0,-1.0)
+ 1.0  === pow( 2.0, 0.0)
+ 2.0  === pow( 2.0, 1.0)
+ 4.0  === pow( 2.0, 2.0)
+ 0.25 === pow(-2.0,-2)
+-0.5  === pow(-2.0,-1)
+ 1.0  === pow(-2.0, 0)
+-2.0  === pow(-2.0, 1)
+ 4.0  === pow(-2.0, 2)
+ 1.0  === pow(-1.0,-2)
+-1.0  === pow(-1.0,-1)
+ 1.0  === pow(-1.0, 0)
+-1.0  === pow(-1.0, 1)
+ 1.0  === pow(-1.0, 2)
+FALSE === pow( 0.0,-2)
+FALSE === pow( 0.0,-1)
+ 1.0  === pow( 0.0, 0)
+ 0.0  === pow( 0.0, 1)
+ 0.0  === pow( 0.0, 2)
+ 1.0  === pow( 1.0,-2)
+ 1.0  === pow( 1.0,-1)
+ 1.0  === pow( 1.0, 0)
+ 1.0  === pow( 1.0, 1)
+ 1.0  === pow( 1.0, 2)
+ 0.25 === pow( 2.0,-2)
+ 0.5  === pow( 2.0,-1)
+ 1.0  === pow( 2.0, 0)
+ 2.0  === pow( 2.0, 1)
+ 4.0  === pow( 2.0, 2)
+LONG_MAX === pow(LONG_MAX,1);
+LONG_MIN === pow(LONG_MIN,1);
+LONG_MAX*LONG_MAX === pow(LONG_MAX,2);
+LONG_MIN*LONG_MIN === pow(LONG_MIN,2);
+(float)LONG_MAX === pow(LONG_MAX,1.0);
+FALSE === pow(LONG_MIN,1.0);
+LONG_MAX*LONG_MAX === pow(LONG_MAX,2.0);
+FALSE === pow(LONG_MIN,2.0);
+TESTS;
+
+ echo "On failure, please mail result to jeroen@php.net\n";
+ include('test_eval.inc');
+
+--EXPECT--
+1,1,0,0
+On failure, please contact jeroen@php.net
+OK
diff --git a/ext/standard/tests/math/test_eval.inc b/ext/standard/tests/math/test_eval.inc
new file mode 100644 (file)
index 0000000..81f8bf6
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+ error_reporting(0);  
+ $tests = explode("\n",$tests);
+ $success = TRUE;
+ foreach ($tests as $test)
+ {
+        $res = eval("return ($test);");
+        $success = $success && $res;
+        if (!$res)
+        {
+                echo "\nAssert failed:\n";
+                echo "$test\n";
+                list($left,$right) = explode('===',$test);
+                echo "Left:  ";var_dump(eval("return ($left );"));
+                echo "Right: ";var_dump(eval("return ($right);"));
+        }
+ }
+ if ($success) echo "OK";
+