1
0
Fork 0
mirror of https://github.com/archtechx/enums.git synced 2025-12-12 14:34:05 +00:00
enums/tests/Pest/ComparableTest.php
Thai Nguyen Hung f0ea4c36c8
Comparable enum (#20)
* feat: comparable enum

* test: comparable enum

* ci: php-cs-fixer in repository scope

* chore: add `Comparable` usage in README

* ci: globally use `php-cs-fixer`

* improve Comparable logic

* test more PHP versions in CI

* update ci job name

* remove class name quoting in exceptions to match PHP behavior

* migrate pest config

* add comment to test

---------

Co-authored-by: Samuel Štancl <samuel@archte.ch>
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
2024-01-12 22:02:32 +01:00

44 lines
1.8 KiB
PHP

<?php
test('the is method checks for equality', function () {
expect(Status::PENDING->is(Status::PENDING))->toBeTrue();
expect(Status::PENDING->is(Status::DONE))->toBeFalse();
expect(Role::ADMIN->is(Role::ADMIN))->toBeTrue();
expect(Role::ADMIN->is(Role::GUEST))->toBeFalse();
expect(Role::ADMIN->is('admin'))->toBeFalse();
});
it('the isNot method checks for inequality', function () {
expect(Status::PENDING->isNot(Status::DONE))->toBeTrue();
expect(Status::PENDING->isNot(Status::PENDING))->toBeFalse();
expect(Status::PENDING->isNot(Role::ADMIN))->toBeTrue();
expect(Role::ADMIN->isNot(Role::GUEST))->toBeTrue();
expect(Role::ADMIN->isNot(Role::ADMIN))->toBeFalse();
expect(Role::ADMIN->isNot('admin'))->toBeTrue();
});
it('the in method checks for presence in an array', function () {
expect(Status::PENDING->in([Status::PENDING, Status::DONE]))->toBeTrue();
expect(Role::ADMIN->in([Role::ADMIN]))->toBeTrue();
expect(Status::PENDING->in([Status::DONE]))->toBeFalse();
expect(Status::PENDING->in([Role::ADMIN, Role::GUEST]))->toBeFalse();
});
it('the not in method checks for absence in an array', function () {
expect(Status::PENDING->notIn([Status::DONE]))->toBeTrue();
expect(Role::ADMIN->notIn([Role::GUEST]))->toBeTrue();
expect(Status::PENDING->notIn([Status::PENDING, Status::DONE]))->toBeFalse();
expect(Role::ADMIN->notIn([Role::ADMIN, Role::GUEST]))->toBeFalse();
});
test('the in and notIn methods work with Laravel collections', function () {
expect(Status::PENDING->in(collect([Status::PENDING, Status::DONE])))->toBeTrue();
expect(Role::ADMIN->in(collect([Status::PENDING, Role::GUEST])))->toBeFalse();
expect(Status::DONE->notIn(collect([Status::PENDING])))->toBeTrue();
expect(Role::ADMIN->notIn(collect([Role::ADMIN, Status::PENDING])))->toBeFalse();
});