52 lines
1.2 KiB
PHP
52 lines
1.2 KiB
PHP
<?php
|
|
|
|
require "tests.php";
|
|
|
|
// No new functions
|
|
check::functions(array());
|
|
check::classes(array('Bar', 'Foo_integers'));
|
|
// No new vars
|
|
check::globals(array());
|
|
|
|
// Test base class functionality
|
|
$barObj = new Bar();
|
|
|
|
// Bar::meth should return a Foo_integers instance
|
|
$fooIntsObj = $barObj->meth();
|
|
check::equal(get_class($fooIntsObj), "Foo_integers", "wrong class");
|
|
|
|
check::equal($fooIntsObj->meth(42) , 42, "Foo_integers::meth(n) should return n");
|
|
|
|
//
|
|
// Now subclass Foo_integers, but override its virtual method
|
|
// meth(n) so that it returns the number plus one.
|
|
//
|
|
class MyFooInts extends Foo_integers {
|
|
function meth($n) {
|
|
return $n + 1;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Subclass Bar and override its virtual method meth()
|
|
// so that it returns a new MyFooInts instance instead of
|
|
// a Foo_integers instance.
|
|
//
|
|
class MyBar extends Bar {
|
|
function meth() {
|
|
return new MyFooInts();
|
|
}
|
|
}
|
|
|
|
//
|
|
// Now repeat previous tests:
|
|
//
|
|
// Create a MyBar instance...
|
|
//
|
|
$barObj = new MyBar();
|
|
|
|
// MyBar::meth should return a MyFooInts instance
|
|
$fooIntsObj = $barObj->meth();
|
|
check::equal(get_class($fooIntsObj), "MyFooInts", "wrong class");
|
|
|
|
check::equal($fooIntsObj->meth(42) , 43, "MyFooInts::meth(n) should return n + 1");
|