2010-06-17 Geoff Norton <gnorton@novell.com>
[mono.git] / mono / tests / pinvoke-2.2.cs
blob5b3081e44f3da3c1b7365cb72299644f1ade5e60
1 //
2 // pinvoke-2.cs:
3 //
4 // Tests for net 2.0 pinvoke features
5 //
7 using System;
8 using System.Runtime.InteropServices;
10 public class Tests {
12 public static int Main () {
13 return TestDriver.RunTests (typeof (Tests));
16 [UnmanagedFunctionPointerAttribute (CallingConvention.Cdecl)]
17 public delegate int CdeclDelegate (int i, int j);
19 [DllImport ("libtest", EntryPoint="mono_test_marshal_cdecl_delegate")]
20 public static extern int mono_test_marshal_cdecl_delegate (CdeclDelegate d);
22 public static int cdecl_delegate (int i, int j) {
23 return i + j;
26 public static int test_0_marshal_cdecl_delegate () {
27 CdeclDelegate d = new CdeclDelegate (cdecl_delegate);
29 return mono_test_marshal_cdecl_delegate (d);
32 [DllImport ("libtest", EntryPoint="mono_test_marshal_return_fnptr")]
33 public static extern IntPtr mono_test_marshal_return_fnptr ();
35 delegate int AddDelegate (int i, int j);
37 public static int test_4_get_delegate_for_function_pointer () {
38 IntPtr ptr = mono_test_marshal_return_fnptr ();
40 AddDelegate d = (AddDelegate)Marshal.GetDelegateForFunctionPointer (ptr, typeof (AddDelegate));
42 return d (2, 2);
45 [DllImport ("libtest")]
46 public static extern int mono_return_int (int i);
48 [DllImport ("libtest", EntryPoint="not_found")]
49 public static extern int not_found (int i);
51 public delegate int SimpleDelegate (int i);
53 [DllImport ("libtest")]
54 public static extern int mono_invoke_simple_delegate (SimpleDelegate d);
56 public static int test_4_native_function_to_ftnptr () {
57 return mono_invoke_simple_delegate (mono_return_int);
60 public static int test_0_native_function_to_ftnptr_not_found () {
61 try {
62 return mono_invoke_simple_delegate (not_found);
63 } catch (EntryPointNotFoundException) {
64 return 0;