2003-10-06 Zoltan Varga <vargaz@freemail.hu>
authorZoltan Varga <vargaz@gmail.com>
Mon, 6 Oct 2003 15:52:55 +0000 (15:52 -0000)
committerZoltan Varga <vargaz@gmail.com>
Mon, 6 Oct 2003 15:52:55 +0000 (15:52 -0000)
* mono/tests/pinvoke2.cs mono/tests/libtest.c: Add array of structs
marshalling test.

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

ChangeLog
mono/tests/libtest.c
mono/tests/pinvoke2.cs

index 94143a1c7d9f2fdce71a8dc3c05c0da41d641abf..c54b5e5d99b210abb28dc769af6c3cabfed39a89 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mono/tests/pinvoke2.cs mono/tests/libtest.c: Add array of structs
+       marshalling test.
+
 2003-10-04  Bernie Solomon  <bernard@ugsolutions.com>
 
        * mono/tests/libtest.c: remove warnings except
index c6afc98057a19c5eb00a73c243b4ae32a8d0bc3e..f0a6e93187610c9971c9f752c7baa3c90d759bf2 100644 (file)
@@ -267,6 +267,21 @@ mono_test_marshal_struct2 (simplestruct2 ss)
        return 1;
 }
 
+int
+mono_test_marshal_struct_array (simplestruct2 *ss)
+{
+       if (ss[0].a == 0 && ss[0].b == 1 && ss[0].c == 0 &&
+           !strcmp (ss[0].d, "TEST") && 
+           ss[0].e == 99 && ss[0].f == 1.5 && ss[0].g == 42 && ss[0].h == (guint64)123)
+               return 0;
+
+       if (ss[1].a == 0 && ss[1].b == 1 && ss[1].c == 0 &&
+           !strcmp (ss[1].d, "TEST") && 
+           ss[1].e == 99 && ss[1].f == 1.5 && ss[1].g == 42 && ss[1].h == (guint64)123)
+               return 0;
+
+       return 1;
+}
 
 typedef int (*SimpleDelegate) (int a);
 
index 590c3118f4c6fcc0d1900c48094fe8e963424111..ffd2c0c579f397188b0170394fc69844b9cd4951 100755 (executable)
@@ -46,6 +46,9 @@ public class Test {
        [DllImport ("libtest", EntryPoint="mono_test_marshal_struct2")]
        public static extern int mono_test_marshal_struct2 (SimpleStruct2 ss);
 
+       [DllImport ("libtest", EntryPoint="mono_test_marshal_struct_array")]
+       public static extern int mono_test_marshal_struct_array (SimpleStruct2[] ss);
+
        [DllImport ("libtest", EntryPoint="mono_test_marshal_delegate")]
        public static extern int mono_test_marshal_delegate (SimpleDelegate d);
 
@@ -75,13 +78,21 @@ public class Test {
                ss2.f = 1.5;
                ss2.g = 42;
                ss2.h = 123L;
+
                if (mono_test_marshal_struct2 (ss2) != 0)
                        return 4;
+
+               SimpleStruct2[] ss_arr = new SimpleStruct2 [2];
+               ss_arr [0] = ss2;
+               ss_arr [1] = ss2;
+
+               if (mono_test_marshal_struct_array (ss_arr) != 0)
+                       return 5;
                
                SimpleDelegate d = new SimpleDelegate (delegate_test);
 
                if (mono_test_marshal_delegate (d) != 0)
-                       return 5;
+                       return 6;
 
                return 0;
        }