mirror of
https://github.com/archtechx/enums.git
synced 2025-12-12 21:54:04 +00:00
improve Comparable logic
This commit is contained in:
parent
c0a459864b
commit
6f61461c50
4 changed files with 65 additions and 50 deletions
|
|
@ -1,51 +1,44 @@
|
|||
<?php
|
||||
|
||||
it('compare equal enum', function () {
|
||||
expect(Status::PENDING->is(Status::PENDING))
|
||||
->toBeTrue()
|
||||
->and(Status::PENDING->is(Status::DONE))
|
||||
->toBeFalse()
|
||||
->and(Role::ADMIN->is(Role::ADMIN))
|
||||
->toBeTrue()
|
||||
->and(Role::ADMIN->is(Role::GUEST))
|
||||
->toBeFalse()
|
||||
->and(Role::ADMIN->is('admin'))
|
||||
->toBeFalse();
|
||||
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('compare not equal enum', function () {
|
||||
expect(Status::PENDING->isNot(Status::DONE))
|
||||
->toBeTrue()
|
||||
->and(Status::PENDING->isNot(Status::PENDING))
|
||||
->toBeFalse()
|
||||
->and(Status::PENDING->isNot(Role::ADMIN))
|
||||
->toBeTrue()
|
||||
->and(Role::ADMIN->isNot(Role::GUEST))
|
||||
->toBeTrue()
|
||||
->and(Role::ADMIN->isNot(Role::ADMIN))
|
||||
->toBeFalse()
|
||||
->and(Role::ADMIN->isNot('admin'))
|
||||
->toBeTrue();
|
||||
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('compare in enums', function () {
|
||||
expect(Status::PENDING->in([Status::PENDING, Status::DONE]))
|
||||
->toBeTrue()
|
||||
->and(Status::PENDING->in([Status::DONE]))
|
||||
->toBeFalse()
|
||||
->and(Status::PENDING->in([Role::ADMIN, Role::GUEST]))
|
||||
->toBeFalse()
|
||||
->and(Role::ADMIN->in([Role::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('compare not in enums', function () {
|
||||
expect(Status::PENDING->notIn([Status::DONE]))
|
||||
->toBeTrue()
|
||||
->and(Status::PENDING->notIn([Status::PENDING, Status::DONE]))
|
||||
->toBeFalse()
|
||||
->and(Role::ADMIN->notIn([Role::GUEST]))
|
||||
->toBeTrue()
|
||||
->and(Role::ADMIN->notIn([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();
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue