📄 visual_test.php.svn-base
字号:
function testPatterns() { $this->assertPattern('/hello/', "Hello there", "%s -> Fail"); // Fail. $this->assertNoPattern('/hello/i', "Hello there", "%s -> Fail"); // Fail. } function testLongStrings() { $text = ""; for ($i = 0; $i < 10; $i++) { $text .= "0123456789"; } $this->assertEqual($text . $text, $text . "a" . $text); // Fail. } } class Dummy { function Dummy() { } function a() { } } Mock::generate('Dummy'); class TestOfMockObjectsOutput extends UnitTestCase { function testCallCounts() { $dummy = &new MockDummy(); $dummy->expectCallCount('a', 1, 'My message: %s'); $dummy->a(); $dummy->a(); } function testMinimumCallCounts() { $dummy = &new MockDummy(); $dummy->expectMinimumCallCount('a', 2, 'My message: %s'); $dummy->a(); $dummy->a(); } function testEmptyMatching() { $dummy = &new MockDummy(); $dummy->expectArguments('a', array()); $dummy->a(); $dummy->a(null); // Fail. } function testEmptyMatchingWithCustomMessage() { $dummy = &new MockDummy(); $dummy->expectArguments('a', array(), 'My expectation message: %s'); $dummy->a(); $dummy->a(null); // Fail. } function testNullMatching() { $dummy = &new MockDummy(); $dummy->expectArguments('a', array(null)); $dummy->a(null); $dummy->a(); // Fail. } function testBooleanMatching() { $dummy = &new MockDummy(); $dummy->expectArguments('a', array(true, false)); $dummy->a(true, false); $dummy->a(true, true); // Fail. } function testIntegerMatching() { $dummy = &new MockDummy(); $dummy->expectArguments('a', array(32, 33)); $dummy->a(32, 33); $dummy->a(32, 34); // Fail. } function testFloatMatching() { $dummy = &new MockDummy(); $dummy->expectArguments('a', array(3.2, 3.3)); $dummy->a(3.2, 3.3); $dummy->a(3.2, 3.4); // Fail. } function testStringMatching() { $dummy = &new MockDummy(); $dummy->expectArguments('a', array('32', '33')); $dummy->a('32', '33'); $dummy->a('32', '34'); // Fail. } function testEmptyMatchingWithCustomExpectationMessage() { $dummy = &new MockDummy(); $dummy->expectArguments( 'a', array(new EqualExpectation('A', 'My part expectation message: %s')), 'My expectation message: %s'); $dummy->a('A'); $dummy->a('B'); // Fail. } function testArrayMatching() { $dummy = &new MockDummy(); $dummy->expectArguments('a', array(array(32), array(33))); $dummy->a(array(32), array(33)); $dummy->a(array(32), array('33')); // Fail. } function testObjectMatching() { $a = new Dummy(); $a->a = 'a'; $b = new Dummy(); $b->b = 'b'; $dummy = &new MockDummy(); $dummy->expectArguments('a', array($a, $b)); $dummy->a($a, $b); $dummy->a($a, $a); // Fail. } function testBigList() { $dummy = &new MockDummy(); $dummy->expectArguments('a', array(false, 0, 1, 1.0)); $dummy->a(false, 0, 1, 1.0); $dummy->a(true, false, 2, 2.0); // Fail. } } class TestOfPastBugs extends UnitTestCase { function testMixedTypes() { $this->assertEqual(array(), null, "%s -> Pass"); $this->assertIdentical(array(), null, "%s -> Fail"); // Fail. } function testMockWildcards() { $dummy = &new MockDummy(); $dummy->expectArguments('a', array('*', array(33))); $dummy->a(array(32), array(33)); $dummy->a(array(32), array('33')); // Fail. } } class TestOfVisualShell extends ShellTestCase { function testDump() { $this->execute('ls'); $this->dumpOutput(); $this->execute('dir'); $this->dumpOutput(); } function testDumpOfList() { $this->execute('ls'); $this->dump($this->getOutputAsList()); } } class PassesAsWellReporter extends HtmlReporter { function _getCss() { return parent::_getCss() . ' .pass { color: darkgreen; }'; } function paintPass($message) { parent::paintPass($message); print "<span class=\"pass\">Pass</span>: "; $breadcrumb = $this->getTestList(); array_shift($breadcrumb); print implode(" -> ", $breadcrumb); print " -> " . htmlentities($message) . "<br />\n"; } function paintSignal($type, &$payload) { print "<span class=\"fail\">$type</span>: "; $breadcrumb = $this->getTestList(); array_shift($breadcrumb); print implode(" -> ", $breadcrumb); print " -> " . htmlentities(serialize($payload)) . "<br />\n"; } } class TestOfSkippingNoMatterWhat extends UnitTestCase { function skip() { $this->skipIf(true, 'Always skipped -> %s'); } function testFail() { $this->fail('This really shouldn\'t have happened'); } } class TestOfSkippingOrElse extends UnitTestCase { function skip() { $this->skipUnless(false, 'Always skipped -> %s'); } function testFail() { $this->fail('This really shouldn\'t have happened'); } } class TestOfSkippingTwiceOver extends UnitTestCase { function skip() { $this->skipIf(true, 'First reason -> %s'); $this->skipIf(true, 'Second reason -> %s'); } function testFail() { $this->fail('This really shouldn\'t have happened'); } } class TestThatShouldNotBeSkipped extends UnitTestCase { function skip() { $this->skipIf(false); $this->skipUnless(true); } function testFail() { $this->fail('We should see this message'); } function testPass() { $this->pass('We should see this message'); } } $test = &new TestSuite('Visual test with 46 passes, 47 fails and 0 exceptions'); $test->addTestCase(new PassingUnitTestCaseOutput()); $test->addTestCase(new FailingUnitTestCaseOutput()); $test->addTestCase(new TestOfMockObjectsOutput()); $test->addTestCase(new TestOfPastBugs()); $test->addTestCase(new TestOfVisualShell()); $test->addTestCase(new TestOfSkippingNoMatterWhat()); $test->addTestCase(new TestOfSkippingOrElse()); $test->addTestCase(new TestOfSkippingTwiceOver()); $test->addTestCase(new TestThatShouldNotBeSkipped()); if (isset($_GET['xml']) || in_array('xml', (isset($argv) ? $argv : array()))) { $reporter = &new XmlReporter(); } elseif (TextReporter::inCli()) { $reporter = &new TextReporter(); } else { $reporter = &new PassesAsWellReporter(); } if (isset($_GET['dry']) || in_array('dry', (isset($argv) ? $argv : array()))) { $reporter->makeDry(); } exit ($test->run($reporter) ? 0 : 1);?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -