@@ -36,6 +36,56 @@ class _CallbackPrinter extends LogPrinter {
3636 }
3737}
3838
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+
3989/// Test class for the lazy-initialization of variables.
4090class LazyLogger {
4191 static bool ? printed;
@@ -235,4 +285,43 @@ void main() {
235285 LazyLogger .logger.i ("This is an info message and should not show" );
236286 expect (LazyLogger .printed, isNull);
237287 });
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+ });
238327}
0 commit comments