1<?php
2/*
3 * This file is part of PHPUnit.
4 *
5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
6 *
7 * For the full copyright and license information, please view the LICENSE
8 * file that was distributed with this source code.
9 */
10
11class Util_TestDox_NamePrettifierTest extends PHPUnit_Framework_TestCase
12{
13    protected $namePrettifier;
14
15    protected function setUp()
16    {
17        $this->namePrettifier = new PHPUnit_Util_TestDox_NamePrettifier;
18    }
19
20    public function testTitleHasSensibleDefaults()
21    {
22        $this->assertEquals('Foo', $this->namePrettifier->prettifyTestClass('FooTest'));
23        $this->assertEquals('Foo', $this->namePrettifier->prettifyTestClass('TestFoo'));
24        $this->assertEquals('Foo', $this->namePrettifier->prettifyTestClass('TestFooTest'));
25        $this->assertEquals('Foo', $this->namePrettifier->prettifyTestClass('Test\FooTest'));
26    }
27
28    public function testCaterForUserDefinedSuffix()
29    {
30        $this->namePrettifier->setSuffix('TestCase');
31        $this->namePrettifier->setPrefix(null);
32
33        $this->assertEquals('Foo', $this->namePrettifier->prettifyTestClass('FooTestCase'));
34        $this->assertEquals('TestFoo', $this->namePrettifier->prettifyTestClass('TestFoo'));
35        $this->assertEquals('FooTest', $this->namePrettifier->prettifyTestClass('FooTest'));
36    }
37
38    public function testCaterForUserDefinedPrefix()
39    {
40        $this->namePrettifier->setSuffix(null);
41        $this->namePrettifier->setPrefix('XXX');
42
43        $this->assertEquals('Foo', $this->namePrettifier->prettifyTestClass('XXXFoo'));
44        $this->assertEquals('TestXXX', $this->namePrettifier->prettifyTestClass('TestXXX'));
45        $this->assertEquals('XXX', $this->namePrettifier->prettifyTestClass('XXXXXX'));
46    }
47
48    public function testTestNameIsConvertedToASentence()
49    {
50        $this->assertEquals('This is a test', $this->namePrettifier->prettifyTestMethod('testThisIsATest'));
51        $this->assertEquals('This is a test', $this->namePrettifier->prettifyTestMethod('testThisIsATest2'));
52        $this->assertEquals('This is a test', $this->namePrettifier->prettifyTestMethod('this_is_a_test'));
53        $this->assertEquals('Foo for bar is 0', $this->namePrettifier->prettifyTestMethod('testFooForBarIs0'));
54        $this->assertEquals('Foo for baz is 1', $this->namePrettifier->prettifyTestMethod('testFooForBazIs1'));
55        $this->assertEquals('', $this->namePrettifier->prettifyTestMethod('test'));
56    }
57
58    /**
59     * @ticket 224
60     */
61    public function testTestNameIsNotGroupedWhenNotInSequence()
62    {
63        $this->assertEquals('Sets redirect header on 301', $this->namePrettifier->prettifyTestMethod('testSetsRedirectHeaderOn301'));
64        $this->assertEquals('Sets redirect header on 302', $this->namePrettifier->prettifyTestMethod('testSetsRedirectHeaderOn302'));
65    }
66}
67