|  | // Copyright 2013 The Flutter Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | import 'dart:async'; | 
|  |  | 
|  | import 'package:litetest/litetest.dart' as litetest; | 
|  |  | 
|  | // A group of tests that must be run without concurrency. | 
|  | // This is useful for tests that modify global state. | 
|  | class SerializedTestSuite { | 
|  | Completer<void>? _previousTestCompleter; | 
|  |  | 
|  | void test(String name, Future<void> Function() body) { | 
|  | final Completer<void>? lastTestCompleter = _previousTestCompleter; | 
|  | final Completer<void> currentTestCompleter = Completer<void>(); | 
|  | _previousTestCompleter = currentTestCompleter; | 
|  | Future<void> wrappedBody() async { | 
|  | if (lastTestCompleter != null) { | 
|  | await lastTestCompleter.future; | 
|  | } | 
|  | await body(); | 
|  | currentTestCompleter.complete(); | 
|  | } | 
|  | litetest.test(name, wrappedBody); | 
|  | } | 
|  | } |