You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.9 KiB
68 lines
1.9 KiB
<?php |
|
namespace Hamcrest; |
|
|
|
use PHPUnit\Framework\TestCase; |
|
|
|
class UnknownType { |
|
} |
|
|
|
abstract class AbstractMatcherTest extends TestCase |
|
{ |
|
|
|
const ARGUMENT_IGNORED = "ignored"; |
|
const ANY_NON_NULL_ARGUMENT = "notnull"; |
|
|
|
abstract protected function createMatcher(); |
|
|
|
public function assertMatches(\Hamcrest\Matcher $matcher, $arg, $message) |
|
{ |
|
$this->assertTrue($matcher->matches($arg), $message); |
|
} |
|
|
|
public function assertDoesNotMatch(\Hamcrest\Matcher $matcher, $arg, $message) |
|
{ |
|
$this->assertFalse($matcher->matches($arg), $message); |
|
} |
|
|
|
public function assertDescription($expected, \Hamcrest\Matcher $matcher) |
|
{ |
|
$description = new \Hamcrest\StringDescription(); |
|
$description->appendDescriptionOf($matcher); |
|
$this->assertEquals($expected, (string) $description, 'Expected description'); |
|
} |
|
|
|
public function assertMismatchDescription($expected, \Hamcrest\Matcher $matcher, $arg) |
|
{ |
|
$description = new \Hamcrest\StringDescription(); |
|
$this->assertFalse( |
|
$matcher->matches($arg), |
|
'Precondtion: Matcher should not match item' |
|
); |
|
$matcher->describeMismatch($arg, $description); |
|
$this->assertEquals( |
|
$expected, |
|
(string) $description, |
|
'Expected mismatch description' |
|
); |
|
} |
|
|
|
public function testIsNullSafe() |
|
{ |
|
//Should not generate any notices |
|
$this->createMatcher()->matches(null); |
|
$this->createMatcher()->describeMismatch( |
|
null, |
|
new \Hamcrest\NullDescription() |
|
); |
|
} |
|
|
|
public function testCopesWithUnknownTypes() |
|
{ |
|
//Should not generate any notices |
|
$this->createMatcher()->matches(new UnknownType()); |
|
$this->createMatcher()->describeMismatch( |
|
new UnknownType(), |
|
new NullDescription() |
|
); |
|
} |
|
}
|
|
|