feat: add new BinaryUtils::applyVersionAndVariant() method

This commit is contained in:
Ben Ramsey
2022-08-12 21:10:05 -05:00
parent bbaac68b2b
commit da8b9aba80
4 changed files with 164 additions and 19 deletions
+121
View File
@@ -8,7 +8,9 @@ use Ramsey\Uuid\BinaryUtils;
use Ramsey\Uuid\Rfc4122\Version;
use Ramsey\Uuid\Variant;
use function bin2hex;
use function dechex;
use function hex2bin;
class BinaryUtilsTest extends TestCase
{
@@ -30,6 +32,19 @@ class BinaryUtilsTest extends TestCase
$this->assertSame($expectedHex, dechex(BinaryUtils::applyVariant($clockSeq, $variant)));
}
/**
* @param non-empty-string $bytes
*
* @dataProvider provideVersionAndVariantTestValues
*/
public function testApplyVersionAndVariant(
string $bytes,
Version $version,
string $expectedHex
): void {
$this->assertSame($expectedHex, bin2hex(BinaryUtils::applyVersionAndVariant($bytes, $version)));
}
/**
* @return array<array{timeHi: int, version: Version, expectedInt: int, expectedHex: string}>
*/
@@ -66,6 +81,24 @@ class BinaryUtilsTest extends TestCase
'expectedInt' => 21481,
'expectedHex' => '53e9',
],
[
'timeHi' => 1001,
'version' => Version::ReorderedTime,
'expectedInt' => 25577,
'expectedHex' => '63e9',
],
[
'timeHi' => 1001,
'version' => Version::UnixTime,
'expectedInt' => 29673,
'expectedHex' => '73e9',
],
[
'timeHi' => 1001,
'version' => Version::Custom,
'expectedInt' => 33769,
'expectedHex' => '83e9',
],
[
'timeHi' => 65535,
'version' => Version::Time,
@@ -96,6 +129,24 @@ class BinaryUtilsTest extends TestCase
'expectedInt' => 24575,
'expectedHex' => '5fff',
],
[
'timeHi' => 65535,
'version' => Version::ReorderedTime,
'expectedInt' => 28671,
'expectedHex' => '6fff',
],
[
'timeHi' => 65535,
'version' => Version::UnixTime,
'expectedInt' => 32767,
'expectedHex' => '7fff',
],
[
'timeHi' => 65535,
'version' => Version::Custom,
'expectedInt' => 36863,
'expectedHex' => '8fff',
],
[
'timeHi' => 0,
'version' => Version::Time,
@@ -126,6 +177,24 @@ class BinaryUtilsTest extends TestCase
'expectedInt' => 20480,
'expectedHex' => '5000',
],
[
'timeHi' => 0,
'version' => Version::ReorderedTime,
'expectedInt' => 24576,
'expectedHex' => '6000',
],
[
'timeHi' => 0,
'version' => Version::UnixTime,
'expectedInt' => 28672,
'expectedHex' => '7000',
],
[
'timeHi' => 0,
'version' => Version::Custom,
'expectedInt' => 32768,
'expectedHex' => '8000',
],
];
}
@@ -257,4 +326,56 @@ class BinaryUtilsTest extends TestCase
],
];
}
/**
* @return array<array{bytes: non-empty-string, version: Version, expectedHex: non-empty-string}>
*/
public function provideVersionAndVariantTestValues(): array
{
/** @var non-empty-string $bytes */
$bytes = hex2bin('426a25b74e975e743af1700fa4e42455');
return [
[
'bytes' => $bytes,
'version' => Version::Time,
'expectedHex' => '426a25b74e971e74baf1700fa4e42455',
],
[
'bytes' => $bytes,
'version' => Version::DceSecurity,
'expectedHex' => '426a25b74e972e74baf1700fa4e42455',
],
[
'bytes' => $bytes,
'version' => Version::HashMd5,
'expectedHex' => '426a25b74e973e74baf1700fa4e42455',
],
[
'bytes' => $bytes,
'version' => Version::Random,
'expectedHex' => '426a25b74e974e74baf1700fa4e42455',
],
[
'bytes' => $bytes,
'version' => Version::HashSha1,
'expectedHex' => '426a25b74e975e74baf1700fa4e42455',
],
[
'bytes' => $bytes,
'version' => Version::ReorderedTime,
'expectedHex' => '426a25b74e976e74baf1700fa4e42455',
],
[
'bytes' => $bytes,
'version' => Version::UnixTime,
'expectedHex' => '426a25b74e977e74baf1700fa4e42455',
],
[
'bytes' => $bytes,
'version' => Version::Custom,
'expectedHex' => '426a25b74e978e74baf1700fa4e42455',
],
];
}
}