/**
     * @covers \DCarbone\PHPClassBuilder\Template\Structure\FunctionTemplate::compile
     * @covers \DCarbone\PHPClassBuilder\Template\Structure\FunctionTemplate::parseCompileOpts
     * @covers \DCarbone\PHPClassBuilder\Template\Structure\FunctionTemplate::_compileAsClassMethod
     * @covers \DCarbone\PHPClassBuilder\Template\Structure\FunctionTemplate::_buildDocBloc
     * @covers \DCarbone\PHPClassBuilder\Template\Structure\FunctionTemplate::_buildParameters
     * @covers \DCarbone\PHPClassBuilder\Template\Structure\FunctionTemplate::_buildBody
     * @covers \DCarbone\PHPClassBuilder\Template\Structure\FunctionTemplate::_compileBody
     * @covers \DCarbone\PHPClassBuilder\Template\Structure\FunctionTemplate::_buildReturnStatement
     * @depends testCanCompileAsClassMethod
     */
    public function testCanCompileAsAbstractClassMethod()
    {
        $funcName = self::generateTestFunctionName();
        $func = new FunctionTemplate($funcName);
        $func->addBodyPart('echo \'woot!\';');
        $func->setAbstract(true);
        $output = $func->compile(array(CompileOpt::COMPILE_TYPE => FunctionTemplate::COMPILETYPE_CLASSMETHOD));
        $this->assertEquals(<<<PHP
abstract public function {$funcName}();


PHP
, $output);
    }