@@ -8,6 +8,28 @@ import 'package:hashlib/codecs.dart';
8
8
import 'package:hashlib/src/uuid.dart' ;
9
9
import 'package:test/test.dart' ;
10
10
11
+ @pragma ('vm:entry-point' )
12
+ void runIsolate (inp) {
13
+ final port = inp[0 ] as SendPort ;
14
+ switch (inp[1 ] as String ) {
15
+ case 'v1' :
16
+ return port.send (uuid.v1 ());
17
+ case 'v3' :
18
+ return port.send (uuid.v3 ());
19
+ case 'v4' :
20
+ return port.send (uuid.v4 ());
21
+ case 'v5' :
22
+ return port.send (uuid.v5 ());
23
+ case 'v6' :
24
+ return port.send (uuid.v6 ());
25
+ case 'v7' :
26
+ return port.send (uuid.v7 ());
27
+ case 'v8' :
28
+ return port.send (uuid.v8 ());
29
+ }
30
+ throw ArgumentError ('Undefined version' );
31
+ }
32
+
11
33
void main () {
12
34
group ('UUID v1' , () {
13
35
test ("known value" , () {
@@ -27,18 +49,18 @@ void main() {
27
49
});
28
50
29
51
test ('uniqueness with isolates' , () async {
30
- final seeds = await Future .wait (List .generate (
31
- 1000 ,
52
+ final receiver = ReceivePort ();
53
+ await Future .wait (List .generate (
54
+ 100 ,
32
55
(_) => Isolate .spawn (
33
- (e) => {} ,
34
- null ,
56
+ runIsolate ,
57
+ [receiver.sendPort, 'v1' ] ,
35
58
errorsAreFatal: true ,
36
- ).then ((value) {
37
- return uuid.v1 ();
38
- }),
59
+ ),
39
60
));
40
- expect (seeds.toSet ().length, 1000 );
41
- }, tags: ['vm-only' ]);
61
+ final items = await receiver.take (100 ).toList ();
62
+ expect (items.toSet ().length, 100 );
63
+ }, tags: ['vm-only' ], timeout: Timeout (Duration (minutes: 5 )));
42
64
});
43
65
44
66
group ('UUID v3' , () {
@@ -58,18 +80,18 @@ void main() {
58
80
});
59
81
60
82
test ('uniqueness with isolates' , () async {
61
- final seeds = await Future .wait (List .generate (
62
- 1000 ,
83
+ final receiver = ReceivePort ();
84
+ await Future .wait (List .generate (
85
+ 100 ,
63
86
(_) => Isolate .spawn (
64
- (e) => {} ,
65
- null ,
87
+ runIsolate ,
88
+ [receiver.sendPort, 'v3' ] ,
66
89
errorsAreFatal: true ,
67
- ).then ((value) {
68
- return uuid.v3 ();
69
- }),
90
+ ),
70
91
));
71
- expect (seeds.toSet ().length, 1000 );
72
- }, tags: ['vm-only' ]);
92
+ final items = await receiver.take (100 ).toList ();
93
+ expect (items.toSet ().length, 100 );
94
+ }, tags: ['vm-only' ], timeout: Timeout (Duration (minutes: 5 )));
73
95
});
74
96
75
97
group ('UUID v4' , () {
@@ -89,18 +111,18 @@ void main() {
89
111
});
90
112
91
113
test ('uniqueness with isolates' , () async {
92
- final seeds = await Future .wait (List .generate (
93
- 1000 ,
114
+ final receiver = ReceivePort ();
115
+ await Future .wait (List .generate (
116
+ 100 ,
94
117
(_) => Isolate .spawn (
95
- (e) => {} ,
96
- null ,
118
+ runIsolate ,
119
+ [receiver.sendPort, 'v4' ] ,
97
120
errorsAreFatal: true ,
98
- ).then ((value) {
99
- return uuid.v4 ();
100
- }),
121
+ ),
101
122
));
102
- expect (seeds.toSet ().length, 1000 );
103
- }, tags: ['vm-only' ]);
123
+ final items = await receiver.take (100 ).toList ();
124
+ expect (items.toSet ().length, 100 );
125
+ }, tags: ['vm-only' ], timeout: Timeout (Duration (minutes: 5 )));
104
126
});
105
127
106
128
group ('UUID v5' , () {
@@ -120,18 +142,18 @@ void main() {
120
142
});
121
143
122
144
test ('uniqueness with isolates' , () async {
123
- final seeds = await Future .wait (List .generate (
124
- 1000 ,
145
+ final receiver = ReceivePort ();
146
+ await Future .wait (List .generate (
147
+ 100 ,
125
148
(_) => Isolate .spawn (
126
- (e) => {} ,
127
- null ,
149
+ runIsolate ,
150
+ [receiver.sendPort, 'v5' ] ,
128
151
errorsAreFatal: true ,
129
- ).then ((value) {
130
- return uuid.v5 ();
131
- }),
152
+ ),
132
153
));
133
- expect (seeds.toSet ().length, 1000 );
134
- }, tags: ['vm-only' ]);
154
+ final items = await receiver.take (100 ).toList ();
155
+ expect (items.toSet ().length, 100 );
156
+ }, tags: ['vm-only' ], timeout: Timeout (Duration (minutes: 5 )));
135
157
});
136
158
137
159
group ('UUID v6' , () {
@@ -152,18 +174,18 @@ void main() {
152
174
});
153
175
154
176
test ('uniqueness with isolates' , () async {
155
- final seeds = await Future .wait (List .generate (
156
- 1000 ,
177
+ final receiver = ReceivePort ();
178
+ await Future .wait (List .generate (
179
+ 100 ,
157
180
(_) => Isolate .spawn (
158
- (e) => {} ,
159
- null ,
181
+ runIsolate ,
182
+ [receiver.sendPort, 'v6' ] ,
160
183
errorsAreFatal: true ,
161
- ).then ((value) {
162
- return uuid.v6 ();
163
- }),
184
+ ),
164
185
));
165
- expect (seeds.toSet ().length, 1000 );
166
- }, tags: ['vm-only' ]);
186
+ final items = await receiver.take (100 ).toList ();
187
+ expect (items.toSet ().length, 100 );
188
+ }, tags: ['vm-only' ], timeout: Timeout (Duration (minutes: 5 )));
167
189
});
168
190
169
191
group ('UUID v7' , () {
@@ -184,18 +206,18 @@ void main() {
184
206
});
185
207
186
208
test ('uniqueness with isolates' , () async {
187
- final seeds = await Future .wait (List .generate (
188
- 1000 ,
209
+ final receiver = ReceivePort ();
210
+ await Future .wait (List .generate (
211
+ 100 ,
189
212
(_) => Isolate .spawn (
190
- (e) => {} ,
191
- null ,
213
+ runIsolate ,
214
+ [receiver.sendPort, 'v7' ] ,
192
215
errorsAreFatal: true ,
193
- ).then ((value) {
194
- return uuid.v7 ();
195
- }),
216
+ ),
196
217
));
197
- expect (seeds.toSet ().length, 1000 );
198
- }, tags: ['vm-only' ]);
218
+ final items = await receiver.take (100 ).toList ();
219
+ expect (items.toSet ().length, 100 );
220
+ }, tags: ['vm-only' ], timeout: Timeout (Duration (minutes: 5 )));
199
221
});
200
222
201
223
group ('UUID v8' , () {
@@ -234,18 +256,18 @@ void main() {
234
256
});
235
257
236
258
test ('uniqueness with isolates' , () async {
237
- final seeds = await Future .wait (List .generate (
238
- 1000 ,
259
+ final receiver = ReceivePort ();
260
+ await Future .wait (List .generate (
261
+ 100 ,
239
262
(_) => Isolate .spawn (
240
- (e) => {} ,
241
- null ,
263
+ runIsolate ,
264
+ [receiver.sendPort, 'v8' ] ,
242
265
errorsAreFatal: true ,
243
- ).then ((value) {
244
- return uuid.v8 ();
245
- }),
266
+ ),
246
267
));
247
- expect (seeds.toSet ().length, 1000 );
248
- }, tags: ['vm-only' ]);
268
+ final items = await receiver.take (100 ).toList ();
269
+ expect (items.toSet ().length, 100 );
270
+ }, tags: ['vm-only' ], timeout: Timeout (Duration (minutes: 5 )));
249
271
});
250
272
251
273
group ('NamespaceValue' , () {
0 commit comments