Skip to content

Commit 1d54cd9

Browse files
committed
test: update v7, v4 tests
1 parent 818a130 commit 1d54cd9

22 files changed

+565
-879
lines changed

example/example.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import 'package:uuid_plus/data.dart';
2-
import 'package:uuid_plus/rng.dart';
3-
import 'package:uuid_plus/uuid.dart';
1+
import 'package:uuid_plus/src/data.dart';
2+
import 'package:uuid_plus/src/rng.dart';
3+
import 'package:uuid_plus/src/uuid.dart';
44

55
void main() {
66
var uuid = Uuid();
File renamed without changes.

lib/data.dart lib/src/data.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import 'package:uuid_plus/rng.dart';
1+
import 'package:uuid_plus/src/rng.dart';
22

33
/// [GlobalOptions] stores the global options passed into the library on instantiation.
44
/// [GlobalOptions.rng] is the random number generator class to use. Defaults to CryptoRNG() [CryptoRNG]

lib/enums.dart lib/src/enums.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// ignore_for_file: constant_identifier_names
22

3-
import 'package:uuid_plus/constants.dart';
4-
import 'package:uuid_plus/uuid.dart';
3+
import 'package:uuid_plus/src/constants.dart';
4+
import 'package:uuid_plus/src/uuid.dart';
55

66
/// The options for UUID Validation strictness
77
enum ValidationMode { nonStrict, strictRFC4122 }

lib/src/internal/v7_legacy.dart

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// ========================================================================
2+
// WARNING: THIS FILE IS FOR DEMONSTRATION PURPOSES ONLY
3+
// AND WILL BE CAN BE REMOVED IN A FUTURE VERSION
4+
// ========================================================================
5+
//
6+
// The UuidV7Legacy class in this file demonstrates the flawed implementation
7+
// from the initial version of the library. It is kept ONLY to show how the
8+
// same UUID generation code produces different results on web (JavaScript)
9+
// versus native platforms due to differences in number handling.
10+
//
11+
// DO NOT USE THIS IN PRODUCTION CODE.
12+
//
13+
// For production code, always use the proper UuidV7 implementation:
14+
//
15+
// import 'package:uuid_plus/v7.dart';
16+
//
17+
// This version correctly uses fixnum's Int64 for consistent behavior across
18+
// all platforms.
19+
// ========================================================================
20+
21+
import 'dart:math';
22+
import 'dart:typed_data';
23+
24+
import 'package:uuid_plus/src/data.dart';
25+
26+
import '../parsing.dart';
27+
28+
class UuidV7Legacy {
29+
final GlobalOptions? goptions;
30+
31+
const UuidV7Legacy({this.goptions});
32+
33+
/// v7() Generates a time-based version 7 UUID
34+
///
35+
/// By default it will generate a string based off current time in Unix Epoch,
36+
/// and will return a string.
37+
///
38+
/// The first argument is an options map that takes various configuration
39+
/// options detailed in the readme.
40+
///
41+
/// https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis#name-uuid-version-7
42+
String generate({V7Options? options}) {
43+
var buf = Uint8List(16);
44+
int time = options?.time ?? DateTime.timestamp().millisecondsSinceEpoch;
45+
46+
var timeList48 = Uint8List.fromList([
47+
time ~/ pow(2, 40),
48+
time ~/ pow(2, 32),
49+
time ~/ pow(2, 24),
50+
time ~/ pow(2, 16),
51+
time ~/ pow(2, 8),
52+
time
53+
]);
54+
55+
buf.setAll(0, timeList48);
56+
List<int> randomBytes = options?.randomBytes ??
57+
(goptions?.rng?.generate() ?? V7State.random.generate());
58+
59+
buf.setRange(6, 16, randomBytes);
60+
buf.setRange(6, 7, [buf.getRange(6, 7).last & 0x0f | 0x70]);
61+
buf.setRange(8, 9, [buf.getRange(8, 9).last & 0x3f | 0x80]);
62+
63+
return UuidParsing.unparse(buf);
64+
}
65+
}
File renamed without changes.

lib/rng.dart lib/src/rng.dart

File renamed without changes.

lib/uuid.dart lib/src/uuid.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ library;
77

88
import 'dart:typed_data';
99

10-
import 'package:uuid_plus/data.dart';
11-
import 'package:uuid_plus/rng.dart';
12-
import 'package:uuid_plus/validation.dart';
10+
import 'package:uuid_plus/src/data.dart';
11+
import 'package:uuid_plus/src/rng.dart';
12+
import 'package:uuid_plus/src/validation.dart';
1313

1414
import 'enums.dart';
1515
import 'parsing.dart';

lib/uuid_value.dart lib/src/uuid_value.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'dart:typed_data';
22

33
import 'package:meta/meta.dart';
4-
import 'package:uuid_plus/constants.dart';
4+
import 'package:uuid_plus/src/constants.dart';
55

66
import 'parsing.dart';
77
import 'uuid.dart';

lib/v1.dart lib/src/v1.dart

File renamed without changes.

lib/v4.dart lib/src/v4.dart

File renamed without changes.

lib/v5.dart lib/src/v5.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import 'dart:convert';
44

55
import 'package:crypto/crypto.dart' as crypto;
6-
import 'package:uuid_plus/data.dart';
6+
import 'package:uuid_plus/src/data.dart';
77

88
import 'enums.dart';
99
import 'parsing.dart';

lib/v6.dart lib/src/v6.dart

File renamed without changes.

lib/v7.dart lib/src/v7.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'dart:typed_data';
22

33
import 'package:fixnum/fixnum.dart';
4-
import 'package:uuid_plus/data.dart';
4+
import 'package:uuid_plus/src/data.dart';
55

66
import 'parsing.dart';
77

lib/v8.dart lib/src/v8.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'dart:typed_data';
22

3-
import 'package:uuid_plus/data.dart';
3+
import 'package:uuid_plus/src/data.dart';
44

55
import 'parsing.dart';
66

lib/v8generic.dart lib/src/v8generic.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'dart:typed_data';
22

3-
import 'package:uuid_plus/data.dart';
3+
import 'package:uuid_plus/src/data.dart';
44

55
import 'parsing.dart';
66

File renamed without changes.

lib/uuid_plus.dart

+15-15
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@
44
/// Simple, fast generation of RFC4122 and RFC9562 UUIDs.
55
library uuid_plus;
66

7-
export 'constants.dart';
8-
export 'data.dart';
9-
export 'enums.dart';
10-
export 'parsing.dart';
11-
export 'rng.dart';
12-
export 'uuid.dart';
13-
export 'uuid_value.dart';
14-
export 'v1.dart';
15-
export 'v4.dart';
16-
export 'v5.dart';
17-
export 'v6.dart';
18-
export 'v7.dart';
19-
export 'v8.dart';
20-
export 'v8generic.dart';
21-
export 'validation.dart';
7+
export 'src/constants.dart';
8+
export 'src/data.dart';
9+
export 'src/enums.dart';
10+
export 'src/parsing.dart';
11+
export 'src/rng.dart';
12+
export 'src/uuid.dart';
13+
export 'src/uuid_value.dart';
14+
export 'src/v1.dart';
15+
export 'src/v4.dart';
16+
export 'src/v5.dart';
17+
export 'src/v6.dart';
18+
export 'src/v7.dart';
19+
export 'src/v8.dart';
20+
export 'src/v8generic.dart';
21+
export 'src/validation.dart';

0 commit comments

Comments
 (0)