Chromium Code Reviews| Index: runtime/observatory/tests/service/next_through_for_each_loop_test.dart |
| diff --git a/runtime/observatory/tests/service/next_through_for_each_loop_test.dart b/runtime/observatory/tests/service/next_through_for_each_loop_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d139d4cbd3e0c219b75cac70dff16775e70fa26f |
| --- /dev/null |
| +++ b/runtime/observatory/tests/service/next_through_for_each_loop_test.dart |
| @@ -0,0 +1,57 @@ |
| +import 'test_helper.dart'; |
|
Kevin Millikin (Google)
2017/02/08 15:37:51
License header.
jensj
2017/02/13 14:04:16
Done.
|
| +import 'service_test_common.dart'; |
| + |
| +const int LINE_A = 8; |
| +const String file = "next_through_for_each_loop_test.dart"; |
| + |
| +code() { |
| + List<int> data = [1, 2, 3, 4]; |
| + for(int datapoint in data) { |
| + print(datapoint); |
| + } |
| +} |
| + |
| +List<String> stops = []; |
| +List<String> expected = [ |
| + // Initialize data |
| + "$file:${LINE_A+0}:20", |
| + |
| + // Twice for some reason on data |
| + "$file:${LINE_A+1}:24", |
| + |
| + // An iteration of the loop apparently is "data", "{", then inside loop |
| + "$file:${LINE_A+1}:24", |
| + "$file:${LINE_A+1}:30", |
| + "$file:${LINE_A+2}:5", |
| + |
| + // Iteration 2 |
| + "$file:${LINE_A+1}:24", |
| + "$file:${LINE_A+1}:30", |
| + "$file:${LINE_A+2}:5", |
| + |
| + // Iteration 3 |
| + "$file:${LINE_A+1}:24", |
| + "$file:${LINE_A+1}:30", |
| + "$file:${LINE_A+2}:5", |
| + |
| + // Iteration 4 |
| + "$file:${LINE_A+1}:24", |
| + "$file:${LINE_A+1}:30", |
| + "$file:${LINE_A+2}:5", |
| + |
| + // End: Apparently we go to data again, then on the final "}" |
| + "$file:${LINE_A+1}:24", |
| + "$file:${LINE_A+4}:1" |
| +]; |
| + |
| +var tests = [ |
| + hasPausedAtStart, |
| + setBreakpointAtLine(LINE_A), |
| + runStepThroughProgramRecordingStops(stops), |
| + checkRecordedStops(stops, expected) |
| +]; |
| + |
| +main(args) { |
| + runIsolateTestsSynchronous(args, tests, |
| + testeeConcurrent: code, pause_on_start: true, pause_on_exit: true); |
| +} |