diff --git a/tests/Java.Interop-Tests/Java.Interop-Tests.csproj b/tests/Java.Interop-Tests/Java.Interop-Tests.csproj index 4e881e793..b4ae99498 100644 --- a/tests/Java.Interop-Tests/Java.Interop-Tests.csproj +++ b/tests/Java.Interop-Tests/Java.Interop-Tests.csproj @@ -10,6 +10,7 @@ + $(TestOutputFullPath) diff --git a/tests/Java.Interop-Tests/Java.Interop/JavaExceptionTests.cs b/tests/Java.Interop-Tests/Java.Interop/JavaExceptionTests.cs index 8469b55a4..d82a7ac0a 100644 --- a/tests/Java.Interop-Tests/Java.Interop/JavaExceptionTests.cs +++ b/tests/Java.Interop-Tests/Java.Interop/JavaExceptionTests.cs @@ -102,9 +102,7 @@ public void InnerExceptionIsNotAProxy () static JavaException CreateJavaProxyThrowable (Exception value) { - var JavaProxyThrowable_type = typeof(JavaObject) - .Assembly - .GetType ("Java.Interop.JavaProxyThrowable", throwOnError :true); + var JavaProxyThrowable_type = Type.GetType ("Java.Interop.JavaProxyThrowable, Java.Interop", throwOnError :true); var proxy = (JavaException) Activator.CreateInstance (JavaProxyThrowable_type, value); return proxy; } diff --git a/tests/Java.Interop-Tests/Java.Interop/JavaObjectArrayTest.cs b/tests/Java.Interop-Tests/Java.Interop/JavaObjectArrayTest.cs index b3e83c654..f02bbc06b 100644 --- a/tests/Java.Interop-Tests/Java.Interop/JavaObjectArrayTest.cs +++ b/tests/Java.Interop-Tests/Java.Interop/JavaObjectArrayTest.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using Java.Interop; @@ -8,7 +9,10 @@ namespace Java.InteropTests { - public abstract class JavaObjectArrayContractTest : JavaArrayContract + public abstract class JavaObjectArrayContractTest< + [DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] + T + > : JavaArrayContract { protected override System.Collections.Generic.ICollection CreateCollection (System.Collections.Generic.IEnumerable values) { diff --git a/tests/Java.Interop-Tests/Java.Interop/JniEnvironmentTests.cs b/tests/Java.Interop-Tests/Java.Interop/JniEnvironmentTests.cs index b24626161..fd91beb3d 100644 --- a/tests/Java.Interop-Tests/Java.Interop/JniEnvironmentTests.cs +++ b/tests/Java.Interop-Tests/Java.Interop/JniEnvironmentTests.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using Java.Interop; @@ -88,9 +89,10 @@ public void References_CreatedReference_LocalRef () } } + [DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.All)] static readonly Type NativeMethods_type = - typeof (JniEnvironment).Assembly.GetType ("Java.Interop.NativeMethods", throwOnError: false) ?? - typeof (JniEnvironment).Assembly.GetType ("Java.Interop.JIPinvokes.NativeMethods", throwOnError: false); + Type.GetType ("Java.Interop.NativeMethods, Java.Interop", throwOnError: false) ?? + Type.GetType ("Java.Interop.JIPinvokes.NativeMethods, Java.Interop", throwOnError: false); static Func GetNewRefFunc (string method) { diff --git a/tests/Java.Interop-Tests/Java.Interop/JniRuntimeJniValueManagerContract.cs b/tests/Java.Interop-Tests/Java.Interop/JniRuntimeJniValueManagerContract.cs index 21727ce2e..782b6e765 100644 --- a/tests/Java.Interop-Tests/Java.Interop/JniRuntimeJniValueManagerContract.cs +++ b/tests/Java.Interop-Tests/Java.Interop/JniRuntimeJniValueManagerContract.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; using System.Threading; @@ -19,6 +20,7 @@ namespace Java.InteropTests { #endif // !__ANDROID__ public abstract class JniRuntimeJniValueManagerContract : JavaVMFixture { + [DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] protected abstract Type ValueManagerType { get; } @@ -296,8 +298,12 @@ static string DumpPeers (IEnumerable peers) // Adding an instance already added in a previous scope? } - public abstract class JniRuntimeJniValueManagerContract : JniRuntimeJniValueManagerContract { - + public abstract class JniRuntimeJniValueManagerContract< + [DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] + T + > : JniRuntimeJniValueManagerContract + { + [DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] protected override Type ValueManagerType => typeof (T); } @@ -313,8 +319,10 @@ public class JniRuntimeJniValueManagerContract_Mono : JniRuntimeJniValueManagerC [TestFixture] public class JniRuntimeJniValueManagerContract_NoGCIntegration : JniRuntimeJniValueManagerContract { + [DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] static Type ManagedValueManagerType = Type.GetType ("Java.Interop.ManagedValueManager, Java.Runtime.Environment", throwOnError:true)!; + [DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] protected override Type ValueManagerType => ManagedValueManagerType; } #endif // !__ANDROID__ diff --git a/tests/Java.Interop-Tests/Java.Interop/JniValueMarshalerContractTests.cs b/tests/Java.Interop-Tests/Java.Interop/JniValueMarshalerContractTests.cs index 0608ff18a..3c5668b66 100644 --- a/tests/Java.Interop-Tests/Java.Interop/JniValueMarshalerContractTests.cs +++ b/tests/Java.Interop-Tests/Java.Interop/JniValueMarshalerContractTests.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Linq.Expressions; using System.Reflection; @@ -13,7 +14,11 @@ namespace Java.InteropTests { - public abstract class JniValueMarshalerContractTests : JavaVMFixture { + public abstract class JniValueMarshalerContractTests< + [DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] + T + > : JavaVMFixture + { protected abstract T Value {get;} @@ -211,6 +216,8 @@ public void DestroyGenericArgumentState () } [Test] + [RequiresUnreferencedCode ("CreateReturnValueFromManagedExpression")] + [RequiresDynamicCode ("CreateReturnValueFromManagedExpression")] public void CreateReturnValueFromManagedExpression () { var runtime = Expression.Variable (typeof (JniRuntime), "__jvm"); @@ -335,7 +342,11 @@ protected override string GetExpectedReturnValueFromManagedExpression (string jv } } - public abstract class JniValueMarshaler_BuiltinType_ContractTests : JniValueMarshalerContractTests { + public abstract class JniValueMarshaler_BuiltinType_ContractTests< + [DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] + T + > : JniValueMarshalerContractTests + { protected override bool IsJniValueType {get {return true;}} protected override string GetExpectedReturnValueFromManagedExpression (string jvm, string value, Expression ret) @@ -442,8 +453,11 @@ public class JniValueMarshaler_NullableDouble_ContractTests : JniValueMarshalerC protected override double? Value {get {return 8D;}} } - public abstract class JniInt32ArrayValueMarshalerContractTests : JniValueMarshalerContractTests - where T : IEnumerable + public abstract class JniInt32ArrayValueMarshalerContractTests< + [DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] + T + > : JniValueMarshalerContractTests + where T : IEnumerable { protected abstract T CreateArray (int[] values); protected abstract string ValueMarshalerSourceType {get;} @@ -647,7 +661,11 @@ public DemoValueTypeValueMarshaler () Int32Marshaler = JniRuntime.CurrentRuntime.ValueManager.GetValueMarshaler (); } - public override DemoValueType CreateGenericValue (ref JniObjectReference reference, JniObjectReferenceOptions options, Type targetType) + public override DemoValueType CreateGenericValue ( + ref JniObjectReference reference, + JniObjectReferenceOptions options, + [DynamicallyAccessedMembers (Constructors)] + Type targetType) { var v = Int32Marshaler.CreateGenericValue (ref reference, options, typeof (int)); return new DemoValueType (v);