// 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. library test.invoke_closurization_test; import 'dart:mirrors'; import 'package:expect/expect.dart'; class C { instanceMethod(x, y, z) => '$x+$y+$z'; static staticFunction(x, y, z) => '$x-$y-$z'; } libraryFunction(x, y, z) => '$x:$y:$z'; testSync() { var result; C c = new C(); InstanceMirror im = reflect(c); result = im.getField(#instanceMethod); Expect.isTrue(result.reflectee is Function, "Should be closure"); Expect.equals("A+B+C", result.reflectee('A', 'B', 'C')); ClassMirror cm = reflectClass(C); result = cm.getField(#staticFunction); Expect.isTrue(result.reflectee is Function, "Should be closure"); Expect.equals("A-B-C", result.reflectee('A', 'B', 'C')); LibraryMirror lm = cm.owner as LibraryMirror; result = lm.getField(#libraryFunction); Expect.isTrue(result.reflectee is Function, "Should be closure"); Expect.equals("A:B:C", result.reflectee('A', 'B', 'C')); } main() { testSync(); }