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 --- .../UnitTests/simpletest/test/expectation_test.php | 282 +++++++++++++++++++++ 1 file changed, 282 insertions(+) create mode 100644 tests/UnitTests/simpletest/test/expectation_test.php (limited to 'tests/UnitTests/simpletest/test/expectation_test.php') diff --git a/tests/UnitTests/simpletest/test/expectation_test.php b/tests/UnitTests/simpletest/test/expectation_test.php new file mode 100644 index 00000000..f16db28a --- /dev/null +++ b/tests/UnitTests/simpletest/test/expectation_test.php @@ -0,0 +1,282 @@ +assertTrue($is_true->test(true)); + $this->assertFalse($is_true->test(false)); + $this->assertWantedPattern( + '/equal expectation.*?boolean: true/i', + $is_true->testMessage(true)); + $this->assertWantedPattern( + '/fails.*?boolean.*?boolean/i', + $is_true->testMessage(false)); + } + + function testStringMatch() { + $hello = &new EqualExpectation("Hello"); + $this->assertTrue($hello->test("Hello")); + $this->assertFalse($hello->test("Goodbye")); + $this->assertWantedPattern('/Equal expectation.*?Hello/', $hello->testMessage("Hello")); + $this->assertWantedPattern('/fails/', $hello->testMessage("Goodbye")); + $this->assertWantedPattern('/fails.*?goodbye/i', $hello->testMessage("Goodbye")); + } + + function testStringPosition() { + $comparisons = array( + "ab" => 2, + "a" => 1, + "abcz" => 3, + "abz" => 2, + "az" => 1, + "z" => 0); + $str = &new EqualExpectation("abc"); + foreach ($comparisons as $compare => $position) { + $this->assertWantedPattern( + "/at character $position/", + $str->testMessage($compare)); + } + $str = &new EqualExpectation("abcd"); + foreach ($comparisons as $compare => $position) { + $this->assertWantedPattern( + "/at character $position/", + $str->testMessage($compare)); + } + } + + function testInteger() { + $fifteen = &new EqualExpectation(15); + $this->assertTrue($fifteen->test(15)); + $this->assertFalse($fifteen->test(14)); + $this->assertWantedPattern( + '/equal expectation.*?15/i', + $fifteen->testMessage(15)); + $this->assertWantedPattern( + '/fails.*?15.*?14/i', + $fifteen->testMessage(14)); + } + + function testFloat() { + $pi = &new EqualExpectation(3.14); + $this->assertTrue($pi->test(3.14)); + $this->assertFalse($pi->test(3.15)); + $this->assertWantedPattern( + '/float.*?3\.14/i', + $pi->testMessage(3.14)); + $this->assertWantedPattern( + '/fails.*?3\.14.*?3\.15/i', + $pi->testMessage(3.15)); + } + + function testArray() { + $colours = &new EqualExpectation(array("r", "g", "b")); + $this->assertTrue($colours->test(array("r", "g", "b"))); + $this->assertFalse($colours->test(array("g", "b", "r"))); + $this->assertEqual( + $colours->testMessage(array("r", "g", "b")), + "Equal expectation [Array: 3 items]"); + $this->assertWantedPattern('/fails/', $colours->testMessage(array("r", "g", "z"))); + $this->assertWantedPattern( + '/\[2\] at character 0/', + $colours->testMessage(array("r", "g", "z"))); + $this->assertWantedPattern( + '/key.*? does not match/', + $colours->testMessage(array("r", "g"))); + $this->assertWantedPattern( + '/key.*? does not match/', + $colours->testMessage(array("r", "g", "b", "z"))); + } + + function testHash() { + $is_blue = &new EqualExpectation(array("r" => 0, "g" => 0, "b" => 255)); + $this->assertTrue($is_blue->test(array("r" => 0, "g" => 0, "b" => 255))); + $this->assertFalse($is_blue->test(array("r" => 0, "g" => 255, "b" => 0))); + $this->assertWantedPattern( + '/array.*?3 items/i', + $is_blue->testMessage(array("r" => 0, "g" => 0, "b" => 255))); + $this->assertWantedPattern( + '/fails.*?\[b\]/', + $is_blue->testMessage(array("r" => 0, "g" => 0, "b" => 254))); + } + + function testNestedHash() { + $tree = &new EqualExpectation(array( + "a" => 1, + "b" => array( + "c" => 2, + "d" => "Three"))); + $this->assertWantedPattern( + '/member.*?\[b\].*?\[d\].*?at character 5/', + $tree->testMessage(array( + "a" => 1, + "b" => array( + "c" => 2, + "d" => "Threeish")))); + } + + function testHashWithOutOfOrderKeysShouldStillMatch() { + $any_order = &new EqualExpectation(array('a' => 1, 'b' => 2)); + $this->assertTrue($any_order->test(array('b' => 2, 'a' => 1))); + } + } + + class TestOfInequality extends UnitTestCase { + + function testStringMismatch() { + $not_hello = &new NotEqualExpectation("Hello"); + $this->assertTrue($not_hello->test("Goodbye")); + $this->assertFalse($not_hello->test("Hello")); + $this->assertWantedPattern( + '/at character 0/', + $not_hello->testMessage("Goodbye")); + $this->assertWantedPattern( + '/matches/', + $not_hello->testMessage("Hello")); + } + } + + class RecursiveNasty { + var $_me; + + function RecursiveNasty() { + $this->_me = $this; + } + } + + class TestOfIdentity extends UnitTestCase { + + function testType() { + $string = &new IdenticalExpectation("37"); + $this->assertTrue($string->test("37")); + $this->assertFalse($string->test(37)); + $this->assertFalse($string->test("38")); + $this->assertWantedPattern( + '/identical.*?string.*?37/i', + $string->testMessage("37")); + $this->assertWantedPattern( + '/fails.*?37/', + $string->testMessage(37)); + $this->assertWantedPattern( + '/at character 1/', + $string->testMessage("38")); + } + + function _testNastyPhp5Bug() { + $this->assertFalse(new RecursiveNasty() != new RecursiveNasty()); + } + + function _testReallyHorribleRecursiveStructure() { + $hopeful = &new IdenticalExpectation(new RecursiveNasty()); + $this->assertTrue($hopeful->test(new RecursiveNasty())); + } + } + + class TestOfNonIdentity extends UnitTestCase { + + function testType() { + $string = &new NotIdenticalExpectation("37"); + $this->assertTrue($string->test("38")); + $this->assertTrue($string->test(37)); + $this->assertFalse($string->test("37")); + $this->assertWantedPattern( + '/at character 1/', + $string->testMessage("38")); + $this->assertWantedPattern( + '/passes.*?type/', + $string->testMessage(37)); + } + } + + class TestOfPatterns extends UnitTestCase { + + function testWanted() { + $pattern = &new WantedPatternExpectation('/hello/i'); + $this->assertTrue($pattern->test("Hello world")); + $this->assertFalse($pattern->test("Goodbye world")); + } + + function testUnwanted() { + $pattern = &new UnwantedPatternExpectation('/hello/i'); + $this->assertFalse($pattern->test("Hello world")); + $this->assertTrue($pattern->test("Goodbye world")); + } + } + + class ExpectedMethodTarget { + function hasThisMethod() {} + } + + class TestOfMethodExistence extends UnitTestCase { + + function testHasMethod() { + $instance = &new ExpectedMethodTarget(); + $expectation = &new MethodExistsExpectation('hasThisMethod'); + $this->assertTrue($expectation->test($instance)); + $expectation = &new MethodExistsExpectation('doesNotHaveThisMethod'); + $this->assertFalse($expectation->test($instance)); + } + } + + class TestOfIsA extends UnitTestCase { + + function testString() { + $expectation = &new IsAExpectation('string'); + $this->assertTrue($expectation->test('Hello')); + $this->assertFalse($expectation->test(5)); + } + + function testBoolean() { + $expectation = &new IsAExpectation('boolean'); + $this->assertTrue($expectation->test(true)); + $this->assertFalse($expectation->test(1)); + } + + function testBool() { + $expectation = &new IsAExpectation('bool'); + $this->assertTrue($expectation->test(true)); + $this->assertFalse($expectation->test(1)); + } + + function testDouble() { + $expectation = &new IsAExpectation('double'); + $this->assertTrue($expectation->test(5.0)); + $this->assertFalse($expectation->test(5)); + } + + function testFloat() { + $expectation = &new IsAExpectation('float'); + $this->assertTrue($expectation->test(5.0)); + $this->assertFalse($expectation->test(5)); + } + + function testReal() { + $expectation = &new IsAExpectation('real'); + $this->assertTrue($expectation->test(5.0)); + $this->assertFalse($expectation->test(5)); + } + + function testInteger() { + $expectation = &new IsAExpectation('integer'); + $this->assertTrue($expectation->test(5)); + $this->assertFalse($expectation->test(5.0)); + } + + function testInt() { + $expectation = &new IsAExpectation('int'); + $this->assertTrue($expectation->test(5)); + $this->assertFalse($expectation->test(5.0)); + } + } + + class TestOfNotA extends UnitTestCase { + + function testString() { + $expectation = &new NotAExpectation('string'); + $this->assertFalse($expectation->test('Hello')); + $this->assertTrue($expectation->test(5)); + } + } +?> \ No newline at end of file -- cgit v1.2.3