$example = new DocTestExample('1 + 1', '2'); * php> $runner = new DocTestRunner(array($example)); * * 또는, 생성자에 아무 것도 넘기지 않고 나중에 addExample 메소드를 사용하여 추가할 수도 있습니다. * php> $runner = new DocTestRunner; * php> $runner->addExample($example); * * 테스트가 성공하면 DocTestResult 객체를 돌려줍니다. * php> $result = $runner->run(); * php> $result->passed() * TRUE * * 테스트가 실패했을 경우에는 DocTestFailureResult 객체를 돌려줍니다. * php> $runner->addExample(new DocTestExample('1 + 1', '3')); * php> $result = $runner->run(); * php> $result->passed() * FALSE * php> $result->example->source * '1 + 1' * php> $result->result * 2 */ class DocTestRunner { function DocTestRunner($examples = array()) { $this->examples = $examples; } function addExample($example) { $this->examples[] = $example; } function run() { foreach ($this->examples as $__example) { if ($__example->expectsSomething()) { eval("\$__result = $__example->source;"); eval("\$__expect = $__example->expect;"); if ($__result !== $__expect) return new DocTestFailureResult($__example, $__result); } else { eval($__example->source); } } return new DocTestResult; } }