// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// @dart = 2.6
import 'dart:async';

import 'package:test/test.dart' hide TypeMatcher, isInstanceOf;

void main() {
  test('Message loop flushes microtasks between iterations', () async {
    final List<int> tasks = <int>[];

    tasks.add(1);

    // Flush 0 microtasks.
    await Future<void>.delayed(Duration.zero);

    scheduleMicrotask(() {
      tasks.add(3);
    });
    scheduleMicrotask(() {
      tasks.add(4);
    });

    tasks.add(2);

    // Flush 2 microtasks.
    await Future<void>.delayed(Duration.zero);

    scheduleMicrotask(() {
      tasks.add(6);
    });
    scheduleMicrotask(() {
      tasks.add(7);
    });
    scheduleMicrotask(() {
      tasks.add(8);
    });

    tasks.add(5);

    // Flush 3 microtasks.
    await Future<void>.delayed(Duration.zero);

    tasks.add(9);

    expect(tasks, <int>[1, 2, 3, 4, 5, 6, 7, 8, 9]);
  });
}
