value) ->toBe($validUuid) ->and((string) $entityId)->toBe($validUuid); }); it('throws a DomainException when instantiated with an empty string', function (): void { // GIVEN $invalidUuid = ''; // WHEN & THEN expect(fn () => new readonly class ($invalidUuid) extends EntityId { })->toThrow(\DomainException::class); }); it('correctly compares equality for identical and distinct instances', function (): void { // GIVEN $classA1 = new DummyEntityIdA('uuid-1'); $classA2 = new DummyEntityIdA('uuid-1'); $classA3 = new DummyEntityIdA('uuid-2'); $classB = new DummyEntityIdB('uuid-1'); // WHEN & THEN expect($classA1->equals($classA2))->toBeTrue() ->and($classA1->equals($classA3))->toBeFalse() ->and($classA1->equals($classB))->toBeFalse() ->and($classB->equals($classA1))->toBeFalse() ->and($classA1->equals('uuid-1'))->toBeFalse() ->and($classA1->equals(null))->toBeFalse(); }); });