From 4f201f7372842f99d3ab6c18bfaa363062010128 Mon Sep 17 00:00:00 2001 From: Oliver Klee Date: Mon, 29 Apr 2019 13:21:06 +0200 Subject: [PATCH] Add tests for TestSuiteIterator --- .../unit/Framework/TestSuiteIteratorTest.php | 213 ++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 tests/unit/Framework/TestSuiteIteratorTest.php diff --git a/tests/unit/Framework/TestSuiteIteratorTest.php b/tests/unit/Framework/TestSuiteIteratorTest.php new file mode 100644 index 00000000000..e97db00dc66 --- /dev/null +++ b/tests/unit/Framework/TestSuiteIteratorTest.php @@ -0,0 +1,213 @@ + + * + * 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()); + } +}