@@ -9,6 +9,7 @@ import 'package:flutter/foundation.dart';
9
9
import 'package:flutter/painting.dart' ;
10
10
import 'package:flutter/scheduler.dart' show SchedulerBinding, timeDilation;
11
11
import 'package:flutter_test/flutter_test.dart' ;
12
+ import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart' ;
12
13
13
14
import '../image_data.dart' ;
14
15
import 'fake_codec.dart' ;
@@ -84,7 +85,7 @@ void main() {
84
85
image200x100 = await createTestImage (width: 200 , height: 100 );
85
86
});
86
87
87
- testWidgets ('Codec future fails' , (WidgetTester tester) async {
88
+ testWidgetsWithLeakTracking ('Codec future fails' , (WidgetTester tester) async {
88
89
final Completer <Codec > completer = Completer <Codec >();
89
90
MultiFrameImageStreamCompleter (
90
91
codec: completer.future,
@@ -95,7 +96,7 @@ void main() {
95
96
expect (tester.takeException (), 'failure message' );
96
97
});
97
98
98
- testWidgets ('Decoding starts when a listener is added after codec is ready' , (WidgetTester tester) async {
99
+ testWidgetsWithLeakTracking ('Decoding starts when a listener is added after codec is ready' , (WidgetTester tester) async {
99
100
final Completer <Codec > completer = Completer <Codec >();
100
101
final MockCodec mockCodec = MockCodec ();
101
102
mockCodec.frameCount = 1 ;
@@ -114,7 +115,7 @@ void main() {
114
115
expect (mockCodec.numFramesAsked, 1 );
115
116
});
116
117
117
- testWidgets ('Decoding starts when a codec is ready after a listener is added' , (WidgetTester tester) async {
118
+ testWidgetsWithLeakTracking ('Decoding starts when a codec is ready after a listener is added' , (WidgetTester tester) async {
118
119
final Completer <Codec > completer = Completer <Codec >();
119
120
final MockCodec mockCodec = MockCodec ();
120
121
mockCodec.frameCount = 1 ;
@@ -133,7 +134,7 @@ void main() {
133
134
expect (mockCodec.numFramesAsked, 1 );
134
135
});
135
136
136
- testWidgets ('Decoding does not crash when disposed' , (WidgetTester tester) async {
137
+ testWidgetsWithLeakTracking ('Decoding does not crash when disposed' , (WidgetTester tester) async {
137
138
final Completer <Codec > completer = Completer <Codec >();
138
139
final MockCodec mockCodec = MockCodec ();
139
140
mockCodec.frameCount = 1 ;
@@ -158,7 +159,7 @@ void main() {
158
159
await tester.idle ();
159
160
});
160
161
161
- testWidgets ('Chunk events of base ImageStreamCompleter are delivered' , (WidgetTester tester) async {
162
+ testWidgetsWithLeakTracking ('Chunk events of base ImageStreamCompleter are delivered' , (WidgetTester tester) async {
162
163
final List <ImageChunkEvent > chunkEvents = < ImageChunkEvent > [];
163
164
final StreamController <ImageChunkEvent > streamController = StreamController <ImageChunkEvent >();
164
165
final ImageStreamCompleter imageStream = FakeEventReportingImageStreamCompleter (
@@ -182,7 +183,7 @@ void main() {
182
183
expect (chunkEvents[1 ].expectedTotalBytes, 3 );
183
184
});
184
185
185
- testWidgets ('Chunk events of base ImageStreamCompleter are not buffered before listener registration' , (WidgetTester tester) async {
186
+ testWidgetsWithLeakTracking ('Chunk events of base ImageStreamCompleter are not buffered before listener registration' , (WidgetTester tester) async {
186
187
final List <ImageChunkEvent > chunkEvents = < ImageChunkEvent > [];
187
188
final StreamController <ImageChunkEvent > streamController = StreamController <ImageChunkEvent >();
188
189
final ImageStreamCompleter imageStream = FakeEventReportingImageStreamCompleter (
@@ -205,7 +206,7 @@ void main() {
205
206
expect (chunkEvents[0 ].expectedTotalBytes, 3 );
206
207
});
207
208
208
- testWidgets ('Chunk events of MultiFrameImageStreamCompleter are delivered' , (WidgetTester tester) async {
209
+ testWidgetsWithLeakTracking ('Chunk events of MultiFrameImageStreamCompleter are delivered' , (WidgetTester tester) async {
209
210
final List <ImageChunkEvent > chunkEvents = < ImageChunkEvent > [];
210
211
final Completer <Codec > completer = Completer <Codec >();
211
212
final StreamController <ImageChunkEvent > streamController = StreamController <ImageChunkEvent >();
@@ -232,7 +233,7 @@ void main() {
232
233
expect (chunkEvents[1 ].expectedTotalBytes, 3 );
233
234
});
234
235
235
- testWidgets ('Chunk events of MultiFrameImageStreamCompleter are not buffered before listener registration' , (WidgetTester tester) async {
236
+ testWidgetsWithLeakTracking ('Chunk events of MultiFrameImageStreamCompleter are not buffered before listener registration' , (WidgetTester tester) async {
236
237
final List <ImageChunkEvent > chunkEvents = < ImageChunkEvent > [];
237
238
final Completer <Codec > completer = Completer <Codec >();
238
239
final StreamController <ImageChunkEvent > streamController = StreamController <ImageChunkEvent >();
@@ -258,7 +259,7 @@ void main() {
258
259
expect (chunkEvents[0 ].expectedTotalBytes, 3 );
259
260
});
260
261
261
- testWidgets ('Chunk errors are reported' , (WidgetTester tester) async {
262
+ testWidgetsWithLeakTracking ('Chunk errors are reported' , (WidgetTester tester) async {
262
263
final List <ImageChunkEvent > chunkEvents = < ImageChunkEvent > [];
263
264
final Completer <Codec > completer = Completer <Codec >();
264
265
final StreamController <ImageChunkEvent > streamController = StreamController <ImageChunkEvent >();
@@ -284,7 +285,7 @@ void main() {
284
285
expect (chunkEvents[0 ].expectedTotalBytes, 3 );
285
286
});
286
287
287
- testWidgets ('getNextFrame future fails' , (WidgetTester tester) async {
288
+ testWidgetsWithLeakTracking ('getNextFrame future fails' , (WidgetTester tester) async {
288
289
final MockCodec mockCodec = MockCodec ();
289
290
mockCodec.frameCount = 1 ;
290
291
final Completer <Codec > codecCompleter = Completer <Codec >();
@@ -309,7 +310,7 @@ void main() {
309
310
expect (tester.takeException (), 'frame completion error' );
310
311
});
311
312
312
- testWidgets ('ImageStream emits frame (static image)' , (WidgetTester tester) async {
313
+ testWidgetsWithLeakTracking ('ImageStream emits frame (static image)' , (WidgetTester tester) async {
313
314
final MockCodec mockCodec = MockCodec ();
314
315
mockCodec.frameCount = 1 ;
315
316
final Completer <Codec > codecCompleter = Completer <Codec >();
@@ -334,7 +335,7 @@ void main() {
334
335
expect (emittedImages.every ((ImageInfo info) => info.image.isCloneOf (frame.image)), true );
335
336
});
336
337
337
- testWidgets ('ImageStream emits frames (animated images)' , (WidgetTester tester) async {
338
+ testWidgetsWithLeakTracking ('ImageStream emits frames (animated images)' , (WidgetTester tester) async {
338
339
final MockCodec mockCodec = MockCodec ();
339
340
mockCodec.frameCount = 2 ;
340
341
mockCodec.repetitionCount = - 1 ;
@@ -380,7 +381,7 @@ void main() {
380
381
await tester.pump (const Duration (milliseconds: 400 ));
381
382
});
382
383
383
- testWidgets ('animation wraps back' , (WidgetTester tester) async {
384
+ testWidgetsWithLeakTracking ('animation wraps back' , (WidgetTester tester) async {
384
385
final MockCodec mockCodec = MockCodec ();
385
386
mockCodec.frameCount = 2 ;
386
387
mockCodec.repetitionCount = - 1 ;
@@ -421,7 +422,7 @@ void main() {
421
422
await tester.pump (const Duration (milliseconds: 200 ));
422
423
});
423
424
424
- testWidgets ("animation doesn't repeat more than specified" , (WidgetTester tester) async {
425
+ testWidgetsWithLeakTracking ("animation doesn't repeat more than specified" , (WidgetTester tester) async {
425
426
final MockCodec mockCodec = MockCodec ();
426
427
mockCodec.frameCount = 2 ;
427
428
mockCodec.repetitionCount = 0 ;
@@ -459,7 +460,7 @@ void main() {
459
460
expect (emittedImages[1 ].image.isCloneOf (frame2.image), true );
460
461
});
461
462
462
- testWidgets ('frames are only decoded when there are listeners' , (WidgetTester tester) async {
463
+ testWidgetsWithLeakTracking ('frames are only decoded when there are listeners' , (WidgetTester tester) async {
463
464
final MockCodec mockCodec = MockCodec ();
464
465
mockCodec.frameCount = 2 ;
465
466
mockCodec.repetitionCount = - 1 ;
@@ -499,7 +500,7 @@ void main() {
499
500
handle.dispose ();
500
501
});
501
502
502
- testWidgets ('multiple stream listeners' , (WidgetTester tester) async {
503
+ testWidgetsWithLeakTracking ('multiple stream listeners' , (WidgetTester tester) async {
503
504
final MockCodec mockCodec = MockCodec ();
504
505
mockCodec.frameCount = 2 ;
505
506
mockCodec.repetitionCount = - 1 ;
@@ -546,7 +547,7 @@ void main() {
546
547
547
548
});
548
549
549
- testWidgets ('timer is canceled when listeners are removed' , (WidgetTester tester) async {
550
+ testWidgetsWithLeakTracking ('timer is canceled when listeners are removed' , (WidgetTester tester) async {
550
551
final MockCodec mockCodec = MockCodec ();
551
552
mockCodec.frameCount = 2 ;
552
553
mockCodec.repetitionCount = - 1 ;
@@ -579,7 +580,7 @@ void main() {
579
580
// point.
580
581
});
581
582
582
- testWidgets ('timeDilation affects animation frame timers' , (WidgetTester tester) async {
583
+ testWidgetsWithLeakTracking ('timeDilation affects animation frame timers' , (WidgetTester tester) async {
583
584
final MockCodec mockCodec = MockCodec ();
584
585
mockCodec.frameCount = 2 ;
585
586
mockCodec.repetitionCount = - 1 ;
@@ -616,7 +617,7 @@ void main() {
616
617
timeDilation = 1.0 ; // restore time dilation, or it will affect other tests
617
618
});
618
619
619
- testWidgets ('error handlers can intercept errors' , (WidgetTester tester) async {
620
+ testWidgetsWithLeakTracking ('error handlers can intercept errors' , (WidgetTester tester) async {
620
621
final MockCodec mockCodec = MockCodec ();
621
622
mockCodec.frameCount = 1 ;
622
623
final Completer <Codec > codecCompleter = Completer <Codec >();
@@ -651,7 +652,7 @@ void main() {
651
652
expect (capturedException, 'frame completion error' );
652
653
});
653
654
654
- testWidgets ('remove and add listener ' , (WidgetTester tester) async {
655
+ testWidgetsWithLeakTracking ('remove and add listener ' , (WidgetTester tester) async {
655
656
final MockCodec mockCodec = MockCodec ();
656
657
mockCodec.frameCount = 3 ;
657
658
mockCodec.repetitionCount = 0 ;
@@ -682,7 +683,7 @@ void main() {
682
683
await tester.pump (const Duration (milliseconds: 200 )); // emit 2nd frame.
683
684
});
684
685
685
- testWidgets ('ImageStreamListener hashCode and equals' , (WidgetTester tester) async {
686
+ testWidgetsWithLeakTracking ('ImageStreamListener hashCode and equals' , (WidgetTester tester) async {
686
687
void handleImage (ImageInfo image, bool synchronousCall) { }
687
688
void handleImageDifferently (ImageInfo image, bool synchronousCall) { }
688
689
void handleError (dynamic error, StackTrace ? stackTrace) { }
@@ -714,7 +715,7 @@ void main() {
714
715
compare (onImage1: handleImage, onChunk1: handleChunk, onError1: handleError, onImage2: handleImage, onError2: handleError, areEqual: false );
715
716
});
716
717
717
- testWidgets ('Keep alive handles do not drive frames or prevent last listener callbacks' , (WidgetTester tester) async {
718
+ testWidgetsWithLeakTracking ('Keep alive handles do not drive frames or prevent last listener callbacks' , (WidgetTester tester) async {
718
719
final Image image10x10 = (await tester.runAsync (() => createTestImage (width: 10 , height: 10 )))! ;
719
720
final MockCodec mockCodec = MockCodec ();
720
721
mockCodec.frameCount = 2 ;
0 commit comments