class Stack_Tester extends TestCase {
Создадим столько объектов стека, сколько есть контрольных примеров. Мы планируем протестировать методы класса Stack:
var $stack1; var $stack2;
var $stack3; var $stack4;
Вот метод конструктора для этого класса. Вызываем конструктор родительского класса с тем же аргументом, что и у этого конструктора:
function Stack Tester($method) $this->TestCase($method);
I
Это метод инициализации, который в итоге вызовет родительский класс. В нем мы создаем экземпляры всех объявленных ранее объектов:
function setUpQ
i
$this->stack1 = newStack(); $this->stack2 = new Stack(); $this->stack3 = new Stack(); $this->stack4 = new Stack();
>
Вот метод для тестирования метода push() в классе Stack. Мы вызываем метод push(), а затем сразу сравниваем помещенное на стек значение с результатом метода peek. Сравнение выполняется с помощью метода assertEquals(), унаследованного от родительского класса. Этот метод сравнивает значения первых своих двух аргументов и выводит в качестве сообщения об ошибке третий аргумент:
function testPushQ {
$this->stackt->push(27); v.
$this->assertEquals(27, $this->stackl->peek(), "push() method failed test");
Контрольный пример для метода pop() аналогичен. Помещаем на стек значение 108, а затем выполняем операцию pop над стеком. Результат операции pop сравнивается с числом 108 посредством метода assertEquals():
function testPop() { "
$this->stack2->push(108); $ret = $this->stack2->pop();
$this->assertEquals(l08, $ret, "pop() method failed");
}
Контрольный пример для метода Помещаем на стек число запо
минаем значение, возвращенное операцией peek, и выполняем еще одну операцию peek. Сравниваем значения, возвращенные двумя операциями peek, между собой и значение, возвращенное последней операцией peek, с 1921, используя метод assert(), унаследованный от родительского класса TestCase. Метод assert() указывает на сбой, если значение переданного ему в качестве аргумента выражения отлично от true:
function testPeek() {
$this->stack3->push(192l);
$ret = $this->stack3->peek();
$ret2 = $this->stack3->peek();
$this->assert( $ret == $ret2 && $ret2 == 1921 );
I
Теперь мы применяем к стеку push, а затем выталкиваем то же значение с помощью pop. Поскольку с объектом stack4 не проводились другие операции, вызов метода isEmpty() должен возвращать 1. Так ли это, мы проверим с помощью метода asse rt ():