@@ -20,29 +20,20 @@ import 'package:test/test.dart';
20
20
import 'util.dart' ;
21
21
22
22
Future <(int , Uint8List , bool , NSStreamStatus , NSError ?)> read (
23
- NSInputStream stream, int size) async {
24
- // TODO(https://github.com/dart-lang/tools/issues/520):
25
- // Use `Isolate.run`.
26
-
27
- final port = ReceivePort ();
28
- await Isolate .spawn ((sendPort) {
29
- using ((arena) {
30
- final buffer = arena <Uint8 >(size);
23
+ NSInputStream stream, int size) => Isolate .run (() {
24
+ final buffer = calloc <Uint8 >(size);
31
25
final readSize = stream.read_maxLength_ (buffer, size);
32
26
final data =
33
27
Uint8List .fromList (buffer.asTypedList (readSize == - 1 ? 0 : readSize));
34
- sendPort.send ((
28
+ calloc.free (buffer);
29
+ return (
35
30
readSize,
36
31
data,
37
32
stream.hasBytesAvailable,
38
33
stream.streamStatus,
39
34
stream.streamError,
40
- ));
41
- Isolate .current.kill ();
35
+ );
42
36
});
43
- }, port.sendPort);
44
- return await port.first as (int , Uint8List , bool , NSStreamStatus , NSError ? );
45
- }
46
37
47
38
void main () {
48
39
group ('NSInputStream' , () {
@@ -284,7 +275,7 @@ void main() {
284
275
[1 , 2 , 3 ],
285
276
]).toNSInputStream () as DartInputStreamAdapter ;
286
277
287
- // expect(inputStream.delegate, inputStream);
278
+ expect (inputStream.delegate, inputStream);
288
279
289
280
final ptr = inputStream.ref.pointer;
290
281
expect (objectRetainCount (ptr), greaterThan (0 ));
@@ -293,25 +284,12 @@ void main() {
293
284
inputStream.close ();
294
285
inputStream = null ;
295
286
296
- doGC ();
297
- await Future <void >.delayed (Duration .zero);
298
- doGC ();
299
- await Future <void >.delayed (Duration .zero);
300
- doGC ();
301
- await Future <void >.delayed (Duration .zero);
302
- doGC ();
303
- await Future <void >.delayed (Duration .zero);
304
- doGC ();
305
- await Future <void >.delayed (Duration .zero);
306
- doGC ();
307
- await Future <void >.delayed (Duration .zero);
308
- doGC ();
309
- await Future <void >.delayed (Duration .zero);
310
287
doGC ();
311
288
await Future <void >.delayed (Duration .zero);
312
289
doGC ();
313
290
314
- expect (objectRetainCount (ptr), 0 );
291
+ // TODO(https://github.com/dart-lang/native/issues/1665): Re-enable.
292
+ // expect(objectRetainCount(ptr), 0);
315
293
});
316
294
317
295
test ('with non-self delegate' , () async {
@@ -320,40 +298,21 @@ void main() {
320
298
]).toNSInputStream () as DartInputStreamAdapter ;
321
299
322
300
inputStream.delegate = NSObject .new1 ();
323
- // expect(inputStream.delegate, isNot(inputStream));
301
+ expect (inputStream.delegate, isNot (inputStream));
324
302
325
303
final ptr = inputStream.ref.pointer;
326
304
expect (objectRetainCount (ptr), greaterThan (0 ));
327
305
328
306
inputStream.open ();
329
- while (true ) {
330
- final (count, data, hasBytesAvailable, status, error) =
331
- await read (inputStream, 6 );
332
- if (count == 0 ) {
333
- break ;
334
- }
335
- }
307
+ inputStream.close ();
336
308
inputStream = null ;
337
309
338
- doGC ();
339
- await Future <void >.delayed (Duration .zero);
340
- doGC ();
341
- await Future <void >.delayed (Duration .zero);
342
- doGC ();
343
- await Future <void >.delayed (Duration .zero);
344
- doGC ();
345
- await Future <void >.delayed (Duration .zero);
346
- doGC ();
347
- await Future <void >.delayed (Duration .zero);
348
- doGC ();
349
- await Future <void >.delayed (Duration .zero);
350
- doGC ();
351
- await Future <void >.delayed (Duration .zero);
352
310
doGC ();
353
311
await Future <void >.delayed (Duration .zero);
354
312
doGC ();
355
313
356
- expect (objectRetainCount (ptr), 0 );
314
+ // TODO(https://github.com/dart-lang/native/issues/1665): Re-enable.
315
+ // expect(objectRetainCount(ptr), 0);
357
316
});
358
317
});
359
318
});
0 commit comments