Skip to content

Commit

Permalink
Merge pull request #6 from hamcrest/add-badges-markdown-readme
Browse files Browse the repository at this point in the history
turn readme markdown and added badges
  • Loading branch information
cordoval committed Dec 31, 2013
2 parents e5729e7 + 3a10522 commit f3de205
Showing 1 changed file with 40 additions and 36 deletions.
76 changes: 40 additions & 36 deletions README.txt → README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
This is the PHP port of Hamcrest Matchers
=========================================

[![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/hamcrest/hamcrest-php/badges/quality-score.png?s=754f5c0556419fc6204917ca9a9dcf2fa2b45ed0)](https://scrutinizer-ci.com/g/hamcrest/hamcrest-php/)
[![Build Status](https://travis-ci.org/hamcrest/hamcrest-php.png?branch=master)](https://travis-ci.org/hamcrest/hamcrest-php)

Hamcrest is a matching library originally written for Java, but
subsequently ported to many other languages. hamcrest-php is the
offical PHP port of Hamcrest and essentially follows a literal
translation of the original Java API for Hamcrest, with a few
Exceptions, mostly down to PHP language barriers:

1. instanceOf($theClass) is actually anInstanceOf($theClass)
1. `instanceOf($theClass)` is actually `anInstanceOf($theClass)`

2. both(containsString('a'))->and(containsString('b'))
is actually both(containsString('a'))->andAlso(containsString('b'))
2. `both(containsString('a'))->and(containsString('b'))`
is actually `both(containsString('a'))->andAlso(containsString('b'))`

3. either(containsString('a'))->or(containsString('b'))
is actually either(containsString('a'))->orElse(containsString('b'))
3. `either(containsString('a'))->or(containsString('b'))`
is actually `either(containsString('a'))->orElse(containsString('b'))`

4. Unless it would be non-semantic for a matcher to do so, hamcrest-php
allows dynamic typing for it's input, in "the PHP way". Exception are
Expand All @@ -23,10 +26,10 @@ Exceptions, mostly down to PHP language barriers:
5. Several official matchers have not been ported because they don't
make sense or don't apply in PHP:

- typeCompatibleWith($theClass)
- eventFrom($source)
- hasProperty($name) **
- samePropertyValuesAs($obj) **
- `typeCompatibleWith($theClass)`
- `eventFrom($source)`
- `hasProperty($name)` **
- `samePropertyValuesAs($obj)` **

6. When most of the collections matchers are finally ported, PHP-specific
aliases will probably be created due to a difference in naming
Expand All @@ -39,57 +42,58 @@ Usage
To use Hamcrest, add the hamcrest directory to your include path and then
simply include hamcrest.php to gain access to each of the Hamcrest matchers.

<?php

set_include_path(
'hamcrest-php/hamcrest' . PATH_SEPARATOR .
get_include_path()
);
```php
<?php

require_once 'hamcrest.php';
set_include_path(
'hamcrest-php/hamcrest' . PATH_SEPARATOR .
get_include_path()
);

assertThat('a', equalToIgnoringCase('A'));
require_once 'hamcrest.php';

?>
assertThat('a', equalToIgnoringCase('A'));
```

hamcrest.php uses global function names. If you really need namespaced ones
(which won't look as fluent), include "hamcrest/Hamcrest/Matchers.php" and
"hamcrest/Hamcrest/MatcherAssert.php".

<?php

set_include_path(
'hamcrest-php/hamcrest' . PATH_SEPARATOR .
get_include_path()
);
```php
<?php

require_once 'hamcrest/Hamcrest/MatcherAssert.php';
require_once 'hamcrest/Hamcrest/Matchers.php';
set_include_path(
'hamcrest-php/hamcrest' . PATH_SEPARATOR .
get_include_path()
);

Hamcrest_MatcherAssert::assertThat('a', Hamcrest_Matchers::equalToIgnoringCase('A'));
require_once 'hamcrest/Hamcrest/MatcherAssert.php';
require_once 'hamcrest/Hamcrest/Matchers.php';

?>
Hamcrest_MatcherAssert::assertThat('a', Hamcrest_Matchers::equalToIgnoringCase('A'));
```

PEAR Package
------------

You can now install Hamcrest using PEAR. Note that the channel is lowercase
while the package is uppercase.

> pear channel-discover hamcrest.googlecode.com/svn/pear
> pear install hamcrest/Hamcrest
```cli
> pear channel-discover hamcrest.googlecode.com/svn/pear
> pear install hamcrest/Hamcrest
```

Assuming you have PEAR's library installation directory (e.g. /usr/bin/php)
in your global include path, you only need to include hamcrest.php.

<?php

require_once 'Hamcrest/hamcrest.php';

assertThat('a', equalToIgnoringCase('A'));
```php
<?php

?>
require_once 'Hamcrest/hamcrest.php';

assertThat('a', equalToIgnoringCase('A'));
```

** [Unless we consider POPO's (Plain Old PHP Objects) akin to JavaBeans]
- The POPO thing is a joke. Java devs coin the term POJO's (Plain Old
Expand Down

0 comments on commit f3de205

Please sign in to comment.