From 66cbac5d209e717661e486388ba59ec5e3368cc9 Mon Sep 17 00:00:00 2001 From: Yulian Kuncheff Date: Fri, 29 Mar 2024 15:27:08 -0700 Subject: [PATCH] Revert RNG changes that didnt fix anything --- lib/rng.dart | 15 +-------------- lib/v1.dart | 3 +-- lib/v4.dart | 2 +- lib/v6.dart | 3 +-- lib/v7.dart | 2 +- lib/v8.dart | 2 +- test/uuid_test.dart | 20 ++++++++++---------- 7 files changed, 16 insertions(+), 31 deletions(-) diff --git a/lib/rng.dart b/lib/rng.dart index f9c0ec6..260bf57 100644 --- a/lib/rng.dart +++ b/lib/rng.dart @@ -27,20 +27,7 @@ abstract class RNG { class MathRNG extends RNG { final Random _rnd; - factory MathRNG.fromSeed({int? seed}) { - Random rnd = seed == null ? Random() : Random(seed); - return MathRNG._internal(rnd); - } - - factory MathRNG.fromRandom({Random? rnd}) { - return MathRNG._internal(rnd ?? Random()); - } - - factory MathRNG.noSeed() { - return MathRNG._internal(Random()); - } - - const MathRNG._internal(this._rnd); + MathRNG({int? seed}) : _rnd = Random(seed); @override Uint8List generateInternal() { diff --git a/lib/v1.dart b/lib/v1.dart index 7e2331d..1cdf0a0 100644 --- a/lib/v1.dart +++ b/lib/v1.dart @@ -12,8 +12,7 @@ class UuidV1 { /// Primarily sets up the seedBytes then generates the node id and clockseq void _init() { if (V1State.initialized) return; - Uint8List seedBytes = - goptions?.rng?.generate() ?? MathRNG.noSeed().generate(); + Uint8List seedBytes = goptions?.rng?.generate() ?? MathRNG().generate(); // Per 4.5, create a 48-bit node id (47 random bits + multicast bit = 1) List nodeId = [ diff --git a/lib/v4.dart b/lib/v4.dart index dec3821..4ba73ed 100644 --- a/lib/v4.dart +++ b/lib/v4.dart @@ -22,7 +22,7 @@ class UuidV4 { List rng = options?.rng?.generate() ?? goptions?.rng?.generate() ?? options?.rng?.generate() ?? - MathRNG.noSeed().generate(); + MathRNG().generate(); // Use provided values over RNG List rnds = options?.random ?? rng; diff --git a/lib/v6.dart b/lib/v6.dart index c075744..5d83aab 100644 --- a/lib/v6.dart +++ b/lib/v6.dart @@ -16,8 +16,7 @@ class UuidV6 { /// Primarily sets up the seedBytes then generates the node id and clockseq void _init() { if (V6State.initialized) return; - Uint8List seedBytes = - goptions?.rng?.generate() ?? MathRNG.noSeed().generate(); + Uint8List seedBytes = goptions?.rng?.generate() ?? MathRNG().generate(); // Per 4.5, create a 48-bit node id (47 random bits + multicast bit = 1) List nodeId = [ diff --git a/lib/v7.dart b/lib/v7.dart index d7ee034..a3fe126 100644 --- a/lib/v7.dart +++ b/lib/v7.dart @@ -34,7 +34,7 @@ class UuidV7 { buf.setAll(0, timeList48); List randomBytes = options?.randomBytes ?? - (goptions?.rng?.generate() ?? MathRNG.noSeed().generate()); + (goptions?.rng?.generate() ?? MathRNG().generate()); buf.setRange(6, 16, randomBytes); buf.setRange(6, 7, [buf.getRange(6, 7).last & 0x0f | 0x70]); diff --git a/lib/v8.dart b/lib/v8.dart index 048548c..fe986e9 100644 --- a/lib/v8.dart +++ b/lib/v8.dart @@ -56,7 +56,7 @@ class UuidV8 { 5, 6, UuidParsing.parseHexToBytes(sprintf('0x%02i', [time.minute]))); var randomBytes = options?.randomBytes ?? - (goptions?.rng?.generate() ?? MathRNG.noSeed().generate()); + (goptions?.rng?.generate() ?? MathRNG().generate()); buf.setRange(6, 16, randomBytes); buf.setRange(6, 7, [buf.getRange(6, 7).last & 0x0f | 0x80]); diff --git a/test/uuid_test.dart b/test/uuid_test.dart index 935a4ef..fecdfe5 100644 --- a/test/uuid_test.dart +++ b/test/uuid_test.dart @@ -8,7 +8,7 @@ import 'package:uuid/uuid.dart'; import 'package:uuid/rng.dart'; void main() { - var uuid = Uuid(); + var uuid = const Uuid(); const testTime = 1321644961388; group('[Version 1 Tests]', () { @@ -118,7 +118,7 @@ void main() { group('[Version 4 Tests]', () { test('Check if V4 is consistent using a static seed', () { var u0 = uuid.v4(options: { - 'rng': MathRNG.fromSeed(seed: 1), + 'rng': MathRNG(seed: 1), }); var u1 = 'a462502a-73af-4e41-bfc4-05957b7030dd'; expect(u0, equals(u1)); @@ -127,7 +127,7 @@ void main() { test('Consistency check with buffer', () { var buffer = Uint8List(16); uuid.v4buffer(buffer, options: { - 'rng': MathRNG.fromSeed(seed: 1), + 'rng': MathRNG(seed: 1), }); var u1 = 'a462502a-73af-4e41-bfc4-05957b7030dd'; @@ -136,10 +136,10 @@ void main() { test('Using Objects', () { var regular = uuid.v4(options: { - 'rng': MathRNG.fromSeed(seed: 1), + 'rng': MathRNG(seed: 1), }); var obj = uuid.v4obj(options: { - 'rng': MathRNG.fromSeed(seed: 1), + 'rng': MathRNG(seed: 1), }); expect(obj.uuid, equals(regular)); @@ -185,7 +185,7 @@ void main() { var numDuplicates = 0; for (var i = 0; i < numToGenerate; i++) { - final uuid = generator.v4(config: V4Options(null, MathRNG.noSeed())); + final uuid = generator.v4(); if (!values.contains(uuid)) { values.add(uuid); @@ -359,7 +359,7 @@ void main() { }); test('Explicit options produce expected id', () { - final rand = MathRNG.fromSeed(seed: 1).generate(); + final rand = MathRNG(seed: 1).generate(); var options = V7Options(1321651533573, rand); var id = uuid.v7(config: options); @@ -395,7 +395,7 @@ void main() { test('Using buffers', () { var buffer = Uint8List(16); - final rand = MathRNG.fromSeed(seed: 1).generate(); + final rand = MathRNG(seed: 1).generate(); var options = V7Options(testTime, rand); var wihoutBuffer = uuid.v7(config: options); @@ -405,7 +405,7 @@ void main() { }); test('Using Objects', () { - final rand = MathRNG.fromSeed(seed: 1).generate(); + final rand = MathRNG(seed: 1).generate(); var options = V7Options(testTime, rand); var regular = uuid.v7(config: options); @@ -601,7 +601,7 @@ void main() { ], }.entries) { test(testCase.key, () { - final rand = MathRNG.fromSeed(seed: 1).generate(); + final rand = MathRNG(seed: 1).generate(); final uuid = Uuid().v8(config: V8Options(testCase.value[0] as DateTime, rand)); expect(uuid.toUpperCase(), equals(testCase.value[1]));