helly Sat May 20 20:38:28 2006 UTC Added files: /php-src/ext/spl/tests iterator_041a.phpt iterator_041b.phpt
Modified files: /php-src/ext/spl/tests iterator_041.phpt Log: - Split up the test in different problem categories http://cvs.php.net/viewcvs.cgi/php-src/ext/spl/tests/iterator_041.phpt?r1=1.2&r2=1.3&diff_format=u Index: php-src/ext/spl/tests/iterator_041.phpt diff -u php-src/ext/spl/tests/iterator_041.phpt:1.2 php-src/ext/spl/tests/iterator_041.phpt:1.3 --- php-src/ext/spl/tests/iterator_041.phpt:1.2 Sat May 20 19:01:22 2006 +++ php-src/ext/spl/tests/iterator_041.phpt Sat May 20 20:38:28 2006 @@ -8,6 +8,7 @@ class MyArrayIterator extends ArrayIterator { static protected $fail = 0; + public $state; static function fail($state, $method) { @@ -19,6 +20,7 @@ function __construct() { + $this->state = MyArrayIterator::$fail; self::fail(0, __FUNCTION__); parent::__construct(array(1, 2)); self::fail(1, __FUNCTION__); @@ -56,10 +58,10 @@ function __destruct() { - self::fail(7, __FUNCTION__); +// self::fail(7, __FUNCTION__); } - static function test($func) + static function test($func, $skip = null) { echo "===$func===\n"; self::$fail = 0; @@ -72,29 +74,35 @@ } catch (Exception $e) { - var_dump($e->getMessage()); + echo $e->getMessage() . "\n"; + } + if (isset($skip[self::$fail])) + { + self::$fail = $skip[self::$fail]; + } + else + { + self::$fail++; } - self::$fail++; } } } MyArrayIterator::test('iterator_to_array'); -MyArrayIterator::test('iterator_count'); +MyArrayIterator::test('iterator_count', array(3 => 6)); ?> ===DONE=== <?php exit(0); ?> --EXPECT-- ===iterator_to_array=== -string(22) "State 0: __construct()" -string(22) "State 1: __construct()" -string(17) "State 2: rewind()" -string(16) "State 3: valid()" -string(18) "State 4: current()" -string(14) "State 5: key()" -string(15) "State 6: next()" -string(21) "State 7: __destruct()" +State 0: __construct() +State 1: __construct() +State 2: rewind() +State 3: valid() +State 4: current() +State 5: key() +State 6: next() array(2) { [0]=> int(1) @@ -102,11 +110,10 @@ int(2) } ===iterator_count=== -string(22) "State 0: __construct()" -string(22) "State 1: __construct()" -string(17) "State 2: rewind()" -string(16) "State 3: valid()" -string(15) "State 6: next()" -string(21) "State 7: __destruct()" +State 0: __construct() +State 1: __construct() +State 2: rewind() +State 3: valid() +State 6: next() int(2) ===DONE=== http://cvs.php.net/viewcvs.cgi/php-src/ext/spl/tests/iterator_041a.phpt?view=markup&rev=1.1 Index: php-src/ext/spl/tests/iterator_041a.phpt +++ php-src/ext/spl/tests/iterator_041a.phpt --TEST-- SPL: iterator_to_array() and exceptions from destruct --SKIPIF-- <?php if (!extension_loaded("spl")) print "skip"; ?> --FILE-- <?php class MyArrayIterator extends ArrayIterator { static protected $fail = 0; public $state; static function fail($state, $method) { if (self::$fail == $state) { throw new Exception("State $state: $method()"); } } function __construct() { $this->state = MyArrayIterator::$fail; self::fail(0, __FUNCTION__); parent::__construct(array(1, 2)); self::fail(1, __FUNCTION__); } function rewind() { self::fail(2, __FUNCTION__); return parent::rewind(); } function valid() { self::fail(3, __FUNCTION__); return parent::valid(); } function current() { self::fail(4, __FUNCTION__); return parent::current(); } function key() { self::fail(5, __FUNCTION__); return parent::key(); } function next() { self::fail(6, __FUNCTION__); return parent::next(); } function __destruct() { self::fail(7, __FUNCTION__); } static function test($func, $skip = null) { echo "===$func===\n"; self::$fail = 7; while(self::$fail < 10) { try { var_dump($func(new MyArrayIterator())); break; } catch (Exception $e) { echo $e->getMessage() . "\n"; } if (isset($skip[self::$fail])) { self::$fail = $skip[self::$fail]; } else { self::$fail++; } } } } MyArrayIterator::test('iterator_to_array'); MyArrayIterator::test('iterator_count', array(3 => 6)); ?> ===DONE=== <?php exit(0); ?> --EXPECT-- ===iterator_to_array=== State 7: __destruct() array(2) { [0]=> int(1) [1]=> int(2) } ===iterator_count=== State 7: __destruct() int(2) ===DONE=== http://cvs.php.net/viewcvs.cgi/php-src/ext/spl/tests/iterator_041b.phpt?view=markup&rev=1.1 Index: php-src/ext/spl/tests/iterator_041b.phpt +++ php-src/ext/spl/tests/iterator_041b.phpt --TEST-- SPL: iterator_to_array() and exceptions from delayed destruct --SKIPIF-- <?php if (!extension_loaded("spl")) print "skip"; ?> --FILE-- <?php class MyArrayIterator extends ArrayIterator { static protected $fail = 0; public $state; static function fail($state, $method) { if (self::$fail == $state) { throw new Exception("State $state: $method()"); } } function __construct() { $this->state = MyArrayIterator::$fail; self::fail(0, __FUNCTION__); parent::__construct(array(1, 2)); self::fail(1, __FUNCTION__); } function rewind() { self::fail(2, __FUNCTION__); return parent::rewind(); } function valid() { self::fail(3, __FUNCTION__); return parent::valid(); } function current() { self::fail(4, __FUNCTION__); return parent::current(); } function key() { self::fail(5, __FUNCTION__); return parent::key(); } function next() { self::fail(6, __FUNCTION__); return parent::next(); } function __destruct() { self::fail(7, __FUNCTION__); } static function test($func, $skip = null) { echo "===$func===\n"; self::$fail = 0; while(self::$fail < 10) { try { var_dump($func(new MyArrayIterator())); break; } catch (Exception $e) { echo $e->getMessage() . "\n"; } if (isset($skip[self::$fail])) { self::$fail = $skip[self::$fail]; } else { self::$fail++; } } } } MyArrayIterator::test('iterator_to_array'); MyArrayIterator::test('iterator_count', array(3 => 6)); ?> ===DONE=== <?php exit(0); ?> --EXPECT-- ===iterator_to_array=== State 0: __construct() State 1: __construct() State 2: rewind() State 3: valid() State 4: current() State 5: key() State 6: next() Fatal error: Ignoring exception from MyArrayIterator::__destruct() while an exception is already active (Uncaught Exception in /usr/src/php-cvs/ext/spl/tests/iterator_041b.phpt on line 17) in %siterator_041b.php on line %d -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php