presenter = new ClosurePresenter();
        $this->manager   = new PresenterManager();
        $this->manager->addPresenter(new ScalarPresenter());
        $this->manager->addPresenter(new ObjectPresenter());
        $this->manager->addPresenter($this->presenter);
    }
    /**
     * @dataProvider presentData
     */
    public function testPresent($closure, $expect)
    {
        $this->assertEquals($expect, $this->presenter->present($closure));
    }
    /**
     * @dataProvider presentData
     */
    public function testPresentRef($closure, $expect)
    {
        $this->assertEquals($expect, $this->presenter->presentRef($closure));
    }
    public function presentData()
    {
        $null = null;
        $eol  = version_compare(PHP_VERSION, '5.4.3', '>=') ? 'PHP_EOL' : '"\n"';
        return array(
            array(
                function () {
                },
                'function () { ... }',
            ),
            array(
                function ($foo) {
                },
                'function ($foo) { ... }',
            ),
            array(
                function ($foo, $bar = null) {
                },
                'function ($foo, $bar = null) { ... }',
            ),
            array(
                function ($foo = "bar") {
                },
                'function ($foo = "bar") { ... }',
            ),
            array(
                function ($foo = \PHP_EOL) {
                },
                'function ($foo = ' . $eol . ') { ... }',
            ),
            array(
                function ($foo) use ($eol, $null) {
                },
                'function ($foo) use ($eol, $null) { ... }',
            ),
        );
    }
}