diff --git a/src/Expectation.php b/src/Expectation.php index 2afe4088..7da35974 100644 --- a/src/Expectation.php +++ b/src/Expectation.php @@ -52,6 +52,101 @@ final class Expectation return $this; } + /** + * Assert that value is false. + */ + public function toBeFalse() + { + Assert::assertFalse($this->value); + + return $this; + } + + /** + * Assert that value is greater than expected one. + * + * @param int|float $value + */ + public function toBeGreaterThan($value) + { + Assert::assertGreaterThan($value, $this->value); + + return $this; + } + + /** + * Assert that value is greater than or equal to the expected one. + * + * @param int|float $value + */ + public function toBeGreaterThanOrEqual($value) + { + Assert::assertGreaterThanOrEqual($value, $this->value); + + return $this; + } + + /** + * Assert that value is less than or equal to the expected one. + * + * @param int|float $value + */ + public function toBeLessThan($value) + { + Assert::assertLessThan($value, $this->value); + + return $this; + } + + /** + * Assert that value is less than the expected one. + * + * @param int|float $value + */ + public function toBeLessThanOrEqual($value) + { + Assert::assertLessThanOrEqual($value, $this->value); + + return $this; + } + + /** + * Assert that needles is an element of value. + * + * @param mixed $needle + */ + public function toContain($needle) + { + Assert::assertContains($needle, $this->value); + + return $this; + } + + /** + * Assert that needles is a substring of value. + * + * @param string $needle + */ + public function toContainString($needle) + { + Assert::assertStringContainsString($needle, $this->value); + + return $this; + } + + /** + * Assert that needles is a substring of value, ignoring the + * difference in casing. + * + * @param string $needle + */ + public function toContainStringIgnoringCase($needle) + { + Assert::assertStringContainsStringIgnoringCase($needle, $this->value); + + return $this; + } + /** * Dynamically calls methods on the class without any arguments. * diff --git a/tests/Expect/toBeFalse.php b/tests/Expect/toBeFalse.php new file mode 100644 index 00000000..1371c86e --- /dev/null +++ b/tests/Expect/toBeFalse.php @@ -0,0 +1,15 @@ +toBeFalse(); +}); + +test('failures', function () { + expect('')->toBeFalse(); +})->throws(ExpectationFailedException::class); + +test('not failures', function () { + expect(false)->not->toBe(false); +})->throws(ExpectationFailedException::class); diff --git a/tests/Expect/toBeGreatherThan.php b/tests/Expect/toBeGreatherThan.php new file mode 100644 index 00000000..ed840ed6 --- /dev/null +++ b/tests/Expect/toBeGreatherThan.php @@ -0,0 +1,16 @@ +toBeGreaterThan(41); + expect(4)->toBeGreaterThan(3.9); +}); + +test('failures', function () { + expect(4)->toBeGreaterThan(4); +})->throws(ExpectationFailedException::class); + +test('not failures', function () { + expect(5)->not->toBeGreaterThan(4); +})->throws(ExpectationFailedException::class); diff --git a/tests/Expect/toBeGreatherThanOrEqual.php b/tests/Expect/toBeGreatherThanOrEqual.php new file mode 100644 index 00000000..3b1cd029 --- /dev/null +++ b/tests/Expect/toBeGreatherThanOrEqual.php @@ -0,0 +1,16 @@ +toBeGreaterThanOrEqual(41); + expect(4)->toBeGreaterThanOrEqual(4); +}); + +test('failures', function () { + expect(4)->toBeGreaterThanOrEqual(4.1); +})->throws(ExpectationFailedException::class); + +test('not failures', function () { + expect(5)->not->toBeGreaterThanOrEqual(5); +})->throws(ExpectationFailedException::class); diff --git a/tests/Expect/toBeLessThan.php b/tests/Expect/toBeLessThan.php new file mode 100644 index 00000000..08db8545 --- /dev/null +++ b/tests/Expect/toBeLessThan.php @@ -0,0 +1,16 @@ +toBeLessThan(42); + expect(4)->toBeLessThan(5); +}); + +test('failures', function () { + expect(4)->toBeLessThan(4); +})->throws(ExpectationFailedException::class); + +test('not failures', function () { + expect(5)->not->toBeLessThan(6); +})->throws(ExpectationFailedException::class); diff --git a/tests/Expect/toBeLessThanOrEqual.php b/tests/Expect/toBeLessThanOrEqual.php new file mode 100644 index 00000000..c9f00577 --- /dev/null +++ b/tests/Expect/toBeLessThanOrEqual.php @@ -0,0 +1,16 @@ +toBeLessThanOrEqual(42); + expect(4)->toBeLessThanOrEqual(4); +}); + +test('failures', function () { + expect(4)->toBeLessThanOrEqual(3.9); +})->throws(ExpectationFailedException::class); + +test('not failures', function () { + expect(5)->not->toBeLessThanOrEqual(5); +})->throws(ExpectationFailedException::class); diff --git a/tests/Expect/toContain.php b/tests/Expect/toContain.php new file mode 100644 index 00000000..ce477fbf --- /dev/null +++ b/tests/Expect/toContain.php @@ -0,0 +1,15 @@ +toContain(42); +}); + +test('failures', function () { + expect([1, 2, 42])->toContain(3); +})->throws(ExpectationFailedException::class); + +test('not failures', function () { + expect([1, 2, 42])->not->toContain(42); +})->throws(ExpectationFailedException::class); diff --git a/tests/Expect/toContainString.php b/tests/Expect/toContainString.php new file mode 100644 index 00000000..03f55b69 --- /dev/null +++ b/tests/Expect/toContainString.php @@ -0,0 +1,16 @@ +toContainString('world'); + expect('hello world')->not->toContainString('World'); +}); + +test('failures', function () { + expect('hello world')->toContainString('Hello'); +})->throws(ExpectationFailedException::class); + +test('not failures', function () { + expect('hello world')->not->toContainString('hello'); +})->throws(ExpectationFailedException::class); diff --git a/tests/Expect/toContainStringIgnoringCase.php b/tests/Expect/toContainStringIgnoringCase.php new file mode 100644 index 00000000..fc5e1081 --- /dev/null +++ b/tests/Expect/toContainStringIgnoringCase.php @@ -0,0 +1,17 @@ +toContainStringIgnoringCase('world'); + expect('hello world')->toContainStringIgnoringCase('World'); +}); + +test('failures', function () { + expect('hello world')->toContainStringIgnoringCase('hi'); +})->throws(ExpectationFailedException::class); + +test('not failures', function () { + expect('hello world')->not->toContainStringIgnoringCase('Hello'); + expect('hello world')->not->toContainStringIgnoringCase('hello'); +})->throws(ExpectationFailedException::class);