|  | // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. 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 'package:expect/expect.dart'; | 
|  | import 'dart:async'; | 
|  | import 'dart:_runtime' as dart; | 
|  |  | 
|  | void main() async { | 
|  | await timeoutTest(); | 
|  | await periodicTest(); | 
|  | } | 
|  |  | 
|  | void timeoutTest() async { | 
|  | bool beforeRestart = true; | 
|  | bool calledBeforeRestart = false; | 
|  | bool calledAfterRestart = false; | 
|  | void callback() { | 
|  | if (beforeRestart) { | 
|  | calledBeforeRestart = true; | 
|  | } else { | 
|  | calledAfterRestart = true; | 
|  | } | 
|  | } | 
|  |  | 
|  | Timer(Duration(milliseconds: 500), callback); | 
|  | dart.hotRestart(); | 
|  | beforeRestart = false; | 
|  | await new Future.delayed(Duration(milliseconds: 600)); | 
|  | Expect.isFalse(calledBeforeRestart); | 
|  | Expect.isFalse(calledAfterRestart); | 
|  | } | 
|  |  | 
|  | void periodicTest() async { | 
|  | bool beforeRestart = true; | 
|  | bool calledBeforeRestart = false; | 
|  | bool calledAfterRestart = false; | 
|  | void callback(_) { | 
|  | if (beforeRestart) { | 
|  | calledBeforeRestart = true; | 
|  | } else { | 
|  | calledAfterRestart = true; | 
|  | } | 
|  | } | 
|  |  | 
|  | Timer.periodic(Duration(milliseconds: 10), callback); | 
|  | await new Future.delayed(Duration(milliseconds: 100)); | 
|  | dart.hotRestart(); | 
|  | beforeRestart = false; | 
|  | await new Future.delayed(Duration(milliseconds: 100)); | 
|  | Expect.isTrue(calledBeforeRestart); | 
|  | Expect.isFalse(calledAfterRestart); | 
|  | } |