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()); } }