diff --git a/src/Expectation.php b/src/Expectation.php index 1b5d1f03..fabc51f8 100644 --- a/src/Expectation.php +++ b/src/Expectation.php @@ -205,6 +205,16 @@ final class Expectation return $this; } + /** + * Asserts that the value is truthy. + */ + public function toBeTruthy(): Expectation + { + Assert::assertTrue((bool) $this->value); + + return $this; + } + /** * Asserts that the value is false. */ @@ -215,6 +225,16 @@ final class Expectation return $this; } + /** + * Asserts that the value is falsy. + */ + public function toBeFalsy(): Expectation + { + Assert::assertFalse((bool) $this->value); + + return $this; + } + /** * Asserts that the value is greater than $expected. * diff --git a/tests/Features/Expect/ToBeFalsy.php b/tests/Features/Expect/ToBeFalsy.php new file mode 100644 index 00000000..761e9cc1 --- /dev/null +++ b/tests/Features/Expect/ToBeFalsy.php @@ -0,0 +1,26 @@ +toBeFalsy(); + expect('')->toBeFalsy(); + expect(null)->toBeFalsy(); + expect([])->toBeFalsy(); + expect(0)->toBeFalsy(); + expect('0')->toBeFalsy(); + + expect(true)->not->toBeFalsy(); + expect([1])->not->toBeFalsy(); + expect('false')->not->toBeFalsy(); + expect(1)->not->toBeFalsy(); + expect(-1)->not->toBeFalsy(); +}); + +test('failures', function () { + expect(1)->toBeFalsy(); +})->throws(ExpectationFailedException::class); + +test('not failures', function () { + expect(null)->not->toBeFalsy(); +})->throws(ExpectationFailedException::class); diff --git a/tests/Features/Expect/ToBeTruthy.php b/tests/Features/Expect/ToBeTruthy.php new file mode 100644 index 00000000..710bd2df --- /dev/null +++ b/tests/Features/Expect/ToBeTruthy.php @@ -0,0 +1,26 @@ +toBeTruthy(); + expect([1])->toBeTruthy(); + expect('false')->toBeTruthy(); + expect(1)->toBeTruthy(); + expect(-1)->toBeTruthy(); + + expect(false)->not->toBeTruthy(); + expect('')->not->toBeTruthy(); + expect(null)->not->toBeTruthy(); + expect([])->not->toBeTruthy(); + expect(0)->not->toBeTruthy(); + expect('0')->not->toBeTruthy(); +}); + +test('failures', function () { + expect(null)->toBeTruthy(); +})->throws(ExpectationFailedException::class); + +test('not failures', function () { + expect(1)->not->toBeTruthy(); +})->throws(ExpectationFailedException::class);