php-src/ext/reflection/tests/ReflectionClass_isIterateable_001.phpt
Peter Kokot b746e69887 Sync leading and final newlines in *.phpt sections
This patch adds missing newlines, trims multiple redundant final
newlines into a single one, and trims redundant leading newlines in all
*.phpt sections.

According to POSIX, a line is a sequence of zero or more non-' <newline>'
characters plus a terminating '<newline>' character. [1] Files should
normally have at least one final newline character.

C89 [2] and later standards [3] mention a final newline:
"A source file that is not empty shall end in a new-line character,
which shall not be immediately preceded by a backslash character."

Although it is not mandatory for all files to have a final newline
fixed, a more consistent and homogeneous approach brings less of commit
differences issues and a better development experience in certain text
editors and IDEs.

[1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206
[2] https://port70.net/~nsz/c/c89/c89-draft.html#2.1.1.2
[3] https://port70.net/~nsz/c/c99/n1256.html#5.1.1.2
2018-10-15 04:32:30 +02:00

93 lines
2.7 KiB
PHP

--TEST--
ReflectionClass::isIterateable()
--CREDITS--
Robin Fernandes <robinf@php.net>
Steve Seear <stevseea@php.net>
--FILE--
<?php
Interface ExtendsIterator extends Iterator {
}
Interface ExtendsIteratorAggregate extends IteratorAggregate {
}
Class IteratorImpl implements Iterator {
public function next() {}
public function key() {}
public function rewind() {}
public function current() {}
public function valid() {}
}
Class IterarorAggregateImpl implements IteratorAggregate {
public function getIterator() {}
}
Class ExtendsIteratorImpl extends IteratorImpl {
}
Class ExtendsIteratorAggregateImpl extends IterarorAggregateImpl {
}
Class A {
}
$classes = array('Traversable', 'Iterator', 'IteratorAggregate', 'ExtendsIterator', 'ExtendsIteratorAggregate',
'IteratorImpl', 'IterarorAggregateImpl', 'ExtendsIteratorImpl', 'ExtendsIteratorAggregateImpl', 'A');
foreach($classes as $class) {
$rc = new ReflectionClass($class);
echo "Is $class iterable? ";
var_dump($rc->isIterateable());
}
echo "\nTest invalid params:\n";
$rc = new ReflectionClass('IteratorImpl');
var_dump($rc->isIterateable(null));
var_dump($rc->isIterateable(null, null));
var_dump($rc->isIterateable(1));
var_dump($rc->isIterateable(1.5));
var_dump($rc->isIterateable(true));
var_dump($rc->isIterateable('X'));
var_dump($rc->isIterateable(null));
echo "\nTest static invocation:\n";
ReflectionClass::isIterateable();
?>
--EXPECTF--
Is Traversable iterable? bool(false)
Is Iterator iterable? bool(false)
Is IteratorAggregate iterable? bool(false)
Is ExtendsIterator iterable? bool(false)
Is ExtendsIteratorAggregate iterable? bool(false)
Is IteratorImpl iterable? bool(true)
Is IterarorAggregateImpl iterable? bool(true)
Is ExtendsIteratorImpl iterable? bool(true)
Is ExtendsIteratorAggregateImpl iterable? bool(true)
Is A iterable? bool(false)
Test invalid params:
Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 1 given in %s on line 34
NULL
Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 2 given in %s on line 35
NULL
Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 1 given in %s on line 36
NULL
Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 1 given in %s on line 37
NULL
Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 1 given in %s on line 38
NULL
Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 1 given in %s on line 39
NULL
Warning: ReflectionClass::isIterateable() expects exactly 0 parameters, 1 given in %s on line 40
NULL
Test static invocation:
Fatal error: Uncaught Error: Non-static method ReflectionClass::isIterateable() cannot be called statically in %s:43
Stack trace:
#0 {main}
thrown in %s on line 43