Chromium Code Reviews| Index: runtime/tests/vm/dart/optimized_stacktrace_test.dart |
| =================================================================== |
| --- runtime/tests/vm/dart/optimized_stacktrace_test.dart (revision 0) |
| +++ runtime/tests/vm/dart/optimized_stacktrace_test.dart (revision 0) |
| @@ -0,0 +1,67 @@ |
| +// Copyright (c) 2013, 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. |
| + |
| +// Test correct source positions in stack trace with optimized functions. |
| + |
| +// (1) Test normal exception. |
| +foo(x) => bar(x); |
| + |
| +bar(x) { |
| + if (x == null) throw 42; // throw at position 11:18 |
| + return x + 1; |
| +} |
| + |
| +test1() { |
| + for (var i=0; i<10000; i++) foo(42); |
|
srdjan
2013/01/28 18:03:58
You may attempt the test below for unoptimized cod
Florian Schneider
2013/01/29 12:19:07
Done.
|
| + try { |
| + foo(null); |
| + Expect.isTrue(false); // Unreachable. |
|
srdjan
2013/01/28 18:03:58
Expect.fail(....);
Florian Schneider
2013/01/29 12:19:07
Done.
|
| + } catch (e, stacktrace) { |
| + String s = stacktrace.toString(); |
| + Expect.equals(-1, s.indexOf("-1:-1")); |
| + Expect.notEquals(-1, s.indexOf("11:18")); |
| + } |
| +} |
| + |
| + |
| +// (2) Test checked mode exceptions. |
| +max(x) => moritz(x); |
|
srdjan
2013/01/28 18:03:58
I love the Max & Moritz theme, but max could ve co
Florian Schneider
2013/01/29 12:19:07
Renamed to maximus.
|
| + |
| +moritz(x) { |
| + if (x == 333) return 42 ? 0 : 1; // Throws in checked mode. |
| + if (x == 777) { |
| + bool b = x; // Throws in checked mode. |
| + return b; |
| + } |
| + |
| + return x + 1; |
| +} |
| + |
| +test2() { |
| + for (var i=0; i<100000; i++) max(42); |
| + try { |
| + max(333); |
| + } catch (e, stacktrace) { |
| + String s = stacktrace.toString(); |
| + print(s); |
| + Expect.notEquals(-1, s.indexOf("max")); |
| + Expect.notEquals(-1, s.indexOf("moritz")); |
| + Expect.equals(-1, s.indexOf("-1:-1")); |
| + } |
| + |
| + try { |
| + max(777); |
| + } catch (e, stacktrace) { |
| + String s = stacktrace.toString(); |
| + print(s); |
| + Expect.notEquals(-1, s.indexOf("max")); |
| + Expect.notEquals(-1, s.indexOf("moritz")); |
| + Expect.equals(-1, s.indexOf("-1:-1")); |
| + } |
| +} |
| + |
| +main() { |
| + test1(); |
| + test2(); |
| +} |