php-developer-list | 2002112

[PHP-DEV] Re: #19259 [Csd->Ctl]: sort-functions don't work From: Michael Mauch (michael.mauch <email protected>)
Date: 11/16/02

I wrote:

> These test results scared me as well, but it looks like this array
> test itsself is flawed: it relies on the fact that integers
> automatically wrap around to negative values at INT_MAX (=2147483647
> on 32 bit machines).

Attaching a patch for the array test: I changed the array in data.inc
to have only "normal" values (1000 and -1000) instead of 2147483647 and
-2147483647, and used the output of the tests on a 32 bit Linux machine
to be the expected result. With the patch, all three tests PASSed on the
64 bit Tru64 machine. So array sorting is fortunately not broken again
on Tru64.

Regards...
                Michael

diff -r -u ../php-cvs/php4/ext/standard/tests/array/001.phpt ext/standard/tests/array/001.phpt
--- ../php-cvs/php4/ext/standard/tests/array/001.phpt Sat Nov 9 11:42:49 2002
+++ ext/standard/tests/array/001.phpt Sat Nov 16 16:08:01 2002
@@ -57,7 +57,7 @@
   int(27)
   [3]=>
   string(4) "test"
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -113,7 +113,7 @@
 int(27)
 int(3)
 string(4) "test"
-string(11) "-2147483647"
+string(5) "-1000"
 array(2) {
   [0]=>
   string(6) "banana"
diff -r -u ../php-cvs/php4/ext/standard/tests/array/002.phpt ext/standard/tests/array/002.phpt
--- ../php-cvs/php4/ext/standard/tests/array/002.phpt Sat Nov 9 11:42:49 2002
+++ ext/standard/tests/array/002.phpt Sat Nov 16 16:07:14 2002
@@ -24,16 +24,43 @@
     var_dump ($data);
 }
 
+echo "Unsorted data:\n";
+var_dump ($data);
 foreach (array ('arsort', 'asort', 'krsort', 'ksort', 'rsort', 'sort') as $test_function) {
     test_sort ($test_function, $data);
 }
 
 ?>
 --EXPECT--
--- Testing arsort() --
+Unsorted data:
+array(8) {
+ [0]=>
+ string(3) "PHP"
+ [17]=>
+ string(27) "PHP: Hypertext Preprocessor"
+ [5]=>
+ string(4) "Test"
+ ["test"]=>
+ int(27)
+ [1000]=>
+ string(4) "test"
+ ["-1000"]=>
+ array(2) {
+ [0]=>
+ string(6) "banana"
+ [1]=>
+ string(6) "orange"
+ }
+ [1001]=>
+ string(6) "monkey"
+ [16777216]=>
+ float(-0.33333333333333)
+}
+
+ -- Testing arsort() --
 No second argument:
 array(8) {
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -42,9 +69,9 @@
   }
   ["test"]=>
   int(27)
- [2147483647]=>
+ [1000]=>
   string(4) "test"
- [-2147483648]=>
+ [1001]=>
   string(6) "monkey"
   [5]=>
   string(4) "Test"
@@ -57,7 +84,7 @@
 }
 Using SORT_REGULAR:
 array(8) {
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -66,9 +93,9 @@
   }
   ["test"]=>
   int(27)
- [2147483647]=>
+ [1000]=>
   string(4) "test"
- [-2147483648]=>
+ [1001]=>
   string(6) "monkey"
   [5]=>
   string(4) "Test"
@@ -83,7 +110,7 @@
 array(8) {
   ["test"]=>
   int(27)
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -94,20 +121,20 @@
   string(3) "PHP"
   [17]=>
   string(27) "PHP: Hypertext Preprocessor"
- [-2147483648]=>
+ [1001]=>
   string(6) "monkey"
   [5]=>
   string(4) "Test"
- [2147483647]=>
+ [1000]=>
   string(4) "test"
   [16777216]=>
   float(-0.33333333333333)
 }
 Using SORT_STRING
 array(8) {
- [2147483647]=>
+ [1000]=>
   string(4) "test"
- [-2147483648]=>
+ [1001]=>
   string(6) "monkey"
   [5]=>
   string(4) "Test"
@@ -115,7 +142,7 @@
   string(27) "PHP: Hypertext Preprocessor"
   [0]=>
   string(3) "PHP"
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -139,13 +166,13 @@
   string(27) "PHP: Hypertext Preprocessor"
   [5]=>
   string(4) "Test"
- [-2147483648]=>
+ [1001]=>
   string(6) "monkey"
- [2147483647]=>
+ [1000]=>
   string(4) "test"
   ["test"]=>
   int(27)
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -163,13 +190,13 @@
   string(27) "PHP: Hypertext Preprocessor"
   [5]=>
   string(4) "Test"
- [-2147483648]=>
+ [1001]=>
   string(6) "monkey"
- [2147483647]=>
+ [1000]=>
   string(4) "test"
   ["test"]=>
   int(27)
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -181,9 +208,9 @@
 array(8) {
   [16777216]=>
   float(-0.33333333333333)
- [-2147483648]=>
+ [1001]=>
   string(6) "monkey"
- [2147483647]=>
+ [1000]=>
   string(4) "test"
   [5]=>
   string(4) "Test"
@@ -191,7 +218,7 @@
   string(27) "PHP: Hypertext Preprocessor"
   [0]=>
   string(3) "PHP"
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -207,7 +234,7 @@
   float(-0.33333333333333)
   ["test"]=>
   int(27)
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -220,19 +247,21 @@
   string(27) "PHP: Hypertext Preprocessor"
   [5]=>
   string(4) "Test"
- [-2147483648]=>
+ [1001]=>
   string(6) "monkey"
- [2147483647]=>
+ [1000]=>
   string(4) "test"
 }
 
  -- Testing krsort() --
 No second argument:
 array(8) {
- [2147483647]=>
- string(4) "test"
   [16777216]=>
   float(-0.33333333333333)
+ [1001]=>
+ string(6) "monkey"
+ [1000]=>
+ string(4) "test"
   [17]=>
   string(27) "PHP: Hypertext Preprocessor"
   [5]=>
@@ -241,46 +270,46 @@
   int(27)
   [0]=>
   string(3) "PHP"
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
     [1]=>
     string(6) "orange"
   }
- [-2147483648]=>
- string(6) "monkey"
 }
 Using SORT_REGULAR:
 array(8) {
- [2147483647]=>
- string(4) "test"
   [16777216]=>
   float(-0.33333333333333)
+ [1001]=>
+ string(6) "monkey"
+ [1000]=>
+ string(4) "test"
   [17]=>
   string(27) "PHP: Hypertext Preprocessor"
   [5]=>
   string(4) "Test"
- ["test"]=>
- int(27)
   [0]=>
   string(3) "PHP"
- ["-2147483647"]=>
+ ["test"]=>
+ int(27)
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
     [1]=>
     string(6) "orange"
   }
- [-2147483648]=>
- string(6) "monkey"
 }
 Using SORT_NUMERIC:
 array(8) {
- [2147483647]=>
- string(4) "test"
   [16777216]=>
   float(-0.33333333333333)
+ [1001]=>
+ string(6) "monkey"
+ [1000]=>
+ string(4) "test"
   [17]=>
   string(27) "PHP: Hypertext Preprocessor"
   [5]=>
@@ -289,15 +318,13 @@
   int(27)
   [0]=>
   string(3) "PHP"
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
     [1]=>
     string(6) "orange"
   }
- [-2147483648]=>
- string(6) "monkey"
 }
 Using SORT_STRING
 array(8) {
@@ -305,17 +332,17 @@
   int(27)
   [5]=>
   string(4) "Test"
- [2147483647]=>
- string(4) "test"
   [17]=>
   string(27) "PHP: Hypertext Preprocessor"
   [16777216]=>
   float(-0.33333333333333)
+ [1001]=>
+ string(6) "monkey"
+ [1000]=>
+ string(4) "test"
   [0]=>
   string(3) "PHP"
- [-2147483648]=>
- string(6) "monkey"
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -327,9 +354,7 @@
  -- Testing ksort() --
 No second argument:
 array(8) {
- [-2147483648]=>
- string(6) "monkey"
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -344,16 +369,16 @@
   string(4) "Test"
   [17]=>
   string(27) "PHP: Hypertext Preprocessor"
+ [1000]=>
+ string(4) "test"
+ [1001]=>
+ string(6) "monkey"
   [16777216]=>
   float(-0.33333333333333)
- [2147483647]=>
- string(4) "test"
 }
 Using SORT_REGULAR:
 array(8) {
- [-2147483648]=>
- string(6) "monkey"
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -368,16 +393,16 @@
   string(4) "Test"
   [17]=>
   string(27) "PHP: Hypertext Preprocessor"
+ [1000]=>
+ string(4) "test"
+ [1001]=>
+ string(6) "monkey"
   [16777216]=>
   float(-0.33333333333333)
- [2147483647]=>
- string(4) "test"
 }
 Using SORT_NUMERIC:
 array(8) {
- [-2147483648]=>
- string(6) "monkey"
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -392,30 +417,32 @@
   string(4) "Test"
   [17]=>
   string(27) "PHP: Hypertext Preprocessor"
+ [1000]=>
+ string(4) "test"
+ [1001]=>
+ string(6) "monkey"
   [16777216]=>
   float(-0.33333333333333)
- [2147483647]=>
- string(4) "test"
 }
 Using SORT_STRING
 array(8) {
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
     [1]=>
     string(6) "orange"
   }
- [-2147483648]=>
- string(6) "monkey"
   [0]=>
   string(3) "PHP"
+ [1000]=>
+ string(4) "test"
+ [1001]=>
+ string(6) "monkey"
   [16777216]=>
   float(-0.33333333333333)
   [17]=>
   string(27) "PHP: Hypertext Preprocessor"
- [2147483647]=>
- string(4) "test"
   [5]=>
   string(4) "Test"
   ["test"]=>
diff -r -u ../php-cvs/php4/ext/standard/tests/array/003.phpt ext/standard/tests/array/003.phpt
--- ../php-cvs/php4/ext/standard/tests/array/003.phpt Sat Nov 9 11:42:49 2002
+++ ext/standard/tests/array/003.phpt Sat Nov 16 16:08:59 2002
@@ -34,7 +34,7 @@
 array(8) {
   [16777216]=>
   float(-0.33333333333333)
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
@@ -49,31 +49,31 @@
   string(27) "PHP: Hypertext Preprocessor"
   [5]=>
   string(4) "Test"
- [-2147483648]=>
+ [1001]=>
   string(6) "monkey"
- [2147483647]=>
+ [1000]=>
   string(4) "test"
 }
 
  -- Testing uksort() --
 array(8) {
- ["-2147483647"]=>
+ ["-1000"]=>
   array(2) {
     [0]=>
     string(6) "banana"
     [1]=>
     string(6) "orange"
   }
- [-2147483648]=>
- string(6) "monkey"
   [0]=>
   string(3) "PHP"
+ [1000]=>
+ string(4) "test"
+ [1001]=>
+ string(6) "monkey"
   [16777216]=>
   float(-0.33333333333333)
   [17]=>
   string(27) "PHP: Hypertext Preprocessor"
- [2147483647]=>
- string(4) "test"
   [5]=>
   string(4) "Test"
   ["test"]=>
diff -r -u ../php-cvs/php4/ext/standard/tests/array/data.inc ext/standard/tests/array/data.inc
--- ../php-cvs/php4/ext/standard/tests/array/data.inc Sat Nov 9 11:42:49 2002
+++ ext/standard/tests/array/data.inc Sat Nov 16 16:05:49 2002
@@ -5,8 +5,8 @@
         17=>'PHP: Hypertext Preprocessor',
         5=>'Test',
         'test'=>27,
- 2147483647=>'test',
- "-2147483647"=>array('banana', 'orange'),
+ 1000=>'test',
+ "-1000"=>array('banana', 'orange'),
         'monkey',
         $tmp=>-1/3
 );

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php