| // Copyright (c) 2023, 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. |
| |
| // Tests for NativeFunctionPointer.asFunction transformation. |
| |
| import 'dart:ffi'; |
| |
| testVoidNoArg() { |
| final pointer = |
| Pointer<NativeFunction<Void Function()>>.fromAddress(0xdeadbeef); |
| final function = pointer.asFunction<void Function()>(); |
| function(); |
| } |
| |
| testIntInt() { |
| final pointer = |
| Pointer<NativeFunction<Int32 Function(Int64)>>.fromAddress(0xdeadbeef); |
| final function = pointer.asFunction<int Function(int)>(); |
| return function(42); |
| } |
| |
| testLeaf5Args() { |
| final pointer = Pointer< |
| NativeFunction< |
| Int32 Function( |
| Int32, Int32, Int32, Int32, Int32)>>.fromAddress(0xdeadbeef); |
| final function = |
| pointer.asFunction<int Function(int, int, int, int, int)>(isLeaf: true); |
| return function(1, 2, 3, 4, 5); |
| } |
| |
| void main() { |
| testVoidNoArg(); |
| testIntInt(); |
| testLeaf5Args(); |
| } |