12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- declare(strict_types=1);
- namespace Ramsey\Uuid\Test\Nonstandard;
- use Ramsey\Uuid\Exception\InvalidArgumentException;
- use Ramsey\Uuid\Nonstandard\Fields;
- use Ramsey\Uuid\Test\TestCase;
- use Ramsey\Uuid\Type\Hexadecimal;
- use Ramsey\Uuid\Uuid;
- use function hex2bin;
- use function serialize;
- use function str_replace;
- use function unserialize;
- class FieldsTest extends TestCase
- {
- public function testConstructorThrowsExceptionIfNotSixteenByteString(): void
- {
- $this->expectException(InvalidArgumentException::class);
- $this->expectExceptionMessage(
- 'The byte string must be 16 bytes long; received 6 bytes'
- );
- new Fields('foobar');
- }
- /**
- * @param string|int $expectedValue
- *
- * @dataProvider fieldGetterMethodProvider
- */
- public function testFieldGetterMethods(string $uuid, string $methodName, $expectedValue): void
- {
- $bytes = (string) hex2bin(str_replace('-', '', $uuid));
- $fields = new Fields($bytes);
- $result = $fields->$methodName();
- if ($result instanceof Hexadecimal) {
- $this->assertSame($expectedValue, $result->toString());
- } else {
- $this->assertSame($expectedValue, $result);
- }
- }
- /**
- * @phpcsSuppress SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingTraversableTypeHintSpecification
- */
- public function fieldGetterMethodProvider(): array
- {
- return [
- ['ff6f8cb0-c57d-91e1-0b21-0800200c9a66', 'getClockSeq', '0b21'],
- ['ff6f8cb0-c57d-91e1-0b21-0800200c9a66', 'getClockSeqHiAndReserved', '0b'],
- ['ff6f8cb0-c57d-91e1-0b21-0800200c9a66', 'getClockSeqLow', '21'],
- ['ff6f8cb0-c57d-91e1-0b21-0800200c9a66', 'getNode', '0800200c9a66'],
- ['ff6f8cb0-c57d-91e1-0b21-0800200c9a66', 'getTimeHiAndVersion', '91e1'],
- ['ff6f8cb0-c57d-91e1-0b21-0800200c9a66', 'getTimeLow', 'ff6f8cb0'],
- ['ff6f8cb0-c57d-91e1-0b21-0800200c9a66', 'getTimeMid', 'c57d'],
- ['ff6f8cb0-c57d-91e1-0b21-0800200c9a66', 'getTimestamp', '1e1c57dff6f8cb0'],
- ['ff6f8cb0-c57d-91e1-0b21-0800200c9a66', 'getVariant', Uuid::RESERVED_NCS],
- ['ff6f8cb0-c57d-91e1-0b21-0800200c9a66', 'getVersion', null],
- ['ff6f8cb0-c57d-91e1-0b21-0800200c9a66', 'isNil', false],
- ['ff6f8cb0-c57d-91e1-0b21-0800200c9a66', 'isMax', false],
- ];
- }
- public function testSerializingFields(): void
- {
- $bytes = (string) hex2bin(str_replace('-', '', 'ff6f8cb0-c57d-91e1-0b21-0800200c9a66'));
- $fields = new Fields($bytes);
- $serializedFields = serialize($fields);
- /** @var Fields $unserializedFields */
- $unserializedFields = unserialize($serializedFields);
- $this->assertSame($fields->getBytes(), $unserializedFields->getBytes());
- }
- }
|