OLD | NEW |
| (Empty) |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 // VMOptions=--error_on_bad_type --error_on_bad_override --verbose-debug | |
5 | |
6 import 'dart:async'; | |
7 import 'dart:developer'; | |
8 import 'package:observatory/service_io.dart'; | |
9 import 'package:unittest/unittest.dart'; | |
10 import 'test_helper.dart'; | |
11 | |
12 foo() {} | |
13 | |
14 doSync() { | |
15 foo(); // Line 15 | |
16 } | |
17 | |
18 doAsync() async { | |
19 foo(); // Line 19 | |
20 await null; | |
21 } | |
22 | |
23 doAsyncStar() async* { | |
24 foo(); // Line 24 | |
25 yield null; | |
26 } | |
27 | |
28 testeeDo() { | |
29 debugger(); | |
30 | |
31 doSync(); | |
32 | |
33 doAsync(); | |
34 | |
35 doAsyncStar().listen((_) => null); | |
36 } | |
37 | |
38 test(Isolate isolate) async { | |
39 await isolate.rootLibrary.load(); | |
40 var script = isolate.rootLibrary.scripts[0]; | |
41 | |
42 var bp1 = await isolate.addBreakpoint(script, 15); | |
43 expect(bp1, isNotNull); | |
44 expect(bp1 is Breakpoint, isTrue); | |
45 | |
46 var bp2 = await isolate.addBreakpoint(script, 19); | |
47 expect(bp2, isNotNull); | |
48 expect(bp2 is Breakpoint, isTrue); | |
49 | |
50 var bp3 = await isolate.addBreakpoint(script, 24); | |
51 expect(bp3, isNotNull); | |
52 expect(bp3 is Breakpoint, isTrue); | |
53 | |
54 isolate.resume(); | |
55 | |
56 var bp1_hit = new Completer(); | |
57 var bp2_hit = new Completer(); | |
58 var bp3_hit = new Completer(); | |
59 | |
60 var stream = await isolate.vm.getEventStream(VM.kDebugStream); | |
61 stream.listen((ServiceEvent event) async { | |
62 print("Event: $event"); | |
63 if (event.kind == ServiceEvent.kPauseBreakpoint) { | |
64 var bp = event.breakpoint; | |
65 print('Hit $bp'); | |
66 if (bp == bp1) { | |
67 await stoppedAtLine(15)(isolate); | |
68 print(event.asyncContinuation); | |
69 expect(event.asyncContinuation, equals(null)); | |
70 isolate.resume(); | |
71 bp1_hit.complete(null); | |
72 } | |
73 if (bp == bp2) { | |
74 await stoppedAtLine(19)(isolate); | |
75 print(event.asyncContinuation); | |
76 expect(event.asyncContinuation.isClosure, isTrue); | |
77 isolate.resume(); | |
78 bp2_hit.complete(null); | |
79 } | |
80 if (bp == bp3) { | |
81 await stoppedAtLine(24)(isolate); | |
82 print(event.asyncContinuation); | |
83 expect(event.asyncContinuation.isClosure, isTrue); | |
84 isolate.resume(); | |
85 bp3_hit.complete(null); | |
86 } | |
87 } | |
88 }); | |
89 | |
90 await bp1_hit.future; | |
91 await bp2_hit.future; | |
92 await bp3_hit.future; | |
93 } | |
94 | |
95 main(args) => runIsolateTests(args, [test], testeeConcurrent: testeeDo); | |
OLD | NEW |