Index: frog/tests/leg_only/src/CascadeTest.dart |
diff --git a/frog/tests/leg_only/src/CascadeTest.dart b/frog/tests/leg_only/src/CascadeTest.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e9f9b780ef3e68673578e8d78903f99dc8c60497 |
--- /dev/null |
+++ b/frog/tests/leg_only/src/CascadeTest.dart |
@@ -0,0 +1,69 @@ |
+// Copyright (c) 2012, 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 cascades. |
+ |
+class A { |
+ int x; |
+ int y; |
+ |
+ A(this.x, this.y); |
+ |
+ A setX(int x) { this.x = x; return this; } |
+ |
+ void setY(int y) { this.y = y; } |
+ |
+ Function swap() { |
+ int tmp = x; |
+ x = y; |
+ y = tmp; |
+ return this.swap; |
+ } |
+ |
+ void check(int x, int y) { |
+ Expect.equals(x, this.x); |
+ Expect.equals(y, this.y); |
+ } |
+ |
+ int operator[](var i) { |
+ if (i == 0) return x; |
+ if (i == 1) return y; |
+ if (i == "swap") return this.swap; |
+ return null; |
+ } |
+ |
+ int operator[]=(int i, int value) { |
+ if (i == 0) { |
+ x = value; |
+ } else if (i == 1) { |
+ y = value; |
+ } |
+ } |
+ |
+ /** |
+ * A pseudo-keyword. |
+ */ |
+ import() { |
+ x++; |
+ } |
+} |
+ |
+main() { |
+ A a = new A(1, 2); |
+ a..check(1, 2) |
+ ..swap()..check(2, 1) |
+ ..x = 4..y = 9..check(4, 9) |
+ ..setX(10)..check(10, 9) |
+ ..y = 5..check(10, 5) |
+ ..swap()()()..check(5, 10) |
+ ..[0] = 2..check(2, 10) |
+ ..setX(10).setY(3)..check(10, 3) |
+ ..setX(7)["swap"]()..check(3, 7) |
+ ..import()..check(4, 7) |
+ ..["swap"]()()()..check(7, 4); |
+ a.check(7,4); |
+ a..(42); /// 01: compile-time error |
+ a..37; /// 02: compile-time error |
+ a.."foo"; /// 03: compile-time error |
+} |