Skip to content

Commit

Permalink
Add tests for TestSuiteIterator
Browse files Browse the repository at this point in the history
  • Loading branch information
oliverklee authored and sebastianbergmann committed Sep 7, 2019
1 parent c0f5ff2 commit 4f201f7
Showing 1 changed file with 213 additions and 0 deletions.
213 changes: 213 additions & 0 deletions tests/unit/Framework/TestSuiteIteratorTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
<?php declare(strict_types=1);
/*
* This file is part of PHPUnit.
*
* (c) Sebastian Bergmann <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace PHPUnit\Framework;

/**
* @small
*/
final class TestSuiteIteratorTest extends TestCase
{
/*
* tests for the initial state with empty test suite
*/

public function testKeyForEmptyTestSuiteInitiallyReturnsZero(): void
{
$this->markTestSkipped('This test needs a bug fix to pass.');

$testSuite = new TestSuite();
$subject = new TestSuiteIterator($testSuite);

$this->assertSame(0, $subject->key());
}

public function testValidForEmptyTestSuiteInitiallyReturnsFalse(): void
{
$testSuite = new TestSuite();
$subject = new TestSuiteIterator($testSuite);

$this->assertFalse($subject->valid());
}

public function testCurrentForEmptyTestSuiteInitiallyReturnsNull(): void
{
$this->markTestSkipped('This test needs a bug fix to pass.');

$testSuite = new TestSuite();
$subject = new TestSuiteIterator($testSuite);

$this->assertNull($subject->current());
}

/*
* tests for the initial state with non-empty test suite
*/

public function testKeyForNonEmptyTestSuiteInitiallyReturnsZero(): void
{
$this->markTestSkipped('This test needs a bug fix to pass.');

$testSuite = new TestSuite();
$testSuite->addTest(new \EmptyTestCaseTest());
$subject = new TestSuiteIterator($testSuite);

$this->assertSame(0, $subject->key());
}

public function testValidForNonEmptyTestSuiteInitiallyReturnsTrue(): void
{
$testSuite = new TestSuite();
$testSuite->addTest(new \EmptyTestCaseTest());
$subject = new TestSuiteIterator($testSuite);

$this->assertTrue($subject->valid());
}

public function testCurrentForNonEmptyTestSuiteInitiallyReturnsFirstTest(): void
{
$this->markTestSkipped('This test needs a bug fix to pass.');

$test = new \EmptyTestCaseTest();
$testSuite = new TestSuite();
$testSuite->addTest($test);
$subject = new TestSuiteIterator($testSuite);

$this->assertSame($test, $subject->current());
}

/*
* tests for rewind
*/

public function testRewindResetsKeyToZero(): void
{
$testSuite = new TestSuite();
$testSuite->addTest(new \EmptyTestCaseTest());
$subject = new TestSuiteIterator($testSuite);
$subject->next();

$subject->rewind();

$this->assertSame(0, $subject->key());
}

public function testRewindResetsCurrentToFirstElement(): void
{
$testSuite = new TestSuite();
$test = new \EmptyTestCaseTest();
$testSuite->addTest($test);
$subject = new TestSuiteIterator($testSuite);
$subject->next();

$subject->rewind();

$this->assertSame($test, $subject->current());
}

/*
* tests for next
*/

public function testNextIncreasesKeyFromZeroToOne(): void
{
$testSuite = new TestSuite();
$testSuite->addTest(new \EmptyTestCaseTest());
$subject = new TestSuiteIterator($testSuite);
$subject->rewind();

$subject->next();

$this->assertSame(1, $subject->key());
}

public function testCurrentAfterLastElementReturnsNull(): void
{
$this->markTestSkipped('This test needs a bug fix to pass.');

$testSuite = new TestSuite();
$testSuite->addTest(new \EmptyTestCaseTest());
$subject = new TestSuiteIterator($testSuite);
$subject->rewind();

$subject->next();

$this->assertNull($subject->current());
}

public function testValidAfterLastElementReturnsFalse(): void
{
$testSuite = new TestSuite();
$testSuite->addTest(new \EmptyTestCaseTest());
$subject = new TestSuiteIterator($testSuite);
$subject->rewind();

$subject->next();

$this->assertFalse($subject->valid());
}

/*
* tests for getChildren
*/

public function testGetChildrenReturnsNewInstanceWithCurrentTestSuite(): void
{
$this->markTestSkipped('This test needs a bug fix to pass.');

$testSuite = new TestSuite();
$childSuite = new TestSuite();
$testSuite->addTest($childSuite);
$subject = new TestSuiteIterator($testSuite);
$subject->rewind();

$children = $subject->getChildren();
$children->rewind();

$this->assertNotSame($subject, $children);
$this->assertSame($childSuite, $children->current());
}

/*
* tests for hasChildren
*/

public function testHasChildrenForCurrentTestSuiteReturnsTrue(): void
{
$testSuite = new TestSuite();
$childSuite = new TestSuite();
$testSuite->addTest($childSuite);
$subject = new TestSuiteIterator($testSuite);
$subject->rewind();

$this->assertTrue($subject->hasChildren());
}

public function testHasChildrenForCurrentTestSuiteReturnsFalse(): void
{
$testSuite = new TestSuite();
$test = new \EmptyTestCaseTest();
$testSuite->addTest($test);
$subject = new TestSuiteIterator($testSuite);
$subject->rewind();

$this->assertFalse($subject->hasChildren());
}

public function testHasChildrenForNoTestsReturnsFalse(): void
{
$this->markTestSkipped('This test needs a bug fix to pass.');

$testSuite = new TestSuite();
$subject = new TestSuiteIterator($testSuite);
$subject->rewind();

$this->assertFalse($subject->hasChildren());
}
}

0 comments on commit 4f201f7

Please sign in to comment.