]> granicus.if.org Git - php/commitdiff
- Remove duplicate error message and add new test
authorMarcus Boerger <helly@php.net>
Sun, 21 May 2006 12:42:00 +0000 (12:42 +0000)
committerMarcus Boerger <helly@php.net>
Sun, 21 May 2006 12:42:00 +0000 (12:42 +0000)
ext/spl/spl_iterators.c
ext/spl/tests/iterator_042.phpt [new file with mode: 0755]

index bba3dc1f19bc051e816f9b8e31cacf7157266ccf..6cdeeaca43dd848943e3629f3442576810dcea6f 100755 (executable)
@@ -2306,7 +2306,7 @@ SPL_METHOD(AppendIterator, append)
        
        APPENDIT_CHECK_CTOR(intern);
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &it, zend_ce_iterator) == FAILURE) {
+       if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "O", &it, zend_ce_iterator) == FAILURE) {
                return;
        }
        spl_array_iterator_append(intern->u.append.zarrayit, it TSRMLS_CC);
diff --git a/ext/spl/tests/iterator_042.phpt b/ext/spl/tests/iterator_042.phpt
new file mode 100755 (executable)
index 0000000..8615450
--- /dev/null
@@ -0,0 +1,104 @@
+--TEST--
+SPL: AppendIterator and its ArrayIterator
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+function test_error_handler($errno, $msg, $filename, $linenum, $vars)
+{
+       echo "Error $msg in $filename on line $linenum\n";
+       return true;
+}
+
+set_error_handler('test_error_handler');
+
+$it = new AppendIterator;
+
+$it->append(array());
+$it->append(new ArrayIterator(array(1)));
+$it->append(new ArrayIterator(array(21, 22)));
+
+var_dump($it->getArrayIterator());
+
+$it->append(new ArrayIterator(array(31, 32, 33)));
+
+var_dump($it->getArrayIterator());
+
+$idx = 0;
+
+foreach($it as $k => $v)
+{
+       echo '===' . $idx++ . "===\n";
+       var_dump($it->getIteratorIndex());
+       var_dump($k);
+       var_dump($v);
+}
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+Error Argument 1 passed to AppendIterator::append() must implement interface Iterator, array given in %siterator_042.php on line %d
+object(ArrayIterator)#%d (2) {
+  [0]=>
+  object(ArrayIterator)#%d (1) {
+    [0]=>
+    int(1)
+  }
+  [1]=>
+  object(ArrayIterator)#%d (2) {
+    [0]=>
+    int(21)
+    [1]=>
+    int(22)
+  }
+}
+object(ArrayIterator)#%d (3) {
+  [0]=>
+  object(ArrayIterator)#%d (1) {
+    [0]=>
+    int(1)
+  }
+  [1]=>
+  object(ArrayIterator)#%d (2) {
+    [0]=>
+    int(21)
+    [1]=>
+    int(22)
+  }
+  [2]=>
+  object(ArrayIterator)#5 (3) {
+    [0]=>
+    int(31)
+    [1]=>
+    int(32)
+    [2]=>
+    int(33)
+  }
+}
+===0===
+int(0)
+int(0)
+int(1)
+===1===
+int(1)
+int(0)
+int(21)
+===2===
+int(1)
+int(1)
+int(22)
+===3===
+int(2)
+int(0)
+int(31)
+===4===
+int(2)
+int(1)
+int(32)
+===5===
+int(2)
+int(2)
+int(33)
+===DONE===