PK @Z旯 hamcrest-php/.gush.ymlnu [ adapter: github
issue_tracker: github
meta-header: "Copyright (c) 2009-2015 hamcrest.org"
table-pr:
fixed_tickets: ['Fixed Tickets', '']
license: ['License', MIT]
base: master
PK @ZL hamcrest-php/.gitignorenu [ composer.lock
vendor
PK @Z=֦ hamcrest-php/composer.jsonnu [ {
"name": "hamcrest/hamcrest-php",
"type": "library",
"description": "This is the PHP port of Hamcrest Matchers",
"keywords": ["test"],
"license": "BSD-3-Clause",
"authors": [
],
"autoload": {
"classmap": ["hamcrest"]
},
"autoload-dev": {
"classmap": ["tests", "generator"]
},
"require": {
"php": "^5.3|^7.0|^8.0"
},
"require-dev": {
"phpunit/php-file-iterator": "^1.4 || ^2.0",
"phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
},
"replace": {
"kodova/hamcrest-php": "*",
"davedevelopment/hamcrest-php": "*",
"cordoval/hamcrest-php": "*"
},
"extra": {
"branch-alias": {
"dev-master": "2.1-dev"
}
}
}
PK @Z?J 0 hamcrest-php/tests/Hamcrest/Xml/HasXPathTest.phpnu [
alice
Alice Frankel
admin
bob
Bob Frankel
user
charlie
Charlie Chan
user
XML;
self::$doc = new \DOMDocument();
self::$doc->loadXML(self::$xml);
self::$html = <<
Home Page
Heading
Some text
HTML;
}
protected function createMatcher()
{
return \Hamcrest\Xml\HasXPath::hasXPath('/users/user');
}
public function testMatchesWhenXPathIsFound()
{
assertThat('one match', self::$doc, hasXPath('user[id = "bob"]'));
assertThat('two matches', self::$doc, hasXPath('user[role = "user"]'));
}
public function testDoesNotMatchWhenXPathIsNotFound()
{
assertThat(
'no match',
self::$doc,
not(hasXPath('user[contains(id, "frank")]'))
);
}
public function testMatchesWhenExpressionWithoutMatcherEvaluatesToTrue()
{
assertThat(
'one match',
self::$doc,
hasXPath('count(user[id = "bob"])')
);
}
public function testDoesNotMatchWhenExpressionWithoutMatcherEvaluatesToFalse()
{
assertThat(
'no matches',
self::$doc,
not(hasXPath('count(user[id = "frank"])'))
);
}
public function testMatchesWhenExpressionIsEqual()
{
assertThat(
'one match',
self::$doc,
hasXPath('count(user[id = "bob"])', 1)
);
assertThat(
'two matches',
self::$doc,
hasXPath('count(user[role = "user"])', 2)
);
}
public function testDoesNotMatchWhenExpressionIsNotEqual()
{
assertThat(
'no match',
self::$doc,
not(hasXPath('count(user[id = "frank"])', 2))
);
assertThat(
'one match',
self::$doc,
not(hasXPath('count(user[role = "admin"])', 2))
);
}
public function testMatchesWhenContentMatches()
{
assertThat(
'one match',
self::$doc,
hasXPath('user/name', containsString('ice'))
);
assertThat(
'two matches',
self::$doc,
hasXPath('user/role', equalTo('user'))
);
}
public function testDoesNotMatchWhenContentDoesNotMatch()
{
assertThat(
'no match',
self::$doc,
not(hasXPath('user/name', containsString('Bobby')))
);
assertThat(
'no matches',
self::$doc,
not(hasXPath('user/role', equalTo('owner')))
);
}
public function testProvidesConvenientShortcutForHasXPathEqualTo()
{
assertThat('matches', self::$doc, hasXPath('count(user)', 3));
assertThat('matches', self::$doc, hasXPath('user[2]/id', 'bob'));
}
public function testProvidesConvenientShortcutForHasXPathCountEqualTo()
{
assertThat('matches', self::$doc, hasXPath('user[id = "charlie"]', 1));
}
public function testMatchesAcceptsXmlString()
{
assertThat('accepts XML string', self::$xml, hasXPath('user'));
}
public function testMatchesAcceptsHtmlString()
{
assertThat('accepts HTML string', self::$html, hasXPath('body/h1', 'Heading'));
}
public function testHasAReadableDescription()
{
$this->assertDescription(
'XML or HTML document with XPath "/users/user"',
hasXPath('/users/user')
);
$this->assertDescription(
'XML or HTML document with XPath "count(/users/user)" <2>',
hasXPath('/users/user', 2)
);
$this->assertDescription(
'XML or HTML document with XPath "/users/user/name"'
. ' a string starting with "Alice"',
hasXPath('/users/user/name', startsWith('Alice'))
);
}
public function testHasAReadableMismatchDescription()
{
$this->assertMismatchDescription(
'XPath returned no results',
hasXPath('/users/name'),
self::$doc
);
$this->assertMismatchDescription(
'XPath expression result was <3F>',
hasXPath('/users/user', 2),
self::$doc
);
$this->assertMismatchDescription(
'XPath returned ["alice", "bob", "charlie"]',
hasXPath('/users/user/id', 'Frank'),
self::$doc
);
}
}
PK @ZR R + hamcrest-php/tests/Hamcrest/Core/IsTest.phpnu [ assertMatches(is(equalTo(true)), true, 'should match');
$this->assertMatches(is(equalTo(false)), false, 'should match');
$this->assertDoesNotMatch(is(equalTo(true)), false, 'should not match');
$this->assertDoesNotMatch(is(equalTo(false)), true, 'should not match');
}
public function testGeneratesIsPrefixInDescription()
{
$this->assertDescription('is ', is(equalTo(true)));
}
public function testProvidesConvenientShortcutForIsEqualTo()
{
$this->assertMatches(is('A'), 'A', 'should match');
$this->assertMatches(is('B'), 'B', 'should match');
$this->assertDoesNotMatch(is('A'), 'B', 'should not match');
$this->assertDoesNotMatch(is('B'), 'A', 'should not match');
$this->assertDescription('is "A"', is('A'));
}
}
PK @ZER~ ~ , hamcrest-php/tests/Hamcrest/Core/SetTest.phpnu [ _instanceProperty);
}
protected function createMatcher()
{
return \Hamcrest\Core\Set::set('property_name');
}
public function testEvaluatesToTrueIfArrayPropertyIsSet()
{
assertThat(array('foo' => 'bar'), set('foo'));
}
public function testNegatedEvaluatesToFalseIfArrayPropertyIsSet()
{
assertThat(array('foo' => 'bar'), not(notSet('foo')));
}
public function testEvaluatesToTrueIfClassPropertyIsSet()
{
self::$_classProperty = 'bar';
assertThat('Hamcrest\Core\SetTest', set('_classProperty'));
}
public function testNegatedEvaluatesToFalseIfClassPropertyIsSet()
{
self::$_classProperty = 'bar';
assertThat('Hamcrest\Core\SetTest', not(notSet('_classProperty')));
}
public function testEvaluatesToTrueIfObjectPropertyIsSet()
{
$this->_instanceProperty = 'bar';
assertThat($this, set('_instanceProperty'));
}
public function testNegatedEvaluatesToFalseIfObjectPropertyIsSet()
{
$this->_instanceProperty = 'bar';
assertThat($this, not(notSet('_instanceProperty')));
}
public function testEvaluatesToFalseIfArrayPropertyIsNotSet()
{
assertThat(array('foo' => 'bar'), not(set('baz')));
}
public function testNegatedEvaluatesToTrueIfArrayPropertyIsNotSet()
{
assertThat(array('foo' => 'bar'), notSet('baz'));
}
public function testEvaluatesToFalseIfClassPropertyIsNotSet()
{
assertThat('Hamcrest\Core\SetTest', not(set('_classProperty')));
}
public function testNegatedEvaluatesToTrueIfClassPropertyIsNotSet()
{
assertThat('Hamcrest\Core\SetTest', notSet('_classProperty'));
}
public function testEvaluatesToFalseIfObjectPropertyIsNotSet()
{
assertThat($this, not(set('_instanceProperty')));
}
public function testNegatedEvaluatesToTrueIfObjectPropertyIsNotSet()
{
assertThat($this, notSet('_instanceProperty'));
}
public function testHasAReadableDescription()
{
$this->assertDescription('set property foo', set('foo'));
$this->assertDescription('unset property bar', notSet('bar'));
}
public function testDecribesPropertySettingInMismatchMessage()
{
$this->assertMismatchDescription(
'was not set',
set('bar'),
array('foo' => 'bar')
);
$this->assertMismatchDescription(
'was "bar"',
notSet('foo'),
array('foo' => 'bar')
);
self::$_classProperty = 'bar';
$this->assertMismatchDescription(
'was "bar"',
notSet('_classProperty'),
'Hamcrest\Core\SetTest'
);
$this->_instanceProperty = 'bar';
$this->assertMismatchDescription(
'was "bar"',
notSet('_instanceProperty'),
$this
);
}
}
PK @Z
'93B B . hamcrest-php/tests/Hamcrest/Core/EveryTest.phpnu [ assertEquals('every item is a string containing "a"', (string) $each);
$this->assertMismatchDescription('an item was "BbB"', $each, array('BbB'));
}
}
PK @Z6 3 hamcrest-php/tests/Hamcrest/Core/IsAnythingTest.phpnu [ assertDescription('ANYTHING', anything());
}
public function testCanOverrideDescription()
{
$description = 'description';
$this->assertDescription($description, anything($description));
}
}
PK @Zną> > 4 hamcrest-php/tests/Hamcrest/Core/HasToStringTest.phpnu [ assertMatches(
hasToString(equalTo('php')),
new \Hamcrest\Core\PhpForm(),
'correct __toString'
);
$this->assertMatches(
hasToString(equalTo('java')),
new \Hamcrest\Core\JavaForm(),
'correct toString'
);
}
public function testPicksJavaOverPhpToString()
{
$this->assertMatches(
hasToString(equalTo('java')),
new \Hamcrest\Core\BothForms(),
'correct toString'
);
}
public function testDoesNotMatchWhenToStringDoesNotMatch()
{
$this->assertDoesNotMatch(
hasToString(equalTo('mismatch')),
new \Hamcrest\Core\PhpForm(),
'incorrect __toString'
);
$this->assertDoesNotMatch(
hasToString(equalTo('mismatch')),
new \Hamcrest\Core\JavaForm(),
'incorrect toString'
);
$this->assertDoesNotMatch(
hasToString(equalTo('mismatch')),
new \Hamcrest\Core\BothForms(),
'incorrect __toString'
);
}
public function testDoesNotMatchNull()
{
$this->assertDoesNotMatch(
hasToString(equalTo('a')),
null,
'should not match null'
);
}
public function testProvidesConvenientShortcutForTraversableWithSizeEqualTo()
{
$this->assertMatches(
hasToString(equalTo('php')),
new \Hamcrest\Core\PhpForm(),
'correct __toString'
);
}
public function testHasAReadableDescription()
{
$this->assertDescription(
'an object with toString() "php"',
hasToString(equalTo('php'))
);
}
}
PK @Z4 / hamcrest-php/tests/Hamcrest/Core/IsNullTest.phpnu [ assertMatches(
$itemMatcher,
array('a', 'b', 'c'),
"should match list that contains 'a'"
);
}
public function testDoesNotMatchCollectionThatDoesntContainAnElementMatchingTheGivenMatcher()
{
$matcher1 = hasItem(equalTo('a'));
$this->assertDoesNotMatch(
$matcher1,
array('b', 'c'),
"should not match list that doesn't contain 'a'"
);
$matcher2 = hasItem(equalTo('a'));
$this->assertDoesNotMatch(
$matcher2,
array(),
'should not match the empty list'
);
}
public function testDoesNotMatchNull()
{
$this->assertDoesNotMatch(
hasItem(equalTo('a')),
null,
'should not match null'
);
}
public function testHasAReadableDescription()
{
$this->assertDescription('a collection containing "a"', hasItem(equalTo('a')));
}
public function testMatchesAllItemsInCollection()
{
$matcher1 = hasItems(equalTo('a'), equalTo('b'), equalTo('c'));
$this->assertMatches(
$matcher1,
array('a', 'b', 'c'),
'should match list containing all items'
);
$matcher2 = hasItems('a', 'b', 'c');
$this->assertMatches(
$matcher2,
array('a', 'b', 'c'),
'should match list containing all items (without matchers)'
);
$matcher3 = hasItems(equalTo('a'), equalTo('b'), equalTo('c'));
$this->assertMatches(
$matcher3,
array('c', 'b', 'a'),
'should match list containing all items in any order'
);
$matcher4 = hasItems(equalTo('a'), equalTo('b'), equalTo('c'));
$this->assertMatches(
$matcher4,
array('e', 'c', 'b', 'a', 'd'),
'should match list containing all items plus others'
);
$matcher5 = hasItems(equalTo('a'), equalTo('b'), equalTo('c'));
$this->assertDoesNotMatch(
$matcher5,
array('e', 'c', 'b', 'd'), // 'a' missing
'should not match list unless it contains all items'
);
}
}
PK @Z 4 hamcrest-php/tests/Hamcrest/Core/IsIdenticalTest.phpnu [ assertDescription('"ARG"', identicalTo('ARG'));
}
public function testReturnsReadableDescriptionFromToStringWhenInitialisedWithNull()
{
$this->assertDescription('null', identicalTo(null));
}
}
PK @Zȟ . hamcrest-php/tests/Hamcrest/Core/AnyOfTest.phpnu [ assertDescription(
'("good" or "bad" or "ugly")',
anyOf('good', 'bad', 'ugly')
);
}
public function testNoneOfEvaluatesToTheLogicalDisjunctionOfTwoOtherMatchers()
{
assertThat('good', not(noneOf('bad', 'good')));
assertThat('good', not(noneOf('good', 'good')));
assertThat('good', not(noneOf('good', 'bad')));
assertThat('good', noneOf('bad', startsWith('b')));
}
public function testNoneOfEvaluatesToTheLogicalDisjunctionOfManyOtherMatchers()
{
assertThat('good', not(noneOf('bad', 'good', 'bad', 'bad', 'bad')));
assertThat('good', noneOf('bad', 'bad', 'bad', 'bad', 'bad'));
}
public function testNoneOfSupportsMixedTypes()
{
$combined = noneOf(
equalTo(new \Hamcrest\Core\SampleBaseClass('good')),
equalTo(new \Hamcrest\Core\SampleBaseClass('ugly')),
equalTo(new \Hamcrest\Core\SampleSubClass('good'))
);
assertThat(new \Hamcrest\Core\SampleSubClass('bad'), $combined);
}
public function testNoneOfHasAReadableDescription()
{
$this->assertDescription(
'not ("good" or "bad" or "ugly")',
noneOf('good', 'bad', 'ugly')
);
}
}
PK @Zl
0 hamcrest-php/tests/Hamcrest/Core/IsEqualTest.phpnu [ _arg = $arg;
}
public function __toString()
{
return $this->_arg;
}
}
class IsEqualTest extends \Hamcrest\AbstractMatcherTest
{
protected function createMatcher()
{
return \Hamcrest\Core\IsEqual::equalTo('irrelevant');
}
public function testComparesObjectsUsingEqualityOperator()
{
assertThat("hi", equalTo("hi"));
assertThat("bye", not(equalTo("hi")));
assertThat(1, equalTo(1));
assertThat(1, not(equalTo(2)));
assertThat("2", equalTo(2));
}
public function testCanCompareNullValues()
{
assertThat(null, equalTo(null));
assertThat(null, not(equalTo('hi')));
assertThat('hi', not(equalTo(null)));
}
public function testComparesTheElementsOfAnArray()
{
$s1 = array('a', 'b');
$s2 = array('a', 'b');
$s3 = array('c', 'd');
$s4 = array('a', 'b', 'c', 'd');
assertThat($s1, equalTo($s1));
assertThat($s2, equalTo($s1));
assertThat($s3, not(equalTo($s1)));
assertThat($s4, not(equalTo($s1)));
}
public function testComparesTheElementsOfAnArrayOfPrimitiveTypes()
{
$i1 = array(1, 2);
$i2 = array(1, 2);
$i3 = array(3, 4);
$i4 = array(1, 2, 3, 4);
assertThat($i1, equalTo($i1));
assertThat($i2, equalTo($i1));
assertThat($i3, not(equalTo($i1)));
assertThat($i4, not(equalTo($i1)));
}
public function testRecursivelyTestsElementsOfArrays()
{
$i1 = array(array(1, 2), array(3, 4));
$i2 = array(array(1, 2), array(3, 4));
$i3 = array(array(5, 6), array(7, 8));
$i4 = array(array(1, 2, 3, 4), array(3, 4));
assertThat($i1, equalTo($i1));
assertThat($i2, equalTo($i1));
assertThat($i3, not(equalTo($i1)));
assertThat($i4, not(equalTo($i1)));
}
public function testIncludesTheResultOfCallingToStringOnItsArgumentInTheDescription()
{
$argumentDescription = 'ARGUMENT DESCRIPTION';
$argument = new \Hamcrest\Core\DummyToStringClass($argumentDescription);
$this->assertDescription('<' . $argumentDescription . '>', equalTo($argument));
}
public function testReturnsAnObviousDescriptionIfCreatedWithANestedMatcherByMistake()
{
$innerMatcher = equalTo('NestedMatcher');
$this->assertDescription('<' . (string) $innerMatcher . '>', equalTo($innerMatcher));
}
public function testReturnsGoodDescriptionIfCreatedWithNullReference()
{
$this->assertDescription('null', equalTo(null));
}
}
PK @Z* . hamcrest-php/tests/Hamcrest/Core/AllOfTest.phpnu [ assertDescription(
'("good" and "bad" and "ugly")',
allOf('good', 'bad', 'ugly')
);
}
public function testMismatchDescriptionDescribesFirstFailingMatch()
{
$this->assertMismatchDescription(
'"good" was "bad"',
allOf('bad', 'good'),
'bad'
);
}
}
PK @ZMY : hamcrest-php/tests/Hamcrest/Core/CombinableMatcherTest.phpnu [ _either_3_or_4 = \Hamcrest\Core\CombinableMatcher::either(equalTo(3))->orElse(equalTo(4));
$this->_not_3_and_not_4 = \Hamcrest\Core\CombinableMatcher::both(not(equalTo(3)))->andAlso(not(equalTo(4)));
}
protected function createMatcher()
{
return \Hamcrest\Core\CombinableMatcher::either(equalTo('irrelevant'))->orElse(equalTo('ignored'));
}
public function testBothAcceptsAndRejects()
{
assertThat(2, $this->_not_3_and_not_4);
assertThat(3, not($this->_not_3_and_not_4));
}
public function testAcceptsAndRejectsThreeAnds()
{
$tripleAnd = $this->_not_3_and_not_4->andAlso(equalTo(2));
assertThat(2, $tripleAnd);
assertThat(3, not($tripleAnd));
}
public function testBothDescribesItself()
{
$this->assertEquals('(not <3> and not <4>)', (string) $this->_not_3_and_not_4);
$this->assertMismatchDescription('was <3>', $this->_not_3_and_not_4, 3);
}
public function testEitherAcceptsAndRejects()
{
assertThat(3, $this->_either_3_or_4);
assertThat(6, not($this->_either_3_or_4));
}
public function testAcceptsAndRejectsThreeOrs()
{
$orTriple = $this->_either_3_or_4->orElse(greaterThan(10));
assertThat(11, $orTriple);
assertThat(9, not($orTriple));
}
public function testEitherDescribesItself()
{
$this->assertEquals('(<3> or <4>)', (string) $this->_either_3_or_4);
$this->assertMismatchDescription('was <6>', $this->_either_3_or_4, 6);
}
}
PK @Z)/` ` 3 hamcrest-php/tests/Hamcrest/Core/SampleSubClass.phpnu [ _baseClassInstance = new \Hamcrest\Core\SampleBaseClass('good');
$this->_subClassInstance = new \Hamcrest\Core\SampleSubClass('good');
}
protected function createMatcher()
{
return \Hamcrest\Core\IsInstanceOf::anInstanceOf('stdClass');
}
public function testEvaluatesToTrueIfArgumentIsInstanceOfASpecificClass()
{
assertThat($this->_baseClassInstance, anInstanceOf('Hamcrest\Core\SampleBaseClass'));
assertThat($this->_subClassInstance, anInstanceOf('Hamcrest\Core\SampleSubClass'));
assertThat(null, not(anInstanceOf('Hamcrest\Core\SampleBaseClass')));
assertThat(new \stdClass(), not(anInstanceOf('Hamcrest\Core\SampleBaseClass')));
}
public function testEvaluatesToFalseIfArgumentIsNotAnObject()
{
assertThat(null, not(anInstanceOf('Hamcrest\Core\SampleBaseClass')));
assertThat(false, not(anInstanceOf('Hamcrest\Core\SampleBaseClass')));
assertThat(5, not(anInstanceOf('Hamcrest\Core\SampleBaseClass')));
assertThat('foo', not(anInstanceOf('Hamcrest\Core\SampleBaseClass')));
assertThat(array(1, 2, 3), not(anInstanceOf('Hamcrest\Core\SampleBaseClass')));
}
public function testHasAReadableDescription()
{
$this->assertDescription('an instance of stdClass', anInstanceOf('stdClass'));
}
public function testDecribesActualClassInMismatchMessage()
{
$this->assertMismatchDescription(
'[Hamcrest\Core\SampleBaseClass] ',
anInstanceOf('Hamcrest\Core\SampleSubClass'),
$this->_baseClassInstance
);
}
}
PK @Z#u / hamcrest-php/tests/Hamcrest/Core/IsSameTest.phpnu [ assertDescription('sameInstance("ARG")', sameInstance('ARG'));
}
public function testReturnsReadableDescriptionFromToStringWhenInitialisedWithNull()
{
$this->assertDescription('sameInstance(null)', sameInstance(null));
}
}
PK @ZOp/ / 4 hamcrest-php/tests/Hamcrest/Core/DescribedAsTest.phpnu [ assertDescription('m1 description', $m1);
$this->assertDescription('m2 description', $m2);
}
public function testAppendsValuesToDescription()
{
$m = describedAs('value 1 = %0, value 2 = %1', anything(), 33, 97);
$this->assertDescription('value 1 = <33>, value 2 = <97>', $m);
}
public function testDelegatesMatchingToAnotherMatcher()
{
$m1 = describedAs('irrelevant', anything());
$m2 = describedAs('irrelevant', not(anything()));
$this->assertTrue($m1->matches(new \stdClass()));
$this->assertFalse($m2->matches('hi'));
}
}
PK @ZR 1 hamcrest-php/tests/Hamcrest/Core/IsTypeOfTest.phpnu [ assertDescription('a double', typeOf('double'));
$this->assertDescription('an integer', typeOf('integer'));
}
public function testDecribesActualTypeInMismatchMessage()
{
$this->assertMismatchDescription('was null', typeOf('boolean'), null);
$this->assertMismatchDescription('was an integer <5>', typeOf('float'), 5);
}
}
PK @Zw . hamcrest-php/tests/Hamcrest/Core/IsNotTest.phpnu [ assertMatches(not(equalTo('A')), 'B', 'should match');
$this->assertDoesNotMatch(not(equalTo('B')), 'B', 'should not match');
}
public function testProvidesConvenientShortcutForNotEqualTo()
{
$this->assertMatches(not('A'), 'B', 'should match');
$this->assertMatches(not('B'), 'A', 'should match');
$this->assertDoesNotMatch(not('A'), 'A', 'should not match');
$this->assertDoesNotMatch(not('B'), 'B', 'should not match');
}
public function testUsesDescriptionOfNegatedMatcherWithPrefix()
{
$this->assertDescription('not a value greater than <2>', not(greaterThan(2)));
$this->assertDescription('not "A"', not('A'));
}
}
PK @Z/o 4 hamcrest-php/tests/Hamcrest/Core/SampleBaseClass.phpnu [ _arg = $arg;
}
public function __toString()
{
return $this->_arg;
}
}
PK @ZO!U 3 hamcrest-php/tests/Hamcrest/AbstractMatcherTest.phpnu [ 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()
);
}
}
PK @ZLzr r 1 hamcrest-php/tests/Hamcrest/Type/IsScalarTest.phpnu [ assertDescription('a scalar', scalarValue());
}
public function testDecribesActualTypeInMismatchMessage()
{
$this->assertMismatchDescription('was null', scalarValue(), null);
$this->assertMismatchDescription('was an array ["foo"]', scalarValue(), array('foo'));
}
}
PK @Z$ 1 hamcrest-php/tests/Hamcrest/Type/IsDoubleTest.phpnu [ assertDescription('a double', doubleValue());
}
public function testDecribesActualTypeInMismatchMessage()
{
$this->assertMismatchDescription('was null', doubleValue(), null);
$this->assertMismatchDescription('was a string "foo"', doubleValue(), 'foo');
}
}
PK @Z 1 hamcrest-php/tests/Hamcrest/Type/IsObjectTest.phpnu [ assertDescription('an object', objectValue());
}
public function testDecribesActualTypeInMismatchMessage()
{
$this->assertMismatchDescription('was null', objectValue(), null);
$this->assertMismatchDescription('was a string "foo"', objectValue(), 'foo');
}
}
PK @Ze+a8 8 2 hamcrest-php/tests/Hamcrest/Type/IsNumericTest.phpnu [ assertDescription('a number', numericValue());
}
public function testDecribesActualTypeInMismatchMessage()
{
$this->assertMismatchDescription('was null', numericValue(), null);
$this->assertMismatchDescription('was a string "foo"', numericValue(), 'foo');
}
}
PK @Zv 2 hamcrest-php/tests/Hamcrest/Type/IsIntegerTest.phpnu [ assertDescription('an integer', integerValue());
}
public function testDecribesActualTypeInMismatchMessage()
{
$this->assertMismatchDescription('was null', integerValue(), null);
$this->assertMismatchDescription('was a string "foo"', integerValue(), 'foo');
}
}
PK @ZtĚ 3 hamcrest-php/tests/Hamcrest/Type/IsResourceTest.phpnu [ assertDescription('a resource', resourceValue());
}
public function testDecribesActualTypeInMismatchMessage()
{
$this->assertMismatchDescription('was null', resourceValue(), null);
$this->assertMismatchDescription('was a string "foo"', resourceValue(), 'foo');
}
}
PK @Zv^
3 hamcrest-php/tests/Hamcrest/Type/IsCallableTest.phpnu [ =')) {
$this->markTestSkipped('Closures require php 5.3');
}
eval('assertThat(function () {}, callableValue());');
}
public function testEvaluatesToTrueIfArgumentImplementsInvoke()
{
if (!version_compare(PHP_VERSION, '5.3', '>=')) {
$this->markTestSkipped('Magic method __invoke() requires php 5.3');
}
assertThat($this, callableValue());
}
public function testEvaluatesToFalseIfArgumentIsInvalidFunctionName()
{
if (function_exists('not_a_Hamcrest_function')) {
$this->markTestSkipped('Function "not_a_Hamcrest_function" must not exist');
}
assertThat('not_a_Hamcrest_function', not(callableValue()));
}
public function testEvaluatesToFalseIfArgumentIsInvalidStaticMethodCallback()
{
assertThat(
array('Hamcrest\Type\IsCallableTest', 'noMethod'),
not(callableValue())
);
}
public function testEvaluatesToFalseIfArgumentIsInvalidInstanceMethodCallback()
{
assertThat(array($this, 'noMethod'), not(callableValue()));
}
public function testEvaluatesToFalseIfArgumentDoesntImplementInvoke()
{
assertThat(new \stdClass(), not(callableValue()));
}
public function testEvaluatesToFalseIfArgumentDoesntMatchType()
{
assertThat(false, not(callableValue()));
assertThat(5.2, not(callableValue()));
}
public function testHasAReadableDescription()
{
$this->assertDescription('a callable', callableValue());
}
public function testDecribesActualTypeInMismatchMessage()
{
$this->assertMismatchDescription(
'was a string "invalid-function"',
callableValue(),
'invalid-function'
);
}
}
PK @ZHٷ 2 hamcrest-php/tests/Hamcrest/Type/IsBooleanTest.phpnu [ assertDescription('a boolean', booleanValue());
}
public function testDecribesActualTypeInMismatchMessage()
{
$this->assertMismatchDescription('was null', booleanValue(), null);
$this->assertMismatchDescription('was a string "foo"', booleanValue(), 'foo');
}
}
PK @Z2X 0 hamcrest-php/tests/Hamcrest/Type/IsArrayTest.phpnu [ assertDescription('an array', arrayValue());
}
public function testDecribesActualTypeInMismatchMessage()
{
$this->assertMismatchDescription('was null', arrayValue(), null);
$this->assertMismatchDescription('was a string "foo"', arrayValue(), 'foo');
}
}
PK @Z
VJ 1 hamcrest-php/tests/Hamcrest/Type/IsStringTest.phpnu [ assertDescription('a string', stringValue());
}
public function testDecribesActualTypeInMismatchMessage()
{
$this->assertMismatchDescription('was null', stringValue(), null);
$this->assertMismatchDescription('was a double <5.2F>', stringValue(), 5.2);
}
}
PK @ZmS 1 hamcrest-php/tests/Hamcrest/MatcherAssertTest.phpnu [ getMessage());
}
try {
\Hamcrest\MatcherAssert::assertThat(null);
self::fail('expected assertion failure');
} catch (\Hamcrest\AssertionError $ex) {
self::assertEquals('', $ex->getMessage());
}
try {
\Hamcrest\MatcherAssert::assertThat('');
self::fail('expected assertion failure');
} catch (\Hamcrest\AssertionError $ex) {
self::assertEquals('', $ex->getMessage());
}
try {
\Hamcrest\MatcherAssert::assertThat(0);
self::fail('expected assertion failure');
} catch (\Hamcrest\AssertionError $ex) {
self::assertEquals('', $ex->getMessage());
}
try {
\Hamcrest\MatcherAssert::assertThat(0.0);
self::fail('expected assertion failure');
} catch (\Hamcrest\AssertionError $ex) {
self::assertEquals('', $ex->getMessage());
}
try {
\Hamcrest\MatcherAssert::assertThat(array());
self::fail('expected assertion failure');
} catch (\Hamcrest\AssertionError $ex) {
self::assertEquals('', $ex->getMessage());
}
self::assertEquals(6, \Hamcrest\MatcherAssert::getCount(), 'assertion count');
}
public function testAssertThatWithIdentifierAndTrueArgPasses()
{
\Hamcrest\MatcherAssert::assertThat('identifier', true);
\Hamcrest\MatcherAssert::assertThat('identifier', 'non-empty');
\Hamcrest\MatcherAssert::assertThat('identifier', 1);
\Hamcrest\MatcherAssert::assertThat('identifier', 3.14159);
\Hamcrest\MatcherAssert::assertThat('identifier', array(true));
self::assertEquals(5, \Hamcrest\MatcherAssert::getCount(), 'assertion count');
}
public function testAssertThatWithIdentifierAndFalseArgFails()
{
try {
\Hamcrest\MatcherAssert::assertThat('identifier', false);
self::fail('expected assertion failure');
} catch (\Hamcrest\AssertionError $ex) {
self::assertEquals('identifier', $ex->getMessage());
}
try {
\Hamcrest\MatcherAssert::assertThat('identifier', null);
self::fail('expected assertion failure');
} catch (\Hamcrest\AssertionError $ex) {
self::assertEquals('identifier', $ex->getMessage());
}
try {
\Hamcrest\MatcherAssert::assertThat('identifier', '');
self::fail('expected assertion failure');
} catch (\Hamcrest\AssertionError $ex) {
self::assertEquals('identifier', $ex->getMessage());
}
try {
\Hamcrest\MatcherAssert::assertThat('identifier', 0);
self::fail('expected assertion failure');
} catch (\Hamcrest\AssertionError $ex) {
self::assertEquals('identifier', $ex->getMessage());
}
try {
\Hamcrest\MatcherAssert::assertThat('identifier', 0.0);
self::fail('expected assertion failure');
} catch (\Hamcrest\AssertionError $ex) {
self::assertEquals('identifier', $ex->getMessage());
}
try {
\Hamcrest\MatcherAssert::assertThat('identifier', array());
self::fail('expected assertion failure');
} catch (\Hamcrest\AssertionError $ex) {
self::assertEquals('identifier', $ex->getMessage());
}
self::assertEquals(6, \Hamcrest\MatcherAssert::getCount(), 'assertion count');
}
public function testAssertThatWithActualValueAndMatcherArgsThatMatchPasses()
{
\Hamcrest\MatcherAssert::assertThat(true, is(true));
self::assertEquals(1, \Hamcrest\MatcherAssert::getCount(), 'assertion count');
}
public function testAssertThatWithActualValueAndMatcherArgsThatDontMatchFails()
{
$expected = 'expected';
$actual = 'actual';
$expectedMessage =
'Expected: "expected"' . PHP_EOL .
' but: was "actual"';
try {
\Hamcrest\MatcherAssert::assertThat($actual, equalTo($expected));
self::fail('expected assertion failure');
} catch (\Hamcrest\AssertionError $ex) {
self::assertEquals($expectedMessage, $ex->getMessage());
self::assertEquals(1, \Hamcrest\MatcherAssert::getCount(), 'assertion count');
}
}
public function testAssertThatWithIdentifierAndActualValueAndMatcherArgsThatMatchPasses()
{
\Hamcrest\MatcherAssert::assertThat('identifier', true, is(true));
self::assertEquals(1, \Hamcrest\MatcherAssert::getCount(), 'assertion count');
}
public function testAssertThatWithIdentifierAndActualValueAndMatcherArgsThatDontMatchFails()
{
$expected = 'expected';
$actual = 'actual';
$expectedMessage =
'identifier' . PHP_EOL .
'Expected: "expected"' . PHP_EOL .
' but: was "actual"';
try {
\Hamcrest\MatcherAssert::assertThat('identifier', $actual, equalTo($expected));
self::fail('expected assertion failure');
} catch (\Hamcrest\AssertionError $ex) {
self::assertEquals($expectedMessage, $ex->getMessage());
self::assertEquals(1, \Hamcrest\MatcherAssert::getCount(), 'assertion count');
}
}
public function testAssertThatWithNoArgsThrowsErrorAndDoesntIncrementCount()
{
try {
\Hamcrest\MatcherAssert::assertThat();
self::fail('expected invalid argument exception');
} catch (\InvalidArgumentException $ex) {
self::assertEquals(0, \Hamcrest\MatcherAssert::getCount(), 'assertion count');
}
}
public function testAssertThatWithFourArgsThrowsErrorAndDoesntIncrementCount()
{
try {
\Hamcrest\MatcherAssert::assertThat(1, 2, 3, 4);
self::fail('expected invalid argument exception');
} catch (\InvalidArgumentException $ex) {
self::assertEquals(0, \Hamcrest\MatcherAssert::getCount(), 'assertion count');
}
}
}
PK @Zd! ! 4 hamcrest-php/tests/Hamcrest/Number/IsCloseToTest.phpnu [ assertTrue($p->matches(1.0));
$this->assertTrue($p->matches(0.5));
$this->assertTrue($p->matches(1.5));
$this->assertDoesNotMatch($p, 2.0, 'too large');
$this->assertMismatchDescription('<2F> differed by <0.5F>', $p, 2.0);
$this->assertDoesNotMatch($p, 0.0, 'number too small');
$this->assertMismatchDescription('<0F> differed by <0.5F>', $p, 0.0);
}
}
PK @Z_g6 = hamcrest-php/tests/Hamcrest/Number/OrderingComparisonTest.phpnu [ _text = $text;
}
public function describeTo(\Hamcrest\Description $description)
{
$description->appendText($this->_text);
}
}
class StringDescriptionTest extends TestCase
{
private $_description;
protected function setUp()
{
$this->_description = new \Hamcrest\StringDescription();
}
public function testAppendTextAppendsTextInformation()
{
$this->_description->appendText('foo')->appendText('bar');
$this->assertEquals('foobar', (string) $this->_description);
}
public function testAppendValueCanAppendTextTypes()
{
$this->_description->appendValue('foo');
$this->assertEquals('"foo"', (string) $this->_description);
}
public function testSpecialCharactersAreEscapedForStringTypes()
{
$this->_description->appendValue("foo\\bar\"zip\r\n");
$this->assertEquals('"foo\\bar\\"zip\r\n"', (string) $this->_description);
}
public function testIntegerValuesCanBeAppended()
{
$this->_description->appendValue(42);
$this->assertEquals('<42>', (string) $this->_description);
}
public function testFloatValuesCanBeAppended()
{
$this->_description->appendValue(42.78);
$this->assertEquals('<42.78F>', (string) $this->_description);
}
public function testNullValuesCanBeAppended()
{
$this->_description->appendValue(null);
$this->assertEquals('null', (string) $this->_description);
}
public function testArraysCanBeAppended()
{
$this->_description->appendValue(array('foo', 42.78));
$this->assertEquals('["foo", <42.78F>]', (string) $this->_description);
}
public function testObjectsCanBeAppended()
{
$this->_description->appendValue(new \stdClass());
$this->assertEquals('', (string) $this->_description);
}
public function testBooleanValuesCanBeAppended()
{
$this->_description->appendValue(false);
$this->assertEquals('', (string) $this->_description);
}
public function testListsOfvaluesCanBeAppended()
{
$this->_description->appendValue(array('foo', 42.78));
$this->assertEquals('["foo", <42.78F>]', (string) $this->_description);
}
public function testIterableOfvaluesCanBeAppended()
{
$items = new \ArrayObject(array('foo', 42.78));
$this->_description->appendValue($items);
$this->assertEquals('["foo", <42.78F>]', (string) $this->_description);
}
public function testIteratorOfvaluesCanBeAppended()
{
$items = new \ArrayObject(array('foo', 42.78));
$this->_description->appendValue($items->getIterator());
$this->assertEquals('["foo", <42.78F>]', (string) $this->_description);
}
public function testListsOfvaluesCanBeAppendedManually()
{
$this->_description->appendValueList('@start@', '@sep@ ', '@end@', array('foo', 42.78));
$this->assertEquals('@start@"foo"@sep@ <42.78F>@end@', (string) $this->_description);
}
public function testIterableOfvaluesCanBeAppendedManually()
{
$items = new \ArrayObject(array('foo', 42.78));
$this->_description->appendValueList('@start@', '@sep@ ', '@end@', $items);
$this->assertEquals('@start@"foo"@sep@ <42.78F>@end@', (string) $this->_description);
}
public function testIteratorOfvaluesCanBeAppendedManually()
{
$items = new \ArrayObject(array('foo', 42.78));
$this->_description->appendValueList('@start@', '@sep@ ', '@end@', $items->getIterator());
$this->assertEquals('@start@"foo"@sep@ <42.78F>@end@', (string) $this->_description);
}
public function testSelfDescribingObjectsCanBeAppended()
{
$this->_description
->appendDescriptionOf(new \Hamcrest\SampleSelfDescriber('foo'))
->appendDescriptionOf(new \Hamcrest\SampleSelfDescriber('bar'))
;
$this->assertEquals('foobar', (string) $this->_description);
}
public function testSelfDescribingObjectsCanBeAppendedAsLists()
{
$this->_description->appendList('@start@', '@sep@ ', '@end@', array(
new \Hamcrest\SampleSelfDescriber('foo'),
new \Hamcrest\SampleSelfDescriber('bar')
));
$this->assertEquals('@start@foo@sep@ bar@end@', (string) $this->_description);
}
public function testSelfDescribingObjectsCanBeAppendedAsIteratedLists()
{
$items = new \ArrayObject(array(
new \Hamcrest\SampleSelfDescriber('foo'),
new \Hamcrest\SampleSelfDescriber('bar')
));
$this->_description->appendList('@start@', '@sep@ ', '@end@', $items);
$this->assertEquals('@start@foo@sep@ bar@end@', (string) $this->_description);
}
public function testSelfDescribingObjectsCanBeAppendedAsIterators()
{
$items = new \ArrayObject(array(
new \Hamcrest\SampleSelfDescriber('foo'),
new \Hamcrest\SampleSelfDescriber('bar')
));
$this->_description->appendList('@start@', '@sep@ ', '@end@', $items->getIterator());
$this->assertEquals('@start@foo@sep@ bar@end@', (string) $this->_description);
}
}
PK @Z/զZ Z D hamcrest-php/tests/Hamcrest/Collection/IsTraversableWithSizeTest.phpnu [ assertMatches(
traversableWithSize(equalTo(3)),
new \ArrayObject(array(1, 2, 3)),
'correct size'
);
}
public function testDoesNotMatchWhenSizeIsIncorrect()
{
$this->assertDoesNotMatch(
traversableWithSize(equalTo(2)),
new \ArrayObject(array(1, 2, 3)),
'incorrect size'
);
}
public function testDoesNotMatchNull()
{
$this->assertDoesNotMatch(
traversableWithSize(3),
null,
'should not match null'
);
}
public function testProvidesConvenientShortcutForTraversableWithSizeEqualTo()
{
$this->assertMatches(
traversableWithSize(3),
new \ArrayObject(array(1, 2, 3)),
'correct size'
);
}
public function testHasAReadableDescription()
{
$this->assertDescription(
'a traversable with size <3>',
traversableWithSize(equalTo(3))
);
}
}
PK @ZDK K A hamcrest-php/tests/Hamcrest/Collection/IsEmptyTraversableTest.phpnu [ assertMatches(
emptyTraversable(),
new \ArrayObject(array()),
'an empty traversable'
);
}
public function testEmptyMatcherDoesNotMatchWhenNotEmpty()
{
$this->assertDoesNotMatch(
emptyTraversable(),
new \ArrayObject(array(1, 2, 3)),
'a non-empty traversable'
);
}
public function testEmptyMatcherDoesNotMatchNull()
{
$this->assertDoesNotMatch(
emptyTraversable(),
null,
'should not match null'
);
}
public function testEmptyMatcherHasAReadableDescription()
{
$this->assertDescription('an empty traversable', emptyTraversable());
}
public function testNonEmptyDoesNotMatchNull()
{
$this->assertDoesNotMatch(
nonEmptyTraversable(),
null,
'should not match null'
);
}
public function testNonEmptyDoesNotMatchWhenEmpty()
{
$this->assertDoesNotMatch(
nonEmptyTraversable(),
new \ArrayObject(array()),
'an empty traversable'
);
}
public function testNonEmptyMatchesWhenNotEmpty()
{
$this->assertMatches(
nonEmptyTraversable(),
new \ArrayObject(array(1, 2, 3)),
'a non-empty traversable'
);
}
public function testNonEmptyNonEmptyMatcherHasAReadableDescription()
{
$this->assertDescription('a non-empty traversable', nonEmptyTraversable());
}
}
PK @ZC^ 9 hamcrest-php/tests/Hamcrest/Array/IsArrayWithSizeTest.phpnu [ assertMatches(arrayWithSize(equalTo(3)), array(1, 2, 3), 'correct size');
$this->assertDoesNotMatch(arrayWithSize(equalTo(2)), array(1, 2, 3), 'incorrect size');
}
public function testProvidesConvenientShortcutForArrayWithSizeEqualTo()
{
$this->assertMatches(arrayWithSize(3), array(1, 2, 3), 'correct size');
$this->assertDoesNotMatch(arrayWithSize(2), array(1, 2, 3), 'incorrect size');
}
public function testEmptyArray()
{
$this->assertMatches(emptyArray(), array(), 'correct size');
$this->assertDoesNotMatch(emptyArray(), array(1), 'incorrect size');
}
public function testHasAReadableDescription()
{
$this->assertDescription('an array with size <3>', arrayWithSize(equalTo(3)));
$this->assertDescription('an empty array', emptyArray());
}
}
PK @Z> > > hamcrest-php/tests/Hamcrest/Array/IsArrayContainingKeyTest.phpnu [ 1);
$this->assertMatches(hasKey('a'), $array, 'Matches single key');
}
public function testMatchesArrayContainingKey()
{
$array = array('a'=>1, 'b'=>2, 'c'=>3);
$this->assertMatches(hasKey('a'), $array, 'Matches a');
$this->assertMatches(hasKey('c'), $array, 'Matches c');
}
public function testMatchesArrayContainingKeyWithIntegerKeys()
{
$array = array(1=>'A', 2=>'B');
assertThat($array, hasKey(1));
}
public function testMatchesArrayContainingKeyWithNumberKeys()
{
$array = array(1=>'A', 2=>'B');
assertThat($array, hasKey(1));
// very ugly version!
assertThat($array, IsArrayContainingKey::hasKeyInArray(2));
}
public function testHasReadableDescription()
{
$this->assertDescription('array with key "a"', hasKey('a'));
}
public function testDoesNotMatchEmptyArray()
{
$this->assertMismatchDescription('array was []', hasKey('Foo'), array());
}
public function testDoesNotMatchArrayMissingKey()
{
$array = array('a'=>1, 'b'=>2, 'c'=>3);
$this->assertMismatchDescription('array was ["a" => <1>, "b" => <2>, "c" => <3>]', hasKey('d'), $array);
}
}
PK @ZB$J J G hamcrest-php/tests/Hamcrest/Array/IsArrayContainingKeyValuePairTest.phpnu [ 1, 'b'=>2);
$this->assertMatches(hasKeyValuePair(equalTo('a'), equalTo(1)), $array, 'matcherA');
$this->assertMatches(hasKeyValuePair(equalTo('b'), equalTo(2)), $array, 'matcherB');
$this->assertMismatchDescription(
'array was ["a" => <1>, "b" => <2>]',
hasKeyValuePair(equalTo('c'), equalTo(3)),
$array
);
}
public function testDoesNotMatchNull()
{
$this->assertMismatchDescription('was null', hasKeyValuePair(anything(), anything()), null);
}
public function testHasReadableDescription()
{
$this->assertDescription('array containing ["a" => <2>]', hasKeyValuePair(equalTo('a'), equalTo(2)));
}
}
PK @ZY B hamcrest-php/tests/Hamcrest/Array/IsArrayContainingInOrderTest.phpnu [ assertDescription('[<1>, <2>]', arrayContaining(array(1, 2)));
}
public function testMatchesItemsInOrder()
{
$this->assertMatches(arrayContaining(array(1, 2, 3)), array(1, 2, 3), 'in order');
$this->assertMatches(arrayContaining(array(1)), array(1), 'single');
}
public function testAppliesMatchersInOrder()
{
$this->assertMatches(
arrayContaining(array(1, 2, 3)),
array(1, 2, 3),
'in order'
);
$this->assertMatches(arrayContaining(array(1)), array(1), 'single');
}
public function testMismatchesItemsInAnyOrder()
{
if (defined('HHVM_VERSION')) {
$this->markTestSkipped('Broken on HHVM.');
}
$matcher = arrayContaining(array(1, 2, 3));
$this->assertMismatchDescription('was null', $matcher, null);
$this->assertMismatchDescription('No item matched: <1>', $matcher, array());
$this->assertMismatchDescription('No item matched: <2>', $matcher, array(1));
$this->assertMismatchDescription('item with key 0: was <4>', $matcher, array(4, 3, 2, 1));
$this->assertMismatchDescription('item with key 2: was <4>', $matcher, array(1, 2, 4));
}
}
PK @ZZbR ; hamcrest-php/tests/Hamcrest/Array/IsArrayContainingTest.phpnu [ assertMatches(
hasItemInArray('a'),
array('a', 'b', 'c'),
"should matches array that contains 'a'"
);
}
public function testDoesNotMatchAnArrayThatDoesntContainAnElementMatchingTheGivenMatcher()
{
$this->assertDoesNotMatch(
hasItemInArray('a'),
array('b', 'c'),
"should not matches array that doesn't contain 'a'"
);
$this->assertDoesNotMatch(
hasItemInArray('a'),
array(),
'should not match empty array'
);
}
public function testDoesNotMatchNull()
{
$this->assertDoesNotMatch(
hasItemInArray('a'),
null,
'should not match null'
);
}
public function testHasAReadableDescription()
{
$this->assertDescription('an array containing "a"', hasItemInArray('a'));
}
}
PK @Z3l E hamcrest-php/tests/Hamcrest/Array/IsArrayContainingInAnyOrderTest.phpnu [ assertDescription('[<1>, <2>] in any order', containsInAnyOrder(array(1, 2)));
}
public function testMatchesItemsInAnyOrder()
{
$this->assertMatches(containsInAnyOrder(array(1, 2, 3)), array(1, 2, 3), 'in order');
$this->assertMatches(containsInAnyOrder(array(1, 2, 3)), array(3, 2, 1), 'out of order');
$this->assertMatches(containsInAnyOrder(array(1)), array(1), 'single');
}
public function testAppliesMatchersInAnyOrder()
{
$this->assertMatches(
containsInAnyOrder(array(1, 2, 3)),
array(1, 2, 3),
'in order'
);
$this->assertMatches(
containsInAnyOrder(array(1, 2, 3)),
array(3, 2, 1),
'out of order'
);
$this->assertMatches(
containsInAnyOrder(array(1)),
array(1),
'single'
);
}
public function testMismatchesItemsInAnyOrder()
{
$matcher = containsInAnyOrder(array(1, 2, 3));
$this->assertMismatchDescription('was null', $matcher, null);
$this->assertMismatchDescription('No item matches: <1>, <2>, <3> in []', $matcher, array());
$this->assertMismatchDescription('No item matches: <2>, <3> in [<1>]', $matcher, array(1));
$this->assertMismatchDescription('Not matched: <4>', $matcher, array(4, 3, 2, 1));
}
}
PK @ZQ> 1 hamcrest-php/tests/Hamcrest/Array/IsArrayTest.phpnu [ assertMatches(
anArray(array(equalTo('a'), equalTo('b'), equalTo('c'))),
array('a', 'b', 'c'),
'should match array with matching elements'
);
}
public function testDoesNotMatchAnArrayWhenElementsDoNotMatch()
{
$this->assertDoesNotMatch(
anArray(array(equalTo('a'), equalTo('b'))),
array('b', 'c'),
'should not match array with different elements'
);
}
public function testDoesNotMatchAnArrayOfDifferentSize()
{
$this->assertDoesNotMatch(
anArray(array(equalTo('a'), equalTo('b'))),
array('a', 'b', 'c'),
'should not match larger array'
);
$this->assertDoesNotMatch(
anArray(array(equalTo('a'), equalTo('b'))),
array('a'),
'should not match smaller array'
);
}
public function testDoesNotMatchNull()
{
$this->assertDoesNotMatch(
anArray(array(equalTo('a'))),
null,
'should not match null'
);
}
public function testHasAReadableDescription()
{
$this->assertDescription(
'["a", "b"]',
anArray(array(equalTo('a'), equalTo('b')))
);
}
public function testHasAReadableMismatchDescriptionWhenKeysDontMatch()
{
$this->assertMismatchDescription(
'array keys were [<1>, <2>]',
anArray(array(equalTo('a'), equalTo('b'))),
array(1 => 'a', 2 => 'b')
);
}
public function testSupportsMatchesAssociativeArrays()
{
$this->assertMatches(
anArray(array('x'=>equalTo('a'), 'y'=>equalTo('b'), 'z'=>equalTo('c'))),
array('x'=>'a', 'y'=>'b', 'z'=>'c'),
'should match associative array with matching elements'
);
}
public function testDoesNotMatchAnAssociativeArrayWhenKeysDoNotMatch()
{
$this->assertDoesNotMatch(
anArray(array('x'=>equalTo('a'), 'y'=>equalTo('b'))),
array('x'=>'b', 'z'=>'c'),
'should not match array with different keys'
);
}
}
PK @Z{F
F
( hamcrest-php/tests/Hamcrest/UtilTest.phpnu [ assertSame($matcher, $newMatcher);
}
public function testWrapValueWithIsEqualWrapsPrimitive()
{
$matcher = \Hamcrest\Util::wrapValueWithIsEqual('foo');
$this->assertInstanceOf('Hamcrest\Core\IsEqual', $matcher);
$this->assertTrue($matcher->matches('foo'));
}
public function testCheckAllAreMatchersAcceptsMatchers()
{
\Hamcrest\Util::checkAllAreMatchers(array(
new \Hamcrest\Text\MatchesPattern('/fo+/'),
new \Hamcrest\Core\IsEqual('foo'),
));
}
/**
* @expectedException InvalidArgumentException
*/
public function testCheckAllAreMatchersFailsForPrimitive()
{
\Hamcrest\Util::checkAllAreMatchers(array(
new \Hamcrest\Text\MatchesPattern('/fo+/'),
'foo',
));
}
private function callAndAssertCreateMatcherArray($items)
{
$matchers = \Hamcrest\Util::createMatcherArray($items);
$this->assertInternalType('array', $matchers);
$this->assertSameSize($items, $matchers);
foreach ($matchers as $matcher) {
$this->assertInstanceOf('\Hamcrest\Matcher', $matcher);
}
return $matchers;
}
public function testCreateMatcherArrayLeavesMatchersUntouched()
{
$matcher = new \Hamcrest\Text\MatchesPattern('/fo+/');
$items = array($matcher);
$matchers = $this->callAndAssertCreateMatcherArray($items);
$this->assertSame($matcher, $matchers[0]);
}
public function testCreateMatcherArrayWrapsPrimitiveWithIsEqualMatcher()
{
$matchers = $this->callAndAssertCreateMatcherArray(array('foo'));
$this->assertInstanceOf('Hamcrest\Core\IsEqual', $matchers[0]);
$this->assertTrue($matchers[0]->matches('foo'));
}
public function testCreateMatcherArrayDoesntModifyOriginalArray()
{
$items = array('foo');
$this->callAndAssertCreateMatcherArray($items);
$this->assertSame('foo', $items[0]);
}
public function testCreateMatcherArrayUnwrapsSingleArrayElement()
{
$matchers = $this->callAndAssertCreateMatcherArray(array(array('foo')));
$this->assertInstanceOf('Hamcrest\Core\IsEqual', $matchers[0]);
$this->assertTrue($matchers[0]->matches('foo'));
}
}
PK @Zpz / hamcrest-php/tests/Hamcrest/BaseMatcherTest.phpnu [ appendText('SOME DESCRIPTION');
}
public function testDescribesItselfWithToStringMethod()
{
$someMatcher = new \Hamcrest\SomeMatcher();
$this->assertEquals('SOME DESCRIPTION', (string) $someMatcher);
}
}
PK @Z4Їc c 2 hamcrest-php/tests/Hamcrest/InvokedMatcherTest.phpnu [ matchAgainst = $matchAgainst;
}
public function matches($item)
{
return $item == $this->matchAgainst;
}
}
class InvokedMatcherTest extends TestCase
{
public function testInvokedMatchersCallMatches()
{
$sampleMatcher = new SampleInvokeMatcher('foo');
$this->assertTrue($sampleMatcher('foo'));
$this->assertFalse($sampleMatcher('bar'));
}
}
PK @Z*n n B hamcrest-php/tests/Hamcrest/Text/IsEqualIgnoringWhiteSpaceTest.phpnu [ _matcher = \Hamcrest\Text\IsEqualIgnoringWhiteSpace::equalToIgnoringWhiteSpace(
"Hello World how\n are we? "
);
}
protected function createMatcher()
{
return $this->_matcher;
}
public function testPassesIfWordsAreSameButWhitespaceDiffers()
{
assertThat('Hello World how are we?', $this->_matcher);
assertThat(" Hello \rWorld \t how are\nwe?", $this->_matcher);
}
public function testFailsIfTextOtherThanWhitespaceDiffers()
{
assertThat('Hello PLANET how are we?', not($this->_matcher));
assertThat('Hello World how are we', not($this->_matcher));
}
public function testFailsIfWhitespaceIsAddedOrRemovedInMidWord()
{
assertThat('HelloWorld how are we?', not($this->_matcher));
assertThat('Hello Wo rld how are we?', not($this->_matcher));
}
public function testFailsIfMatchingAgainstNull()
{
assertThat(null, not($this->_matcher));
}
public function testHasAReadableDescription()
{
$this->assertDescription(
"equalToIgnoringWhiteSpace(\"Hello World how\\n are we? \")",
$this->_matcher
);
}
}
PK @Zg۽Z
Z
7 hamcrest-php/tests/Hamcrest/Text/StringContainsTest.phpnu [ _stringContains = \Hamcrest\Text\StringContains::containsString(self::EXCERPT);
}
protected function createMatcher()
{
return $this->_stringContains;
}
public function testEvaluatesToTrueIfArgumentContainsSubstring()
{
$this->assertTrue(
$this->_stringContains->matches(self::EXCERPT . 'END'),
'should be true if excerpt at beginning'
);
$this->assertTrue(
$this->_stringContains->matches('START' . self::EXCERPT),
'should be true if excerpt at end'
);
$this->assertTrue(
$this->_stringContains->matches('START' . self::EXCERPT . 'END'),
'should be true if excerpt in middle'
);
$this->assertTrue(
$this->_stringContains->matches(self::EXCERPT . self::EXCERPT),
'should be true if excerpt is repeated'
);
$this->assertFalse(
$this->_stringContains->matches('Something else'),
'should not be true if excerpt is not in string'
);
$this->assertFalse(
$this->_stringContains->matches(substr(self::EXCERPT, 1)),
'should not be true if part of excerpt is in string'
);
}
public function testEvaluatesToTrueIfArgumentIsEqualToSubstring()
{
$this->assertTrue(
$this->_stringContains->matches(self::EXCERPT),
'should be true if excerpt is entire string'
);
}
public function testEvaluatesToFalseIfArgumentContainsSubstringIgnoringCase()
{
$this->assertFalse(
$this->_stringContains->matches(strtolower(self::EXCERPT)),
'should be false if excerpt is entire string ignoring case'
);
$this->assertFalse(
$this->_stringContains->matches('START' . strtolower(self::EXCERPT) . 'END'),
'should be false if excerpt is contained in string ignoring case'
);
}
public function testIgnoringCaseReturnsCorrectMatcher()
{
$this->assertTrue(
$this->_stringContains->ignoringCase()->matches('EXceRpT'),
'should be true if excerpt is entire string ignoring case'
);
}
public function testHasAReadableDescription()
{
$this->assertDescription(
'a string containing "'
. self::EXCERPT . '"',
$this->_stringContains
);
}
}
PK @Z¹ C hamcrest-php/tests/Hamcrest/Text/StringContainsIgnoringCaseTest.phpnu [ _stringContains = \Hamcrest\Text\StringContainsIgnoringCase::containsStringIgnoringCase(
strtolower(self::EXCERPT)
);
}
protected function createMatcher()
{
return $this->_stringContains;
}
public function testEvaluatesToTrueIfArgumentContainsSpecifiedSubstring()
{
$this->assertTrue(
$this->_stringContains->matches(self::EXCERPT . 'END'),
'should be true if excerpt at beginning'
);
$this->assertTrue(
$this->_stringContains->matches('START' . self::EXCERPT),
'should be true if excerpt at end'
);
$this->assertTrue(
$this->_stringContains->matches('START' . self::EXCERPT . 'END'),
'should be true if excerpt in middle'
);
$this->assertTrue(
$this->_stringContains->matches(self::EXCERPT . self::EXCERPT),
'should be true if excerpt is repeated'
);
$this->assertFalse(
$this->_stringContains->matches('Something else'),
'should not be true if excerpt is not in string'
);
$this->assertFalse(
$this->_stringContains->matches(substr(self::EXCERPT, 1)),
'should not be true if part of excerpt is in string'
);
}
public function testEvaluatesToTrueIfArgumentIsEqualToSubstring()
{
$this->assertTrue(
$this->_stringContains->matches(self::EXCERPT),
'should be true if excerpt is entire string'
);
}
public function testEvaluatesToTrueIfArgumentContainsExactSubstring()
{
$this->assertTrue(
$this->_stringContains->matches(strtolower(self::EXCERPT)),
'should be false if excerpt is entire string ignoring case'
);
$this->assertTrue(
$this->_stringContains->matches('START' . strtolower(self::EXCERPT) . 'END'),
'should be false if excerpt is contained in string ignoring case'
);
}
public function testHasAReadableDescription()
{
$this->assertDescription(
'a string containing in any case "'
. strtolower(self::EXCERPT) . '"',
$this->_stringContains
);
}
}
PK @Z4 > hamcrest-php/tests/Hamcrest/Text/StringContainsInOrderTest.phpnu [ _m = \Hamcrest\Text\StringContainsInOrder::stringContainsInOrder(array('a', 'b', 'c'));
}
protected function createMatcher()
{
return $this->_m;
}
public function testMatchesOnlyIfStringContainsGivenSubstringsInTheSameOrder()
{
$this->assertMatches($this->_m, 'abc', 'substrings in order');
$this->assertMatches($this->_m, '1a2b3c4', 'substrings separated');
$this->assertDoesNotMatch($this->_m, 'cab', 'substrings out of order');
$this->assertDoesNotMatch($this->_m, 'xyz', 'no substrings in string');
$this->assertDoesNotMatch($this->_m, 'ac', 'substring missing');
$this->assertDoesNotMatch($this->_m, '', 'empty string');
}
public function testAcceptsVariableArguments()
{
$this->assertMatches(stringContainsInOrder('a', 'b', 'c'), 'abc', 'substrings as variable arguments');
}
public function testHasAReadableDescription()
{
$this->assertDescription(
'a string containing "a", "b", "c" in order',
$this->_m
);
}
}
PK @Z/Y 6 hamcrest-php/tests/Hamcrest/Text/IsEmptyStringTest.phpnu [ assertDoesNotMatch(emptyString(), null, 'null');
}
public function testEmptyDoesNotMatchZero()
{
$this->assertDoesNotMatch(emptyString(), 0, 'zero');
}
public function testEmptyDoesNotMatchFalse()
{
$this->assertDoesNotMatch(emptyString(), false, 'false');
}
public function testEmptyDoesNotMatchEmptyArray()
{
$this->assertDoesNotMatch(emptyString(), array(), 'empty array');
}
public function testEmptyMatchesEmptyString()
{
$this->assertMatches(emptyString(), '', 'empty string');
}
public function testEmptyDoesNotMatchNonEmptyString()
{
$this->assertDoesNotMatch(emptyString(), 'foo', 'non-empty string');
}
public function testEmptyHasAReadableDescription()
{
$this->assertDescription('an empty string', emptyString());
}
public function testEmptyOrNullMatchesNull()
{
$this->assertMatches(nullOrEmptyString(), null, 'null');
}
public function testEmptyOrNullMatchesEmptyString()
{
$this->assertMatches(nullOrEmptyString(), '', 'empty string');
}
public function testEmptyOrNullDoesNotMatchNonEmptyString()
{
$this->assertDoesNotMatch(nullOrEmptyString(), 'foo', 'non-empty string');
}
public function testEmptyOrNullHasAReadableDescription()
{
$this->assertDescription('(null or an empty string)', nullOrEmptyString());
}
public function testNonEmptyDoesNotMatchNull()
{
$this->assertDoesNotMatch(nonEmptyString(), null, 'null');
}
public function testNonEmptyDoesNotMatchEmptyString()
{
$this->assertDoesNotMatch(nonEmptyString(), '', 'empty string');
}
public function testNonEmptyMatchesNonEmptyString()
{
$this->assertMatches(nonEmptyString(), 'foo', 'non-empty string');
}
public function testNonEmptyHasAReadableDescription()
{
$this->assertDescription('a non-empty string', nonEmptyString());
}
}
PK @Z=[ [ 7 hamcrest-php/tests/Hamcrest/Text/MatchesPatternTest.phpnu [ assertDescription('a string matching "pattern"', matchesPattern('pattern'));
}
}
PK @Za(j j 7 hamcrest-php/tests/Hamcrest/Text/StringEndsWithTest.phpnu [ _stringEndsWith = \Hamcrest\Text\StringEndsWith::endsWith(self::EXCERPT);
}
protected function createMatcher()
{
return $this->_stringEndsWith;
}
public function testEvaluatesToTrueIfArgumentContainsSpecifiedSubstring()
{
$this->assertFalse(
$this->_stringEndsWith->matches(self::EXCERPT . 'END'),
'should be false if excerpt at beginning'
);
$this->assertTrue(
$this->_stringEndsWith->matches('START' . self::EXCERPT),
'should be true if excerpt at end'
);
$this->assertFalse(
$this->_stringEndsWith->matches('START' . self::EXCERPT . 'END'),
'should be false if excerpt in middle'
);
$this->assertTrue(
$this->_stringEndsWith->matches(self::EXCERPT . self::EXCERPT),
'should be true if excerpt is at end and repeated'
);
$this->assertFalse(
$this->_stringEndsWith->matches('Something else'),
'should be false if excerpt is not in string'
);
$this->assertFalse(
$this->_stringEndsWith->matches(substr(self::EXCERPT, 0, strlen(self::EXCERPT) - 2)),
'should be false if part of excerpt is at end of string'
);
}
public function testEvaluatesToTrueIfArgumentIsEqualToSubstring()
{
$this->assertTrue(
$this->_stringEndsWith->matches(self::EXCERPT),
'should be true if excerpt is entire string'
);
}
public function testHasAReadableDescription()
{
$this->assertDescription('a string ending with "EXCERPT"', $this->_stringEndsWith);
}
}
PK @ZB u u 9 hamcrest-php/tests/Hamcrest/Text/StringStartsWithTest.phpnu [ _stringStartsWith = \Hamcrest\Text\StringStartsWith::startsWith(self::EXCERPT);
}
protected function createMatcher()
{
return $this->_stringStartsWith;
}
public function testEvaluatesToTrueIfArgumentContainsSpecifiedSubstring()
{
$this->assertTrue(
$this->_stringStartsWith->matches(self::EXCERPT . 'END'),
'should be true if excerpt at beginning'
);
$this->assertFalse(
$this->_stringStartsWith->matches('START' . self::EXCERPT),
'should be false if excerpt at end'
);
$this->assertFalse(
$this->_stringStartsWith->matches('START' . self::EXCERPT . 'END'),
'should be false if excerpt in middle'
);
$this->assertTrue(
$this->_stringStartsWith->matches(self::EXCERPT . self::EXCERPT),
'should be true if excerpt is at beginning and repeated'
);
$this->assertFalse(
$this->_stringStartsWith->matches('Something else'),
'should be false if excerpt is not in string'
);
$this->assertFalse(
$this->_stringStartsWith->matches(substr(self::EXCERPT, 1)),
'should be false if part of excerpt is at start of string'
);
}
public function testEvaluatesToTrueIfArgumentIsEqualToSubstring()
{
$this->assertTrue(
$this->_stringStartsWith->matches(self::EXCERPT),
'should be true if excerpt is entire string'
);
}
public function testHasAReadableDescription()
{
$this->assertDescription('a string starting with "EXCERPT"', $this->_stringStartsWith);
}
}
PK @ZO+| | <