Index: tests/language/argument_definition2_test.dart |
=================================================================== |
--- tests/language/argument_definition2_test.dart (revision 0) |
+++ tests/language/argument_definition2_test.dart (revision 0) |
@@ -0,0 +1,65 @@ |
+// 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. |
+ |
+test1(bool passed, [a = 42]) { |
+ if (passed) { |
+ Expect.equals(54, a); |
+ Expect.isTrue(?a); |
+ } else { |
+ Expect.equals(42, a); |
+ Expect.isFalse(?a); |
+ } |
+ Expect.isTrue(?passed); |
+} |
+ |
+test2() { |
+ var closure = (passed, [a = 42]) { |
+ if (passed) { |
+ Expect.equals(54, a); |
+ Expect.isTrue(?a); |
+ } else { |
+ Expect.equals(42, a); |
+ Expect.isFalse(?a); |
+ } |
+ Expect.isTrue(?passed); |
+ }; |
+ closure(true, 54); |
+ closure(false); |
+} |
+ |
+class A { |
+ test3(bool passed, [a = 42]) { |
+ if (passed) { |
+ Expect.equals(54, a); |
+ Expect.isTrue(?a); |
+ } else { |
+ Expect.equals(42, a); |
+ Expect.isFalse(?a); |
+ } |
+ Expect.isTrue(?passed); |
+ } |
+} |
+ |
+int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1)); |
+ |
+main() { |
+ test1(true, 54); |
+ test1(false); |
+ test2(); |
+ new A().test3(true, 54); |
+ new A().test3(false); |
+ |
+ var things = [test1, test2, new A().test3]; |
+ |
+ var closure = things[inscrutable(0)]; |
+ closure(true, 54); |
+ closure(false); |
+ |
+ closure = things[inscrutable(1)]; |
+ closure(); |
+ |
+ closure = things[inscrutable(2)]; |
+ closure(true, 54); |
+ closure(false); |
+} |