UuidV8Test.php 1.6 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\UuidV8;
  11. use Ramsey\Uuid\Test\TestCase;
  12. class UuidV8Test 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 UuidV8 must represent a '
  28. . 'version 8 (custom) UUID'
  29. );
  30. new UuidV8($fields, $numberConverter, $codec, $timeConverter);
  31. }
  32. /**
  33. * @return array<array{version: int}>
  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' => 5],
  44. ['version' => 6],
  45. ['version' => 7],
  46. ['version' => 9],
  47. ];
  48. }
  49. }