2017 © Pedro Peláez
 

library php-ensurance

php ensurance

image

dgame/php-ensurance

php ensurance

  • Tuesday, May 15, 2018
  • by Dgame
  • Repository
  • 1 Watchers
  • 0 Stars
  • 17,901 Installations
  • PHP
  • 8 Dependents
  • 0 Suggesters
  • 0 Forks
  • 2 Open issues
  • 18 Versions
  • 18 % Grown

The README.md

php-ensurance

CircleCI Scrutinizer Code Quality Code Coverage Build Status StyleCI, (*1)

design by contract for PHP

If your check fails, an Exception is thrown, (*2)

Strings

equality

ensure('foo')->isString()->isEqualTo('foo');
ensure('foo')->isString()->isNotEqualTo('bar');

pattern

ensure('test@foo')->isString()->matches('#^[a-z]+@\w{3}$#i');
ensure('FooBar')->isString()->beginsWith('Fo');
ensure('FooBar')->isString()->endsWith('ar');

size

ensure('foo')->isString()->hasLengthOf(3);
ensure('foo')->isString()->isShorterThan(4);
ensure('foo')->isString()->isLongerThan(2);

and more, (*3)

Numerics

type check

ensure(42)->isInt();
ensure('42')->isInt();

ensure(4.2)->isFloat();
ensure('4.2')->isFloat();

value check

ensure(42)->isNumeric()->isGreaterThan(23);
ensure(23)->isNumeric()->isLessThan(42);
ensure(42)->isEqualTo(42);

positive / negative

foreach (range(0, 100) as $n) {
    ensure($n)->isPositive();
}
````

```php
foreach (range(-1, -100) as $n) {
    ensure($n)->isNegative();
}

even / odd

for ($i = 0; $i < 42; $i += 2) {
    ensure($i)->isEven();
}
for ($i = 1; $i < 42; $i += 2) {
    ensure($i)->isOdd();
}

between range

ensure(2)->isNumeric()->isBetween(1, 3);

array

check for a key

ensure(['a' => 'b'])->isArray()->hasKey('a');

check for a value

ensure(['a', 'b'])->isArray()->hasValue('a');

check length

ensure([])->isArray()->hasLengthOf(0);
ensure(range(0, 99))->isArray()->hasLengthOf(100);
ensure([1, 2, 3])->isArray()->isShorterThan(4);
ensure([1, 2, 3])->isArray()->isLongerThan(2);

check if associativ or not

ensure(['a' => 'b'])->isArray()->isAssociative();

ensure not empty / not null

ensure('')->isNotNull()->isNotEmpty();

ensure identity (===) / equality (==)

ensure(42)->isEqualTo('42');
ensure(42)->isIdenticalTo(42);

bool

is true / false

ensure((2 * 3) === (3 * 2))->isTrue();
ensure((2 * 3) === (3 * 3))->isFalse();

You can also specify your own Exception messages:, (*4)

ensure(1 === 1)->isTrue()->orThrow('You will never see this error');

Enforcement

If you want to enforce that some condition is true, use enforce:, (*5)

enforce(true)->orThrow('That is not true...');

If you don't specify a Throwable, an AssertionError will be used:, (*6)

enforce(0); // throws AssertionError

Expectations

Bind expectations to your values and offer default values if the expectation don't apply. You can either use else or then to evaluate if an Throwable was thrown. The usage of else or then will disregard and invalidate the Throwable internally:, (*7)

$this->assertEquals('foo', ensure(42)->isEven()->then('foo'));
$this->assertEquals(23, ensure(42)->isOdd()->else(23));

also you can use either ... or to set values for both outcomes:, (*8)

$this->assertTrue(ensure(42)->isOdd()->either(false)->or(true));
$this->assertFalse(ensure(23)->isOdd()->either(false)->or(true));

The Versions

15/05 2018

dev-master

9999999-dev https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

 

The Development Requires

assertion ensurance enforcement design by contract

15/05 2018

v2.1.0

2.1.0.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

 

The Development Requires

assertion ensurance enforcement design by contract

04/04 2018

v2.0.0

2.0.0.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php ^7

 

The Development Requires

assertion ensurance enforcement design by contract

30/03 2018

2.0.x-dev

2.0.9999999.9999999-dev https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php ^7

 

The Development Requires

assertion ensurance enforcement design by contract

23/11 2017

v1.1.0

1.1.0.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php ^7

 

The Development Requires

assertion ensurance enforcement design by contract

22/11 2017

v1.0.0

1.0.0.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php ^7

 

The Development Requires

assertion ensurance enforcement design by contract

01/05 2017

v0.5.1

0.5.1.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

assertion ensurance enforcement design by contract

03/04 2017

v0.5.0

0.5.0.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

assertion ensurance enforcement design by contract

10/01 2017

v0.4.0

0.4.0.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

assertion ensurance enforcement design by contract

13/10 2016

v0.3.3

0.3.3.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

assertion ensurance enforcement design by contract

27/09 2016

v0.3.2

0.3.2.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

assertion ensurance enforcement design by contract

18/09 2016

v0.3.1

0.3.1.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

assertion ensurance enforcement design by contract

12/09 2016

v0.3.0

0.3.0.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

assertion ensurance enforcement design by contract

09/09 2016

v0.2.2

0.2.2.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

assertion ensurance enforcement design by contract

09/09 2016

v0.2.1

0.2.1.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

assertion ensurance enforcement design by contract

09/09 2016

v0.2.0

0.2.0.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

assertion ensurance enforcement design by contract

12/08 2016

v0.1.1

0.1.1.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

assertion ensurance enforcement design by contract

11/08 2016

v0.1.0

0.1.0.0 https://github.com/php-ensurance

php ensurance

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

assertion ensurance enforcement design by contract