Index: tests/lib/mirrors/function_apply_test.dart |
diff --git a/tests/lib/mirrors/function_apply_test.dart b/tests/lib/mirrors/function_apply_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..14a96f5712a87cad21d722789fc41bcfae3a6504 |
--- /dev/null |
+++ b/tests/lib/mirrors/function_apply_test.dart |
@@ -0,0 +1,41 @@ |
+// Copyright (c) 2017, 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. |
+ |
+library lib; |
+ |
+@MirrorsUsed(targets: "lib") |
+import "dart:mirrors"; |
+ |
+import "package:expect/expect.dart"; |
+ |
+class A { |
+ call(int x) => 123 + x; |
+ bar(int y) => 321 + y; |
+} |
+ |
+foo(int y) => 456 + y; |
+ |
+main() { |
+ // Static function. |
+ ClosureMirror f1 = reflect(foo); |
+ Expect.equals(1456, f1.apply([1000]).reflectee); |
+ |
+ // Local declaration. |
+ chomp(int z) => z + 42; |
+ ClosureMirror f2 = reflect(chomp); |
+ Expect.equals(1042, f2.apply([1000]).reflectee); |
+ |
+ // Local expression. |
+ ClosureMirror f3 = reflect((u) => u + 987); |
+ Expect.equals(1987, f3.apply([1000]).reflectee); |
+ |
+ // Instance property extraction. |
+ ClosureMirror f4 = reflect(new A().bar); |
+ Expect.equals(1321, f4.apply([1000]).reflectee); |
+ |
+ // Instance implementing Function via call method. |
+ ClosureMirror f5 = reflect(new A()); |
+ Expect.equals(1123, f5.apply([1000]).reflectee); |
+ |
+} |