Chromium Code Reviews| Index: tests/language/getter_setter_order_test.dart |
| =================================================================== |
| --- tests/language/getter_setter_order_test.dart (revision 0) |
| +++ tests/language/getter_setter_order_test.dart (revision 0) |
| @@ -0,0 +1,74 @@ |
| +// 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 for the evaluation order of getters and setters. |
| + |
| +var trace; |
| + |
| +class X { |
| + get b { |
| + trace.add('get b'); |
| + return new X(); |
| + } |
| + |
| + set c (value) { |
| + trace.add('set c'); |
| + } |
| + |
| + toString() { |
| + trace.add('toString'); |
| + return 'X'; |
| + } |
| + |
| + get c { |
| + trace.add('get c'); |
| + return 42; |
| + } |
| + |
| + get d { |
| + trace.add('get d'); |
| + return new X(); |
| + } |
| + |
| + operator [] (index) { |
| + trace.add('index'); |
| + return 42; |
| + } |
| + |
| + operator []=(index, value) { |
| + trace.add('indexSet'); |
| + } |
| +} |
| + |
| +main() { |
| + var x = new X(); |
| + |
| + trace = []; |
| + x.b.c = '$x'; |
| + Expect.listEquals(['get b', 'toString', 'set c'], trace); |
| + |
| + trace = []; |
| + x.b.c += '$x'.hashCode; |
| + Expect.listEquals(['get b', 'get c', 'toString', 'set c'], trace); |
| + |
| + trace = []; |
| + x.b.c++; |
| + Expect.listEquals(['get b', 'get c', 'set c'], trace); |
| + |
| + trace = []; |
| + x.b.d[42] = '$x'; |
| + Expect.listEquals(['get b', 'get d', 'toString', 'indexSet'], trace); |
| + |
| + trace = []; |
| + x.b.d[42] += '$x'.hashCode; |
| + Expect.listEquals(['get b', 'get d', 'index', 'toString', 'indexSet'], trace); |
| + |
| + trace = []; |
| + x.b.d[42]++; |
| + Expect.listEquals(['get b', 'get d', 'index', 'indexSet'], trace); |
| + |
| + trace = []; |
| + ++x.b.d[42]; |
| + Expect.listEquals(['get b', 'get d', 'index', 'indexSet'], trace); |
| +} |
|
sra1
2013/03/26 21:45:58
Add some more complex compound assignments
x.b.d[
ngeoffray
2013/03/28 11:31:03
Done.
|