UuidV5Test.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. declare(strict_types=1);
  3. namespace Ramsey\Uuid\Test\Rfc4122;
  4. use Mockery;
  5. use Ramsey\Uuid\Codec\CodecInterface;
  6. use Ramsey\Uuid\Converter\NumberConverterInterface;
  7. use Ramsey\Uuid\Converter\TimeConverterInterface;
  8. use Ramsey\Uuid\Exception\InvalidArgumentException;
  9. use Ramsey\Uuid\Rfc4122\FieldsInterface;
  10. use Ramsey\Uuid\Rfc4122\UuidV5;
  11. use Ramsey\Uuid\Test\TestCase;
  12. class UuidV5Test extends TestCase
  13. {
  14. /**
  15. * @dataProvider provideTestVersions
  16. */
  17. public function testConstructorThrowsExceptionWhenFieldsAreNotValidForType(int $version): void
  18. {
  19. $fields = Mockery::mock(FieldsInterface::class, [
  20. 'getVersion' => $version,
  21. ]);
  22. $numberConverter = Mockery::mock(NumberConverterInterface::class);
  23. $codec = Mockery::mock(CodecInterface::class);
  24. $timeConverter = Mockery::mock(TimeConverterInterface::class);
  25. $this->expectException(InvalidArgumentException::class);
  26. $this->expectExceptionMessage(
  27. 'Fields used to create a UuidV5 must represent a '
  28. . 'version 5 (named-based, SHA1-hashed) UUID'
  29. );
  30. new UuidV5($fields, $numberConverter, $codec, $timeConverter);
  31. }
  32. /**
  33. * @phpcsSuppress SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingTraversableTypeHintSpecification
  34. */
  35. public function provideTestVersions(): array
  36. {
  37. return [
  38. ['version' => 0],
  39. ['version' => 1],
  40. ['version' => 2],
  41. ['version' => 3],
  42. ['version' => 4],
  43. ['version' => 6],
  44. ['version' => 7],
  45. ['version' => 8],
  46. ['version' => 9],
  47. ];
  48. }
  49. }