add new tests

This commit is contained in:
Antony Dovgal 2007-02-02 12:53:54 +00:00
parent 92bf7d9872
commit 535e38a473
43 changed files with 603 additions and 0 deletions

View File

@ -0,0 +1,16 @@
--TEST--
errmsg: Non-abstract method must contain body
--FILE--
<?php
abstract class test {
}
class Impl extends Test {
function Foo();
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Non-abstract method Impl::Foo() must contain body in %s on line %d

View File

@ -0,0 +1,14 @@
--TEST--
errmsg: function cannot be declared private
--FILE--
<?php
abstract class test {
abstract private function foo() {
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Abstract function test::foo() cannot be declared private in %s on line %d

View File

@ -0,0 +1,19 @@
--TEST--
errmsg: cannot reassign $this (by ref)
--FILE--
<?php
class test {
function foo() {
$a = new test;
$this = &$a;
}
}
$t = new test;
$t->foo();
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot re-assign $this in %s on line %d

View File

@ -0,0 +1,15 @@
--TEST--
errmsg: can't use function return value in write context
--FILE--
<?php
function foo() {
return "blah";
}
foo() = 1;
echo "Done\n";
?>
--EXPECTF--
Fatal error: Can't use function return value in write context in %s on line %d

View File

@ -0,0 +1,18 @@
--TEST--
errmsg: can't use method return value in write context
--FILE--
<?php
class test {
function foo() {
return "blah";
}
}
$t = new test;
$t->foo() = 1;
echo "Done\n";
?>
--EXPECTF--
Fatal error: Can't use method return value in write context in %s on line %d

View File

@ -0,0 +1,12 @@
--TEST--
errmsg: can't use [] for reading
--FILE--
<?php
$a = array();
$b = $a[];
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot use [] for reading in %s on line %d

View File

@ -0,0 +1,12 @@
--TEST--
errmsg: can't use [] for reading - 2
--FILE--
<?php
$a = array();
isset($a[]);
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot use [] for reading in %s on line %d

View File

@ -0,0 +1,12 @@
--TEST--
errmsg: can't use [] for unsetting
--FILE--
<?php
$a = array();
unset($a[]);
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot use [] for unsetting in %s on line %d

View File

@ -0,0 +1,13 @@
--TEST--
errmsg: multiple access type modifiers are not allowed (properties)
--FILE--
<?php
class test {
public private $var;
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Multiple access type modifiers are not allowed in %s on line %d

View File

@ -0,0 +1,13 @@
--TEST--
errmsg: multiple access type modifiers are not allowed (methods)
--FILE--
<?php
class test {
private protected function foo() {}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Multiple access type modifiers are not allowed in %s on line %d

View File

@ -0,0 +1,16 @@
--TEST--
errmsg: cannot redeclare (method)
--FILE--
<?php
class test {
function foo() {}
function foo() {}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot redeclare test::foo() in %s on line %d

View File

@ -0,0 +1,11 @@
--TEST--
errmsg: __autoload() must take exactly 1 argument
--FILE--
<?php
function __autoload($a, $b) {}
echo "Done\n";
?>
--EXPECTF--
Fatal error: __autoload() must take exactly 1 argument in %s on line %d

View File

@ -0,0 +1,14 @@
--TEST--
errmsg: default value for parameters with array type hint can only be an array or NULL
--FILE--
<?php
class test {
function foo(array $a = "s") {
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Default value for parameters with array type hint can only be an array or NULL in %s on line %d

View File

@ -0,0 +1,17 @@
--TEST--
errmsg: cannot call __clone() method on objects
--FILE--
<?php
class test {
function __clone() {
}
}
$t = new test;
$t->__clone();
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot call __clone() method on objects - use 'clone $obj' instead in %s on line %d

View File

@ -0,0 +1,14 @@
--TEST--
errmsg: __clone() cannot accept any arguments
--FILE--
<?php
class test {
function __clone($var) {
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Method test::__clone() cannot accept any arguments in %s on line %d

View File

@ -0,0 +1,14 @@
--TEST--
errmsg: __isset() must take exactly 1 argument
--FILE--
<?php
class test {
function __isset() {
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Method test::__isset() must take exactly 1 argument in %s on line %d

View File

@ -0,0 +1,14 @@
--TEST--
errmsg: __unset() must take exactly 1 argument
--FILE--
<?php
class test {
function __unset() {
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Method test::__unset() must take exactly 1 argument in %s on line %d

View File

@ -0,0 +1,13 @@
--TEST--
errmsg: static abstract function
--FILE--
<?php
class test {
static abstract function foo ();
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Static function test::foo() cannot be abstract in %s on line %d

View File

@ -0,0 +1,14 @@
--TEST--
errmsg: __destruct() cannot take arguments
--FILE--
<?php
class test {
function __destruct($var) {
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Destructor test::__destruct() cannot take arguments in %s on line %d

View File

@ -0,0 +1,14 @@
--TEST--
errmsg: disabled function
--INI--
disable_functions=phpinfo
--FILE--
<?php
phpinfo();
echo "Done\n";
?>
--EXPECTF--
Warning: phpinfo() has been disabled for security reasons in %s on line %d
Done

View File

@ -0,0 +1,16 @@
--TEST--
errmsg: disabled class
--INI--
disable_classes=stdclass
--FILE--
<?php
class test extends stdclass {
}
$t = new test;
echo "Done\n";
?>
--EXPECTF--
Fatal error: Class 'stdclass' not found in %s on line %d

View File

@ -0,0 +1,14 @@
--TEST--
errmsg: only variables can be passed by reference
--FILE--
<?php
function foo (&$var) {
}
foo(1);
echo "Done\n";
?>
--EXPECTF--
Fatal error: Only variables can be passed by reference in %s on line %d

View File

@ -0,0 +1,17 @@
--TEST--
errmsg: access level must be the same or weaker
--FILE--
<?php
class test1 {
protected $var;
}
class test extends test1 {
private $var;
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Access level to test::$var must be protected (as in class test1) or weaker in %s on line %d

View File

@ -0,0 +1,17 @@
--TEST--
errmsg: cannot change initial value of property
--FILE--
<?php
class test1 {
static protected $var = 1;
}
class test extends test1 {
static $var = 10;
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot change initial value of property static protected test1::$var in class test in %s on line %d

View File

@ -0,0 +1,20 @@
--TEST--
errmsg: cannot inherit previously inherited constant
--FILE--
<?php
interface test1 {
const FOO = 10;
}
interface test2 {
const FOO = 10;
}
class test implements test1, test2 {
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot inherit previously-inherited constant FOO from interface test2 in %s on line %d

View File

@ -0,0 +1,12 @@
--TEST--
errmsg: cannot redeclare class
--FILE--
<?php
class stdclass {
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot redeclare class stdclass in %s on line %d

View File

@ -0,0 +1,16 @@
--TEST--
errmsg: class declarations may not be nested
--FILE--
<?php
class test {
function foo() {
class test2 {
}
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Class declarations may not be nested in %s on line %d

View File

@ -0,0 +1,12 @@
--TEST--
errmsg: cannot use 'self' as class name
--FILE--
<?php
class self {
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot use 'self' as class name as it is reserved in %s on line %d

View File

@ -0,0 +1,12 @@
--TEST--
errmsg: cannot use 'parent' as class name
--FILE--
<?php
class parent {
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot use 'parent' as class name as it is reserved in %s on line %d

View File

@ -0,0 +1,12 @@
--TEST--
errmsg: cannot use 'self' as parent class name
--FILE--
<?php
class test extends self {
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot use 'self' as class name as it is reserved in %s on line %d

View File

@ -0,0 +1,12 @@
--TEST--
errmsg: cannot use 'parent' as parent class name
--FILE--
<?php
class test extends parent {
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot use 'parent' as class name as it is reserved in %s on line %d

View File

@ -0,0 +1,15 @@
--TEST--
errmsg: __construct() cannot be static
--FILE--
<?php
class test {
static function __construct() {
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Constructor test::__construct() cannot be static in %s on line %d

View File

@ -0,0 +1,15 @@
--TEST--
errmsg: __destruct() cannot be static
--FILE--
<?php
class test {
static function __destruct() {
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Destructor test::__destruct() cannot be static in %s on line %d

View File

@ -0,0 +1,15 @@
--TEST--
errmsg: __clone() cannot be static
--FILE--
<?php
class test {
static function __clone() {
}
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Clone method test::__clone() cannot be static in %s on line %d

View File

@ -0,0 +1,12 @@
--TEST--
errmsg: cannot use 'self' as interface name
--FILE--
<?php
class test implements self {
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot use 'self' as interface name as it is reserved in %s on line %d

View File

@ -0,0 +1,12 @@
--TEST--
errmsg: cannot use 'parent' as interface name
--FILE--
<?php
class test implements parent {
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot use 'parent' as interface name as it is reserved in %s on line %d

View File

@ -0,0 +1,13 @@
--TEST--
errmsg: properties cannot be abstract
--FILE--
<?php
class test {
abstract $var = 1;
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Properties cannot be declared abstract in %s on line %d

View File

@ -0,0 +1,13 @@
--TEST--
errmsg: properties cannot be final
--FILE--
<?php
class test {
final $var = 1;
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot declare property test::$var final, the final modifier is allowed only for methods in %s on line %d

View File

@ -0,0 +1,14 @@
--TEST--
errmsg: cannot redeclare property
--FILE--
<?php
class test {
var $var;
var $var;
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot redeclare test::$var in %s on line %d

View File

@ -0,0 +1,13 @@
--TEST--
errmsg: arrays are not allowed in class constants
--FILE--
<?php
class test {
const TEST = array(1,2,3);
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Arrays are not allowed in class constants in %s on line %d

View File

@ -0,0 +1,11 @@
--TEST--
errmsg: instanceof expects an object instance, constant given
--FILE--
<?php
var_dump("abc" instanceof stdclass);
echo "Done\n";
?>
--EXPECTF--
Fatal error: instanceof expects an object instance, constant given in %s on line %d

View File

@ -0,0 +1,13 @@
--TEST--
errmsg: key element cannot be a reference
--FILE--
<?php
$a = array(1,2,3);
foreach ($a as &$k=>$v) {
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Key element cannot be a reference in %s on line %d

View File

@ -0,0 +1,12 @@
--TEST--
errmsg: cannot create references to temp array
--FILE--
<?php
foreach (array(1,2,3) as $k=>&$v) {
}
echo "Done\n";
?>
--EXPECTF--
Fatal error: Cannot create references to elements of a temporary array expression in %s on line %d