From 55c4ac1bfe565f1ca7f537fdd8b7a201be28e581 Mon Sep 17 00:00:00 2001 From: xue <> Date: Thu, 10 Nov 2005 12:47:19 +0000 Subject: Initial import of prado framework --- tests/UnitTests/simpletest/test/visual_test.php | 386 ++++++++++++++++++++++++ 1 file changed, 386 insertions(+) create mode 100644 tests/UnitTests/simpletest/test/visual_test.php (limited to 'tests/UnitTests/simpletest/test/visual_test.php') diff --git a/tests/UnitTests/simpletest/test/visual_test.php b/tests/UnitTests/simpletest/test/visual_test.php new file mode 100644 index 00000000..975ef050 --- /dev/null +++ b/tests/UnitTests/simpletest/test/visual_test.php @@ -0,0 +1,386 @@ +_a = $a; + } + } + + class TestOfUnitTestCaseOutput extends UnitTestCase { + + function testOfResults() { + $this->pass('Pass'); + $this->fail('Fail'); // Fail. + } + + function testTrue() { + $this->assertTrue(true); + $this->assertTrue(false); // Fail. + } + + function testFalse() { + $this->assertFalse(true); // Fail. + $this->assertFalse(false); + } + + function testExpectation() { + $expectation = &new EqualExpectation(25, 'My expectation message: %s'); + $this->assertExpectation($expectation, 25, 'My assert message : %s'); + $this->assertExpectation($expectation, 24, 'My assert message : %s'); // Fail. + } + + function testNull() { + $this->assertNull(null, "%s -> Pass"); + $this->assertNull(false, "%s -> Fail"); // Fail. + $this->assertNotNull(null, "%s -> Fail"); // Fail. + $this->assertNotNull(false, "%s -> Pass"); + } + + function testType() { + $this->assertIsA("hello", "string", "%s -> Pass"); + $this->assertIsA(14, "string", "%s -> Fail"); // Fail. + $this->assertIsA($this, "TestOfUnitTestCaseOutput", "%s -> Pass"); + $this->assertIsA($this, "UnitTestCase", "%s -> Pass"); + $this->assertIsA(14, "TestOfUnitTestCaseOutput", "%s -> Fail"); // Fail. + $this->assertIsA($this, "TestReporter", "%s -> Fail"); // Fail. + } + + function testTypeEquality() { + $this->assertEqual("0", 0, "%s -> Pass"); + $this->assertNotEqual("0", 0, "%s -> Fail"); // Fail. + } + + function testNullEquality() { + $this->assertEqual(null, 1, "%s -> Fail"); // Fail. + $this->assertNotEqual(null, 1, "%s -> Pass"); + $this->assertEqual(1, null, "%s -> Fail"); // Fail. + $this->assertNotEqual(1, null, "%s -> Pass"); + } + + function testIntegerEquality() { + $this->assertEqual(1, 2, "%s -> Fail"); // Fail. + $this->assertNotEqual(1, 2, "%s -> Pass"); + } + + function testStringEquality() { + $this->assertEqual("a", "a", "%s -> Pass"); + $this->assertNotEqual("a", "a", "%s -> Fail"); // Fail. + $this->assertEqual("aa", "ab", "%s -> Fail"); // Fail. + $this->assertNotEqual("aa", "ab", "%s -> Pass"); + } + + function testHashEquality() { + $this->assertEqual(array("a" => "A", "b" => "B"), array("b" => "B", "a" => "A"), "%s -> Pass"); + $this->assertEqual(array("a" => "A", "b" => "B"), array("b" => "B", "a" => "Z"), "%s -> Pass"); + } + + function testStringIdentity() { + $a = "fred"; + $b = $a; + $this->assertIdentical($a, $b, "%s -> Pass"); + $this->assertNotIdentical($a, $b, "%s -> Fail"); // Fail. + } + + function testTypeIdentity() { + $a = "0"; + $b = 0; + $this->assertIdentical($a, $b, "%s -> Fail"); // Fail. + $this->assertNotIdentical($a, $b, "%s -> Pass"); + } + + function testNullIdentity() { + $this->assertIdentical(null, 1, "%s -> Fail"); // Fail. + $this->assertNotIdentical(null, 1, "%s -> Pass"); + $this->assertIdentical(1, null, "%s -> Fail"); // Fail. + $this->assertNotIdentical(1, null, "%s -> Pass"); + } + + function testHashIdentity() { + $this->assertIdentical(array("a" => "A", "b" => "B"), array("b" => "B", "a" => "A"), "%s -> fail"); // Fail. + } + + function testObjectEquality() { + $this->assertEqual(new TestDisplayClass(4), new TestDisplayClass(4), "%s -> Pass"); + $this->assertNotEqual(new TestDisplayClass(4), new TestDisplayClass(4), "%s -> Fail"); // Fail. + $this->assertEqual(new TestDisplayClass(4), new TestDisplayClass(5), "%s -> Fail"); // Fail. + $this->assertNotEqual(new TestDisplayClass(4), new TestDisplayClass(5), "%s -> Pass"); + } + + function testObjectIndentity() { + $this->assertIdentical(new TestDisplayClass(false), new TestDisplayClass(false), "%s -> Pass"); + $this->assertNotIdentical(new TestDisplayClass(false), new TestDisplayClass(false), "%s -> Fail"); // Fail. + $this->assertIdentical(new TestDisplayClass(false), new TestDisplayClass(0), "%s -> Fail"); // Fail. + $this->assertNotIdentical(new TestDisplayClass(false), new TestDisplayClass(0), "%s -> Pass"); + } + + function testReference() { + $a = "fred"; + $b = &$a; + $this->assertReference($a, $b, "%s -> Pass"); + $this->assertCopy($a, $b, "%s -> Fail"); // Fail. + $c = "Hello"; + $this->assertReference($a, $c, "%s -> Fail"); // Fail. + $this->assertCopy($a, $c, "%s -> Pass"); + } + + function testPatterns() { + $this->assertWantedPattern('/hello/i', "Hello there", "%s -> Pass"); + $this->assertNoUnwantedPattern('/hello/', "Hello there", "%s -> Pass"); + $this->assertWantedPattern('/hello/', "Hello there", "%s -> Fail"); // Fail. + $this->assertNoUnwantedPattern('/hello/i', "Hello there", "%s -> Fail"); // Fail. + } + + function testLongStrings() { + $text = ""; + for ($i = 0; $i < 10; $i++) { + $text .= "0123456789"; + } + $this->assertEqual($text, $text); + $this->assertEqual($text . $text, $text . "a" . $text); // Fail. + } + + function testErrorDisplay() { + trigger_error('Default'); // Exception. + trigger_error('Error', E_USER_ERROR); // Exception. + trigger_error('Warning', E_USER_WARNING); // Exception. + trigger_error('Notice', E_USER_NOTICE); // Exception. + } + + function testErrorTrap() { + $this->assertNoErrors("%s -> Pass"); + $this->assertError(); // Fail. + trigger_error('Error 1'); + $this->assertNoErrors("%s -> Fail"); // Fail. + $this->assertError(); + $this->assertNoErrors("%s -> Pass at end"); + } + + function testErrorText() { + trigger_error('Error 2'); + $this->assertError('Error 2', "%s -> Pass"); + trigger_error('Error 3'); + $this->assertError('Error 2', "%s -> Fail"); // Fail. + } + + function testErrorPatterns() { + trigger_error('Error 2'); + $this->assertErrorPattern('/Error 2/', "%s -> Pass"); + trigger_error('Error 3'); + $this->assertErrorPattern('/Error 2/', "%s -> Fail"); // Fail. + } + + function testDumping() { + $this->dump(array("Hello"), "Displaying a variable"); + } + + function testSignal() { + $fred = "signal as a string"; + $this->signal("Signal", $fred); // Signal. + } + } + + class Dummy { + function Dummy() { + } + + function a() { + } + } + Mock::generate('Dummy'); + + class TestOfMockObjectsOutput extends UnitTestCase { + + function testCallCounts() { + $dummy = &new MockDummy($this); + $dummy->expectCallCount('a', 1, 'My message: %s'); + $dummy->a(); + $dummy->tally(); + $dummy->a(); + $dummy->tally(); + } + + function testMinimumCallCounts() { + $dummy = &new MockDummy($this); + $dummy->expectMinimumCallCount('a', 2, 'My message: %s'); + $dummy->a(); + $dummy->tally(); + $dummy->a(); + $dummy->tally(); + } + + function testEmptyMatching() { + $dummy = &new MockDummy($this); + $dummy->expectArguments('a', array()); + $dummy->a(); + $dummy->a(null); // Fail. + } + + function testEmptyMatchingWithCustomMessage() { + $dummy = &new MockDummy($this); + $dummy->expectArguments('a', array(), 'My expectation message: %s'); + $dummy->a(); + $dummy->a(null); // Fail. + } + + function testNullMatching() { + $dummy = &new MockDummy($this); + $dummy->expectArguments('a', array(null)); + $dummy->a(null); + $dummy->a(); // Fail. + } + + function testBooleanMatching() { + $dummy = &new MockDummy($this); + $dummy->expectArguments('a', array(true, false)); + $dummy->a(true, false); + $dummy->a(true, true); // Fail. + } + + function testIntegerMatching() { + $dummy = &new MockDummy($this); + $dummy->expectArguments('a', array(32, 33)); + $dummy->a(32, 33); + $dummy->a(32, 34); // Fail. + } + + function testFloatMatching() { + $dummy = &new MockDummy($this); + $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($this); + $dummy->expectArguments('a', array('32', '33')); + $dummy->a('32', '33'); + $dummy->a('32', '34'); // Fail. + } + + function testEmptyMatchingWithCustomExpectationMessage() { + $dummy = &new MockDummy($this); + $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($this); + $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($this); + $dummy->expectArguments('a', array($a, $b)); + $dummy->a($a, $b); + $dummy->a($a, $a); // Fail. + } + + function testBigList() { + $dummy = &new MockDummy($this); + $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($this); + $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 AllOutputReporter extends HtmlReporter { + + function _getCss() { + return parent::_getCss() . ' .pass { color: darkgreen; }'; + } + + function paintPass($message) { + parent::paintPass($message); + print "Pass: "; + $breadcrumb = $this->getTestList(); + array_shift($breadcrumb); + print implode(" -> ", $breadcrumb); + print " -> " . htmlentities($message) . "
\n"; + } + + function paintSignal($type, &$payload) { + print "$type: "; + $breadcrumb = $this->getTestList(); + array_shift($breadcrumb); + print implode(" -> ", $breadcrumb); + print " -> " . htmlentities(serialize($payload)) . "
\n"; + } + } + + $test = &new GroupTest("Visual test with 49 passes, 49 fails and 4 exceptions"); + $test->addTestCase(new TestOfUnitTestCaseOutput()); + $test->addTestCase(new TestOfMockObjectsOutput()); + $test->addTestCase(new TestOfPastBugs()); + $test->addTestCase(new TestOfVisualShell()); + + if (isset($_GET['xml']) || in_array('xml', (isset($argv) ? $argv : array()))) { + $reporter = &new XmlReporter(); + } elseif(SimpleReporter::inCli()) { + $reporter = &new TextReporter(); + } else { + $reporter = &new AllOutputReporter(); + } + if (isset($_GET['dry']) || in_array('dry', (isset($argv) ? $argv : array()))) { + $reporter->makeDry(); + } + exit ($test->run($reporter) ? 0 : 1); +?> \ No newline at end of file -- cgit v1.2.3