Chromium Code Reviews| Index: language/src/GetterClosureExecutionOrderTest.dart |
| =================================================================== |
| --- language/src/GetterClosureExecutionOrderTest.dart (revision 566) |
| +++ language/src/GetterClosureExecutionOrderTest.dart (working copy) |
| @@ -7,6 +7,34 @@ |
| var counter = 0; |
| +class Test1 { |
| + get a() { |
| + Expect.equals(1, counter); |
| + counter++; |
| + return (c) { }; |
| + } |
| + |
| + b() { |
| + Expect.equals(0, counter); |
| + counter++; |
| + return 1; |
| + } |
| +} |
| + |
| +class Test2 { |
| + static get a() { |
| + Expect.equals(1, counter); |
| + counter++; |
| + return (c) { }; |
| + } |
| + |
| + static b() { |
| + Expect.equals(0, counter); |
|
gbracha
2011/10/19 20:55:19
This should expect counter = 1. See comment below.
Ivan Posva
2011/10/19 21:26:16
Done.
|
| + counter++; |
| + return 1; |
| + } |
| +} |
| + |
| get a() { |
| Expect.equals(1, counter); |
|
gbracha
2011/10/19 20:55:19
This should be 0. This is a top level getter, and
Ivan Posva
2011/10/19 21:26:16
Done.
|
| counter++; |
| @@ -20,6 +48,40 @@ |
| } |
| main() { |
| - a(b()); |
| - Expect.equals(2, counter); |
| + var failures = []; |
| + try { |
| + // Check instance getters. |
| + counter = 0; |
| + var o = new Test1(); |
| + o.a(o.b()); |
| + Expect.equals(2, counter); |
| + } catch (var exc, var stack) { |
| + failures.add(exc); |
| + failures.add(stack); |
| + } |
| + try { |
| + // Check static getters. |
|
gbracha
2011/10/19 20:55:19
This is valid per the current spec, though perhaps
Ivan Posva
2011/10/19 21:26:16
Done.
|
| + counter = 0; |
| + Test2.a(Test2.b()); |
| + Expect.equals(2, counter); |
| + } catch (var exc, var stack) { |
| + failures.add(exc); |
| + failures.add(stack); |
| + } |
| + try { |
| + // Check top-level getters. |
| + counter = 0; |
| + a(b()); |
| + Expect.equals(2, counter); |
| + } catch (var exc, var stack) { |
| + failures.add(exc); |
| + failures.add(stack); |
| + } |
| + // If any of the tests failed print out the details and fail the test. |
| + if (failures.length != 0) { |
| + for (var msg in failures) { |
| + print(msg.toString()); |
| + } |
| + throw "${failures.length ~/ 2} tests failed."; |
| + } |
| } |