]> granicus.if.org Git - php/commitdiff
Add extra ArrayObject::sort() test
authorNikita Popov <nikic@php.net>
Fri, 18 Mar 2016 18:59:08 +0000 (19:59 +0100)
committerNikita Popov <nikic@php.net>
Fri, 18 Mar 2016 18:59:08 +0000 (19:59 +0100)
ext/spl/tests/ArrayObject_sort_different_backing_storage.phpt [new file with mode: 0644]

diff --git a/ext/spl/tests/ArrayObject_sort_different_backing_storage.phpt b/ext/spl/tests/ArrayObject_sort_different_backing_storage.phpt
new file mode 100644 (file)
index 0000000..0b9bbd6
--- /dev/null
@@ -0,0 +1,72 @@
+--TEST--
+Test sorting of various ArrayObject backing storage
+--FILE--
+<?php
+
+$obj = (object)['a' => 2, 'b' => 1];
+$ao = new ArrayObject($obj);
+$ao->uasort(function($a, $b) { return $a <=> $b; });
+var_dump($ao);
+
+$ao2 = new ArrayObject($ao);
+$ao2->uasort(function($a, $b) { return $b <=> $a; });
+var_dump($ao2);
+
+$ao3 = new ArrayObject();
+$ao3->exchangeArray($ao3);
+$ao3->a = 2;
+$ao3->b = 1;
+$ao3->uasort(function($a, $b) { return $a <=> $b; });
+var_dump($ao3);
+
+$ao4 = new ArrayObject([]);
+$ao4->uasort(function($a, $b) { return $a <=> $b; });
+var_dump($ao4);
+
+$ao5 = new ArrayObject(['a' => 2, 'b' => 1]);
+$ao5->uasort(function($a, $b) { return $a <=> $b; });
+var_dump($ao5);
+
+?>
+--EXPECT--
+object(ArrayObject)#2 (1) {
+  ["storage":"ArrayObject":private]=>
+  object(stdClass)#1 (2) {
+    ["b"]=>
+    int(1)
+    ["a"]=>
+    int(2)
+  }
+}
+object(ArrayObject)#3 (1) {
+  ["storage":"ArrayObject":private]=>
+  object(ArrayObject)#2 (1) {
+    ["storage":"ArrayObject":private]=>
+    object(stdClass)#1 (2) {
+      ["a"]=>
+      int(2)
+      ["b"]=>
+      int(1)
+    }
+  }
+}
+object(ArrayObject)#4 (2) {
+  ["b"]=>
+  int(1)
+  ["a"]=>
+  int(2)
+}
+object(ArrayObject)#5 (1) {
+  ["storage":"ArrayObject":private]=>
+  array(0) {
+  }
+}
+object(ArrayObject)#6 (1) {
+  ["storage":"ArrayObject":private]=>
+  array(2) {
+    ["b"]=>
+    int(1)
+    ["a"]=>
+    int(2)
+  }
+}