getMethods() as $method) { if (preg_match_all('/@expect (.+) when input (.+)( after (.+))?/', $method->getDocComment(), $matched)) { echo <<name} */ public function testOn_{$method->name}() { \$method = new ReflectionMethod('$classname', '{$method->name}'); VAR ; if ($method->isPrivate() || $method->isProtected()) { echo " \$method->setAccessible(true);\n"; } foreach ($matched[1] as $idx => $expect) { if ($matched[3][$idx]) { echo " {$matched[3][$idx]}\n"; } echo " \$this->assertEquals($expect, \$method->invoke(null,\n {$matched[2][$idx]}\n ));\n"; } echo " }\n"; } } echo "}\n?>"; $fn = "tests/{$classname}Test.php"; if (!file_put_contents($fn, ob_get_clean())) { die("Can not generate tests into file $fn !!\n"); } } ?>