[interp] disable assemblyresolve_event6.exe
[mono.git] / mono / tests / cominterop.cs
index 08e9880f87716ca673fa4e96456c38241475f9f9..4a5bd8fbc6fddfd4f0ac16635bca10ae077060ee 100644 (file)
@@ -66,42 +66,81 @@ public class Tests
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_sbyte([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_sbyte_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_byte([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_byte_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_short([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_short_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_ushort([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_ushort_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_int([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_int_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_uint([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_uint_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_long([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_long_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_ulong([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_ulong_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_float([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_float_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_double([MarshalAs(UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_double_byref([MarshalAs(UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_bstr ([MarshalAs (UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_bstr_byref ([MarshalAs (UnmanagedType.Struct)]out object obj);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_variant_out_bool_true ([MarshalAs (UnmanagedType.Struct)]out object obj);
 
+       [DllImport("libtest")]
+       public static extern int mono_test_marshal_variant_out_bool_true_byref ([MarshalAs (UnmanagedType.Struct)]out object obj);
+
        [DllImport ("libtest")]
        public static extern int mono_test_marshal_variant_out_bool_false ([MarshalAs (UnmanagedType.Struct)]out object obj);
 
+       [DllImport ("libtest")]
+       public static extern int mono_test_marshal_variant_out_bool_false_byref ([MarshalAs (UnmanagedType.Struct)]out object obj);
+
 
        public delegate int VarFunc (VarEnum vt, [MarshalAs (UnmanagedType.Struct)] object obj);
 
@@ -212,6 +251,9 @@ public class Tests
        [DllImport ("libtest")]
        public static extern int mono_test_marshal_ccw_itest ([MarshalAs (UnmanagedType.Interface)]ITestPresSig itest);
 
+       [DllImport ("libtest")]
+       public static extern int mono_test_marshal_array_ccw_itest (int count, [MarshalAs (UnmanagedType.LPArray, SizeParamIndex=0)] ITest[] ppUnk);
+
        [DllImport("libtest")]
        public static extern int mono_test_marshal_safearray_out_1dim_vt_bstr_empty ([MarshalAs (UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)]out Array array);
 
@@ -389,10 +431,35 @@ public class Tests
                        if (mono_test_marshal_variant_out_bool_true_unmanaged (reffunc) != 0)
                                return 61;
 
+                       if (mono_test_marshal_variant_out_sbyte_byref (out obj) != 0 || (sbyte)obj != 100)
+                               return 97;
+                       if (mono_test_marshal_variant_out_byte_byref (out obj) != 0 || (byte)obj != 100)
+                               return 98;
+                       if (mono_test_marshal_variant_out_short_byref (out obj) != 0 || (short)obj != 314)
+                               return 99;
+                       if (mono_test_marshal_variant_out_ushort_byref (out obj) != 0 || (ushort)obj != 314)
+                               return 100;
+                       if (mono_test_marshal_variant_out_int_byref (out obj) != 0 || (int)obj != 314)
+                               return 101;
+                       if (mono_test_marshal_variant_out_uint_byref (out obj) != 0 || (uint)obj != 314)
+                               return 102;
+                       if (mono_test_marshal_variant_out_long_byref (out obj) != 0 || (long)obj != 314)
+                               return 103;
+                       if (mono_test_marshal_variant_out_ulong_byref (out obj) != 0 || (ulong)obj != 314)
+                               return 104;
+                       if (mono_test_marshal_variant_out_float_byref (out obj) != 0 || ((float)obj - 3.14) / 3.14 > .001)
+                               return 105;
+                       if (mono_test_marshal_variant_out_double_byref (out obj) != 0 || ((double)obj - 3.14) / 3.14 > .001)
+                               return 106;
+                       if (mono_test_marshal_variant_out_bstr_byref (out obj) != 0 || (string)obj != "PI")
+                               return 107;
+
                        #endregion // VARIANT Tests
 
                        #region Runtime Callable Wrapper Tests
 
+#if !MOBILE
+
                        IntPtr pUnk;
                        if (mono_test_marshal_com_object_create (out pUnk) != 0)
                                return 145;
@@ -469,6 +536,9 @@ public class Tests
                        if (TestITestDelegate (itest) != 0)
                                return 174;
 
+                       if (TestIfaceNoIcall (itest as ITestPresSig) != 0)
+                               return 201;
+
                        itest = new TestClass ();
 
                        if (TestITest (itest) != 0)
@@ -479,6 +549,9 @@ public class Tests
                        if (TestITest (itest) != 0)
                                return 176;
 
+
+#endif
+
                        #endregion // Runtime Callable Wrapper Tests
 
                        #region COM Callable Wrapper Tests
@@ -494,6 +567,11 @@ public class Tests
 
                        mono_test_marshal_ccw_itest (test_pres_sig);
 
+                       // test for Xamarin-47560
+                       var tests = new[] { test.Test };
+                       if (mono_test_marshal_array_ccw_itest (1, tests) != 0)
+                               return 201;
+
                        #endregion // COM Callable Wrapper Tests
 
                        #region SAFEARRAY tests
@@ -709,6 +787,7 @@ public class Tests
                void ITestIn ([MarshalAs (UnmanagedType.Interface)]ITest val);
                [MethodImplAttribute (MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
                void ITestOut ([MarshalAs (UnmanagedType.Interface)]out ITest val);
+               int Return22NoICall();
        }
 
        [ComImport ()]
@@ -760,6 +839,8 @@ public class Tests
                [MethodImplAttribute (MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
                [PreserveSig ()]
                int ITestOut ([MarshalAs (UnmanagedType.Interface)]out ITestPresSig val);
+               [PreserveSig ()]
+               int Return22NoICall();
        }
 
        [System.Runtime.InteropServices.GuidAttribute ("00000000-0000-0000-0000-000000000002")]
@@ -799,6 +880,9 @@ public class Tests
                public virtual extern void ITestIn ([MarshalAs (UnmanagedType.Interface)]ITest val);
                [MethodImplAttribute (MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
                public virtual extern void ITestOut ([MarshalAs (UnmanagedType.Interface)]out ITest val);
+
+               [MethodImplAttribute (MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+               public virtual extern int Return22NoICall();
        }
 
        [System.Runtime.InteropServices.GuidAttribute ("00000000-0000-0000-0000-000000000002")]
@@ -938,6 +1022,11 @@ public class Tests
                        val = new ManagedTestPresSig ();
                        return 0;
                }
+
+               public int Return22NoICall()
+               {
+                       return 88;
+               }
        }
 
        public class ManagedTest : ITest
@@ -1027,6 +1116,11 @@ public class Tests
                                return new ManagedTest ();
                        }
                }
+
+               public int Return22NoICall()
+               {
+                       return 99;
+               }
        }
 
        public static int mono_test_marshal_variant_in_callback (VarEnum vt, object obj)
@@ -1240,6 +1334,10 @@ public class Tests
                }
                return 0;
        }
+
+       public static int TestIfaceNoIcall (ITestPresSig itest) {
+               return itest.Return22NoICall () == 22 ? 0 : 1;
+       }
 }
 
 public class TestVisible