X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Ftests%2Fpinvoke3.cs;h=ccdaa38fedde6a18bb593ff893e27261ff61f9e9;hb=e33073fdad216617768c1b5938b76807c1f37b28;hp=c9821b1704fbb0e79e9b802bf9d029eae322079c;hpb=a46a2dc6f8a6f823d7eafd9c59947e46895ab5ec;p=mono.git diff --git a/mono/tests/pinvoke3.cs b/mono/tests/pinvoke3.cs index c9821b1704f..ccdaa38fedd 100644 --- a/mono/tests/pinvoke3.cs +++ b/mono/tests/pinvoke3.cs @@ -710,6 +710,49 @@ public class Tests { } } + public delegate int ArrayDelegate4_2 (int i, + string j, + string[] arr); + + [DllImport ("libtest", EntryPoint="mono_test_marshal_array_delegate")] + public static extern int mono_test_marshal_array_delegate4_2 (string[] arr, int len, ArrayDelegate4_2 d); + + public static int array_delegate4_2 (int i, string j, string[] arr) { + return (arr == null) ? 0 : 1; + } + + public static int test_0_marshal_array_delegate_no_marshal_directive () { + try { + mono_test_marshal_array_delegate4_2 (null, 0, new ArrayDelegate4_2 (array_delegate4_2)); + return 1; + } + catch (MarshalDirectiveException) { + return 0; + } + } + + public delegate int ArrayDelegate4_3 (int i, + string j, + string[] arr); + + [DllImport ("libtest", EntryPoint="mono_test_marshal_array_delegate")] + public static extern int mono_test_marshal_array_delegate4_3 (string[] arr, int len, ArrayDelegate4_3 d); + + public int array_delegate4_3 (int i, string j, string[] arr) { + return (arr == null) ? 0 : 1; + } + + public static int test_0_marshal_array_delegate_no_marshal_directive_instance () { + try { + Tests t = new Tests (); + mono_test_marshal_array_delegate4_3 (null, 0, new ArrayDelegate4_3 (t.array_delegate4_3)); + return 1; + } + catch (MarshalDirectiveException) { + return 0; + } + } + public delegate int ArrayDelegate5 (int i, string j, [In, MarshalAs(UnmanagedType.LPArray, @@ -873,6 +916,23 @@ public class Tests { return mono_test_marshal_inout_byval_class_delegate (new InOutByvalClassDelegate (delegate_test_byval_class_inout)); } + /* + * Returning unicode strings + */ + [return: MarshalAs(UnmanagedType.LPWStr)] + public delegate string ReturnUnicodeStringDelegate([MarshalAs(UnmanagedType.LPWStr)] string message); + + [DllImport ("libtest", EntryPoint="mono_test_marshal_return_unicode_string_delegate")] + public static extern int mono_test_marshal_return_unicode_string_delegate (ReturnUnicodeStringDelegate d); + + public static String return_unicode_string_delegate (string message) { + return message; + } + + public static int test_0_marshal_return_unicode_string_delegate () { + return mono_test_marshal_return_unicode_string_delegate (new ReturnUnicodeStringDelegate (return_unicode_string_delegate)); + } + /* * Returning string arrays */