helly Tue Mar 11 19:10:00 2003 EDT Added files: /php4/tests/classes interface_class.phpt interface_doubled.phpt interface_implemented.phpt interface_instantiate.phpt interface_member.phpt interface_method.phpt interface_method_final.phpt interface_method_private.phpt interface_must_be_implemented.phpt Log: Added some interface tests
Index: php4/tests/classes/interface_class.phpt +++ php4/tests/classes/interface_class.phpt --TEST-- A class can only implement interfaces --SKIPIF-- <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> --FILE-- <?php class base { } class derived implements base { } ?> --EXPECTF-- Fatal error: derived cannot implement base - it is not an interface in %s on line %d
Index: php4/tests/classes/interface_doubled.phpt +++ php4/tests/classes/interface_doubled.phpt --TEST-- An interface may both inherit and implement base interfaces --SKIPIF-- <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> --FILE-- <?php interface if_a { abstract function f_a(); } interface if_b { abstract function f_b(); } interface if_c implements if_a, if_b { abstract function f_c(); } interface if_d extends if_a implements if_b { abstract function f_d(); } interface if_e { abstract function f_d(); } interface if_f extends if_e implements if_a, if_b, if_c, if_d, if_e { } class base { function test($class) { echo "is_a(" . class_name($this) . ", $class) ". (is_a($this, $class) ? "yes\n" : "no\n"); } } echo "class_a\n"; class class_a extends base implements if_a { function f_a() {} function f_b() {} function f_c() {} function f_d() {} function f_e() {} } $t = new class_a(); echo $t->test('if_a'); echo $t->test('if_b'); echo $t->test('if_c'); echo $t->test('if_d'); echo $t->test('if_e'); echo "class_b\n"; class class_b extends base implements if_a, if_b { function f_a() {} function f_b() {} function f_c() {} function f_d() {} function f_e() {} } $t = new class_b(); echo $t->test('if_a'); echo $t->test('if_b'); echo $t->test('if_c'); echo $t->test('if_d'); echo $t->test('if_e'); echo "class_c\n"; class class_c extends base implements if_c { function f_a() {} function f_b() {} function f_c() {} function f_d() {} function f_e() {} } $t = new class_c(); echo $t->test('if_a'); echo $t->test('if_b'); echo $t->test('if_c'); echo $t->test('if_d'); echo $t->test('if_e'); echo "class_d\n"; class class_d extends base implements if_d{ function f_a() {} function f_b() {} function f_c() {} function f_d() {} function f_e() {} } $t = new class_d(); echo $t->test('if_a'); echo $t->test('if_b'); echo $t->test('if_c'); echo $t->test('if_d'); echo $t->test('if_e'); echo "class_e\n"; class class_e extends base implements if_a, if_b, if_c, if_d { function f_a() {} function f_b() {} function f_c() {} function f_d() {} function f_e() {} } $t = new class_e(); echo $t->test('if_a'); echo $t->test('if_b'); echo $t->test('if_c'); echo $t->test('if_d'); echo $t->test('if_e'); echo "class_f\n"; class class_f extends base implements if_e { function f_a() {} function f_b() {} function f_c() {} function f_d() {} function f_e() {} } $t = new class_f(); echo $t->test('if_a'); echo $t->test('if_b'); echo $t->test('if_c'); echo $t->test('if_d'); echo $t->test('if_e'); echo "class_g\n"; class class_g extends base implements if_f { function f_a() {} function f_b() {} function f_c() {} function f_d() {} function f_e() {} } $t = new class_g(); echo $t->test('if_a'); echo $t->test('if_b'); echo $t->test('if_c'); echo $t->test('if_d'); echo $t->test('if_e'); ?> --EXPECTF-- class_a is_a(class_a, if_a) yes is_a(class_a, if_b) no is_a(class_a, if_c) no is_a(class_a, if_d) no is_a(class_a, if_e) no class_b is_a(class_b, if_a) yes is_a(class_b, if_b) yes is_a(class_b, if_c) no is_a(class_b, if_d) no is_a(class_b, if_e) no class_c is_a(class_c, if_a) yes is_a(class_c, if_b) yes is_a(class_c, if_c) yes is_a(class_c, if_d) no is_a(class_c, if_e) no class_d is_a(class_d, if_a) yes is_a(class_d, if_b) yes is_a(class_d, if_c) no is_a(class_d, if_d) yes is_a(class_d, if_e) no class_e is_a(class_e, if_a) yes is_a(class_e, if_b) yes is_a(class_e, if_c) yes is_a(class_e, if_d) yes is_a(class_e, if_e) no class_f is_a(class_f, if_a) no is_a(class_f, if_b) no is_a(class_f, if_c) no is_a(class_f, if_d) no is_a(class_f, if_e) yes class_g is_a(class_g, if_a) yes is_a(class_g, if_b) yes is_a(class_g, if_c) yes is_a(class_g, if_d) yes is_a(class_g, if_e) yes Index: php4/tests/classes/interface_implemented.phpt +++ php4/tests/classes/interface_implemented.phpt --TEST-- An interface is inherited --SKIPIF-- <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> --FILE-- <?php interface if_a { abstract function f_a(); } interface if_b extends if_a { abstract function f_b(); } class base { function _is_a($sub) { echo 'is_a('.get_class($this).', '.$sub.') = '.(is_a($this, $sub) ? 'yes' : 'no')."\n"; } function test() { echo $this->_is_a('base'); echo $this->_is_a('derived_a'); echo $this->_is_a('derived_b'); echo $this->_is_a('derived_c'); echo $this->_is_a('derived_d'); echo $this->_is_a('if_a'); echo $this->_is_a('if_b'); echo "\n"; } } class derived_a extends base implements if_a { function f_a() {} } class derived_b extends base implements if_a, if_b { function f_a() {} function f_b() {} } class derived_c extends derived_a implements if_b { function f_b() {} } class derived_d extends derived_c { } $t = new base(); $t->test(); $t = new derived_a(); $t->test(); $t = new derived_b(); $t->test(); $t = new derived_c(); $t->test(); $t = new derived_d(); $t->test(); ?> --EXPECTF-- is_a(base, base) = yes is_a(base, derived_a) = no is_a(base, derived_b) = no is_a(base, derived_c) = no is_a(base, derived_d) = no is_a(base, if_a) = no is_a(base, if_b) = no is_a(derived_a, base) = yes is_a(derived_a, derived_a) = yes is_a(derived_a, derived_b) = no is_a(derived_a, derived_c) = no is_a(derived_a, derived_d) = no is_a(derived_a, if_a) = yes is_a(derived_a, if_b) = no is_a(derived_b, base) = yes is_a(derived_b, derived_a) = no is_a(derived_b, derived_b) = yes is_a(derived_b, derived_c) = no is_a(derived_b, derived_d) = no is_a(derived_b, if_a) = yes is_a(derived_b, if_b) = yes is_a(derived_c, base) = yes is_a(derived_c, derived_a) = yes is_a(derived_c, derived_b) = no is_a(derived_c, derived_c) = yes is_a(derived_c, derived_d) = no is_a(derived_c, if_a) = yes is_a(derived_c, if_b) = yes is_a(derived_d, base) = yes is_a(derived_d, derived_a) = yes is_a(derived_d, derived_b) = no is_a(derived_d, derived_c) = yes is_a(derived_d, derived_d) = yes is_a(derived_d, if_a) = yes is_a(derived_d, if_b) = yes Index: php4/tests/classes/interface_instantiate.phpt +++ php4/tests/classes/interface_instantiate.phpt --TEST-- An interface cannot be instantiated --SKIPIF-- <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> --FILE-- <?php interface if_a { abstract function f_a(); } $t = new if_a(); ?> --EXPECTF-- Fatal error: Cannot instantiate interface if_a in %s on line %d Index: php4/tests/classes/interface_member.phpt +++ php4/tests/classes/interface_member.phpt --TEST-- An interface cannot have properties --SKIPIF-- <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> --FILE-- <?php interface if_a { var $member; } ?> --EXPECTF-- Fatal error: Interfaces may not include member variables in %s on line %d Index: php4/tests/classes/interface_method.phpt +++ php4/tests/classes/interface_method.phpt --TEST-- An interface method must be abstract --SKIPIF-- <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> --FILE-- <?php interface if_a { function err() {}; } ?> --EXPECTF-- Fatal error: Interface function if_a::err() cannot contain body %s on line %d Index: php4/tests/classes/interface_method_final.phpt +++ php4/tests/classes/interface_method_final.phpt --TEST-- An interface method cannot be final --SKIPIF-- <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> --FILE-- <?php class if_a { abstract final function err(); } ?> --EXPECTF-- Fatal error: Cannot use the final modifier on an abstract class member in %s on line %d Index: php4/tests/classes/interface_method_private.phpt +++ php4/tests/classes/interface_method_private.phpt --TEST-- An interface method cannot be private --SKIPIF-- <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> --FILE-- <?php interface if_a { abstract private function err(); } ?> --EXPECTF-- Fatal error: Access type for interface method if_a::err() must be omitted or declared public in %s on line %d Index: php4/tests/classes/interface_must_be_implemented.phpt +++ php4/tests/classes/interface_must_be_implemented.phpt --TEST-- An interface must be implemented --SKIPIF-- <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?> --FILE-- <?php interface if_a { abstract function f_a(); } class derived_a implements if_a { } ?> --EXPECTF-- Fatal error: Class derived_a contains abstract methods and must be declared abstract in %s on line %d
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php