@@ -36,6 +36,56 @@ class _CallbackPrinter extends LogPrinter {
36
36
}
37
37
}
38
38
39
+ class _AsyncFilter extends LogFilter {
40
+ final Duration delay;
41
+ bool initialized = false ;
42
+
43
+ _AsyncFilter (this .delay);
44
+
45
+ @override
46
+ Future <void > init () async {
47
+ await Future .delayed (delay);
48
+ initialized = true ;
49
+ }
50
+
51
+ @override
52
+ bool shouldLog (LogEvent event) => false ;
53
+ }
54
+
55
+ class _AsyncPrinter extends LogPrinter {
56
+ final Duration delay;
57
+ bool initialized = false ;
58
+
59
+ _AsyncPrinter (this .delay);
60
+
61
+ @override
62
+ Future <void > init () async {
63
+ await Future .delayed (delay);
64
+ initialized = true ;
65
+ }
66
+
67
+ @override
68
+ List <String > log (LogEvent event) => [event.message.toString ()];
69
+ }
70
+
71
+ class _AsyncOutput extends LogOutput {
72
+ final Duration delay;
73
+ bool initialized = false ;
74
+
75
+ _AsyncOutput (this .delay);
76
+
77
+ @override
78
+ Future <void > init () async {
79
+ await Future .delayed (delay);
80
+ initialized = true ;
81
+ }
82
+
83
+ @override
84
+ void output (OutputEvent event) {
85
+ // No-op.
86
+ }
87
+ }
88
+
39
89
/// Test class for the lazy-initialization of variables.
40
90
class LazyLogger {
41
91
static bool ? printed;
@@ -235,4 +285,43 @@ void main() {
235
285
LazyLogger .logger.i ("This is an info message and should not show" );
236
286
expect (LazyLogger .printed, isNull);
237
287
});
288
+
289
+ test ('Async Filter Initialization' , () async {
290
+ var comp = _AsyncFilter (const Duration (milliseconds: 100 ));
291
+ var logger = Logger (
292
+ filter: comp,
293
+ );
294
+
295
+ expect (comp.initialized, false );
296
+ await Future .delayed (const Duration (milliseconds: 50 ));
297
+ expect (comp.initialized, false );
298
+ await logger.init;
299
+ expect (comp.initialized, true );
300
+ });
301
+
302
+ test ('Async Printer Initialization' , () async {
303
+ var comp = _AsyncPrinter (const Duration (milliseconds: 100 ));
304
+ var logger = Logger (
305
+ printer: comp,
306
+ );
307
+
308
+ expect (comp.initialized, false );
309
+ await Future .delayed (const Duration (milliseconds: 50 ));
310
+ expect (comp.initialized, false );
311
+ await logger.init;
312
+ expect (comp.initialized, true );
313
+ });
314
+
315
+ test ('Async Output Initialization' , () async {
316
+ var comp = _AsyncOutput (const Duration (milliseconds: 100 ));
317
+ var logger = Logger (
318
+ output: comp,
319
+ );
320
+
321
+ expect (comp.initialized, false );
322
+ await Future .delayed (const Duration (milliseconds: 50 ));
323
+ expect (comp.initialized, false );
324
+ await logger.init;
325
+ expect (comp.initialized, true );
326
+ });
238
327
}
0 commit comments