1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
|
--TEST--
Bug #54384: Several SPL classes crash when the parent constructor is not called
--FILE--
<?php
function test($f) {
try {
$f();
echo "ran normally (unexpected)\n\n";
} catch (LogicException $e) {
echo "exception (expected)\n";
}
}
echo "IteratorIterator... ";
class IteratorIteratorTest extends IteratorIterator {
function __construct(){}
}
test( function() {
$o = new IteratorIteratorTest;
$o->rewind();
} );
echo "FilterIterator... ";
class FilterIteratorTest extends FilterIterator {
function __construct(){}
function accept(){}
}
test( function() {
$o = new FilterIteratorTest;
$o->rewind();
} );
echo "RecursiveFilterIterator... ";
class RecursiveFilterIteratorTest extends RecursiveFilterIterator {
function __construct(){}
function accept(){}
}
test( function() {
$o = new RecursiveFilterIteratorTest;
$o->hasChildren();
} );
echo "ParentIterator... ";
class ParentIteratorTest extends ParentIterator {
function __construct(){}
}
test ( function() {
$o = new ParentIteratorTest;
$o->accept();
} );
echo "LimitIterator... ";
class LimitIteratorTest extends LimitIterator {
function __construct(){}
}
test ( function() {
$o = new LimitIteratorTest;
$o->rewind();
} );
echo "CachingIterator... ";
class CachingIteratorTest extends CachingIterator {
function __construct(){}
}
test ( function() {
$o = new CachingIteratorTest;
$o->rewind();
} );
echo "RecursiveCachingIterator... ";
class RecursiveCachingIteratorTest extends RecursiveCachingIterator {
function __construct(){}
}
test ( function() {
$o = new RecursiveCachingIteratorTest;
$o->rewind();
} );
echo "NoRewindIterator... ";
class NoRewindIteratorTest extends NoRewindIterator {
function __construct(){}
}
test ( function() {
$o = new NoRewindIteratorTest;
$o->valid();
} );
echo "RegexIterator... ";
class RegexIteratorTest extends RegexIterator {
function __construct(){}
}
test ( function() {
$o = new RegexIteratorTest;
$o->rewind();
} );
echo "RecursiveRegexIterator... ";
class RecursiveRegexIteratorTest extends RecursiveRegexIterator {
function __construct(){}
}
test ( function() {
$o = new RecursiveRegexIteratorTest;
$o->hasChildren();
} );
echo "GlobIterator... ";
class GlobIteratorTest extends GlobIterator {
function __construct(){}
}
test ( function() {
$o = new GlobIteratorTest;
$o->count();
} );
echo "SplFileObject... ";
class SplFileObjectTest extends SplFileObject {
function __construct(){}
}
test ( function() {
$o = new SplFileObjectTest;
$o->rewind();
} );
echo "SplTempFileObject... ";
class SplTempFileObjectTest extends SplTempFileObject {
function __construct(){}
}
test ( function() {
$o = new SplTempFileObjectTest;
$o->rewind();
} );
echo "AppendIterator... ";
class AppendIteratorTest extends AppendIterator {
function __construct(){}
}
test ( function() {
$o = new AppendIteratorTest;
foreach ($o as $a) {
echo $a,"\n";
}
} );
echo "InfiniteIterator... ";
class InfiniteIteratorTest extends InfiniteIterator {
function __construct(){}
}
test ( function() {
$o = new InfiniteIteratorTest;
foreach ($o as $a) {
echo $a,"\n";
}
} );
--EXPECT--
IteratorIterator... exception (expected)
FilterIterator... exception (expected)
RecursiveFilterIterator... exception (expected)
ParentIterator... exception (expected)
LimitIterator... exception (expected)
CachingIterator... exception (expected)
RecursiveCachingIterator... exception (expected)
NoRewindIterator... exception (expected)
RegexIterator... exception (expected)
RecursiveRegexIterator... exception (expected)
GlobIterator... exception (expected)
SplFileObject... exception (expected)
SplTempFileObject... exception (expected)
AppendIterator... exception (expected)
InfiniteIterator... exception (expected)
|