2006-06-15 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Thu, 15 Jun 2006 17:39:15 +0000 (17:39 -0000)
committerZoltan Varga <vargaz@gmail.com>
Thu, 15 Jun 2006 17:39:15 +0000 (17:39 -0000)
* pinvoke-2.cs: Rename to pinvoke-2.2.cs.

* Makefile.am (TEST_CS2_SRC): Add pinvoke-2.2.cs

* pinvoke-2.2.cs libtest.c: Add Marshal.GetDelegateForFunctionPointer () tests.

svn path=/trunk/mono/; revision=61762

mono/tests/Makefile.am
mono/tests/libtest.c
mono/tests/pinvoke-2.2.cs [new file with mode: 0644]
mono/tests/pinvoke-2.cs [deleted file]

index c4719fa570b1ed4b852ea52dd47a96e38c7c0cc2..a155ee019099f4ecefee253aa6810e652d1bb7f4 100644 (file)
@@ -253,7 +253,7 @@ TEST_IL_SRC=                        \
        test-enum-indstoreil.il \
        even-odd.il
 
-TEST_CS2_SRC = interlocked-2.2.cs
+TEST_CS2_SRC = interlocked-2.2.cs pinvoke-2.2.cs
 TEST_IL2_SRC = find-method.2.il
 
 TESTSI_CS=$(TEST_CS_SRC:.cs=.exe)
index fbb54efe79b6439d92e4d282912a6f9c5f936a7b..96fd60c2958520a3e231351b1b7e2eaab6c23851 100644 (file)
@@ -1822,6 +1822,18 @@ mono_test_marshal_return_string_array_delegate (ReturnStringArrayDelegate d)
        return res;
 }
 
+STDCALL int
+add_delegate (int i, int j)
+{
+       return i + j;
+}
+
+STDCALL gpointer
+mono_test_marshal_return_fnptr (void)
+{
+       return &add_delegate;
+}
+
 /*
  * COM INTEROP TESTS
  */
diff --git a/mono/tests/pinvoke-2.2.cs b/mono/tests/pinvoke-2.2.cs
new file mode 100644 (file)
index 0000000..039bcda
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// pinvoke-2.cs:
+//
+//  Tests for net 2.0 pinvoke features
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+public class Tests {
+
+       public static int Main () {
+               return TestDriver.RunTests (typeof (Tests));
+       }
+
+       [UnmanagedFunctionPointerAttribute (CallingConvention.Cdecl)]
+       public delegate int CdeclDelegate (int i, int j);
+
+       [DllImport ("libtest", EntryPoint="mono_test_marshal_cdecl_delegate")]
+       public static extern int mono_test_marshal_cdecl_delegate (CdeclDelegate d);    
+
+       public static int cdecl_delegate (int i, int j) {
+               return i + j;
+       }
+
+       static int test_0_marshal_cdecl_delegate () {
+               CdeclDelegate d = new CdeclDelegate (cdecl_delegate);
+
+               return mono_test_marshal_cdecl_delegate (d);
+       }
+
+       [DllImport ("libtest", EntryPoint="mono_test_marshal_return_fnptr")]
+       public static extern IntPtr mono_test_marshal_return_fnptr ();
+
+       delegate int AddDelegate (int i, int j);
+
+       static int test_4_get_delegate_for_function_pointer () {
+               IntPtr ptr = mono_test_marshal_return_fnptr ();
+
+               AddDelegate d = (AddDelegate)Marshal.GetDelegateForFunctionPointer (ptr, typeof (AddDelegate));
+
+               return d (2, 2);
+       }
+}
diff --git a/mono/tests/pinvoke-2.cs b/mono/tests/pinvoke-2.cs
deleted file mode 100644 (file)
index 9b76e49..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-// pinvoke-2.cs:
-//
-//  Tests for net 2.0 pinvoke features
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-public class Tests {
-
-       public static int Main () {
-               return TestDriver.RunTests (typeof (Tests));
-       }
-
-       [UnmanagedFunctionPointerAttribute (CallingConvention.Cdecl)]
-       public delegate int CdeclDelegate (int i, int j);
-
-       [DllImport ("libtest", EntryPoint="mono_test_marshal_cdecl_delegate")]
-       public static extern int mono_test_marshal_cdecl_delegate (CdeclDelegate d);    
-
-       public static int cdecl_delegate (int i, int j) {
-               return i + j;
-       }
-
-       static int test_0_marshal_cdecl_delegate () {
-               CdeclDelegate d = new CdeclDelegate (cdecl_delegate);
-
-               return mono_test_marshal_cdecl_delegate (d);
-       }
-}