diff --git a/src/Java.Interop/Tests/Java.Interop/JavaArrayContract.cs b/src/Java.Interop/Tests/Java.Interop/JavaArrayContract.cs index 1279e2842..b3292642c 100644 --- a/src/Java.Interop/Tests/Java.Interop/JavaArrayContract.cs +++ b/src/Java.Interop/Tests/Java.Interop/JavaArrayContract.cs @@ -12,13 +12,21 @@ public abstract class JavaArrayContract : ListContract { int lrefStartCount; +#if __ANDROID__ + [TestFixtureSetUp] +#else // __ANDROID__ [OneTimeSetUp] +#endif // __ANDROID__ public void StartArrayTests () { lrefStartCount = JniEnvironment.LocalReferenceCount; } +#if __ANDROID__ + [TestFixtureTearDown] +#else // __ANDROID__ [OneTimeTearDown] +#endif // __ANDROID__ public void EndArrayTests () { int lref = JniEnvironment.LocalReferenceCount; diff --git a/src/Java.Interop/Tests/Java.Interop/JavaExceptionTests.cs b/src/Java.Interop/Tests/Java.Interop/JavaExceptionTests.cs index b396cde41..19bc51a64 100644 --- a/src/Java.Interop/Tests/Java.Interop/JavaExceptionTests.cs +++ b/src/Java.Interop/Tests/Java.Interop/JavaExceptionTests.cs @@ -24,6 +24,18 @@ public void StackTrace () // Dalvik, JVM e.JavaStackTrace.StartsWith ("java.lang.NoClassDefFoundError: this/type/had/better/not/exist", StringComparison.Ordinal)); e.Dispose (); +#if __ANDROID__ + } catch (Java.Lang.Throwable e) { + Assert.IsTrue ( + string.Equals ("this/type/had/better/not/exist", e.Message, StringComparison.OrdinalIgnoreCase) || + e.Message.StartsWith ("Didn't find class \"this.type.had.better.not.exist\" on path: DexPathList")); + Assert.IsTrue ( + // ART + e.StackTrace.Contains ("java.lang.ClassNotFoundException: ", StringComparison.Ordinal) || + // Dalvik, JVM + e.StackTrace.Contains ("java.lang.NoClassDefFoundError: this/type/had/better/not/exist", StringComparison.Ordinal)); + e.Dispose (); +#endif // __ANDROID__ } } diff --git a/src/Java.Interop/Tests/Java.Interop/JavaObjectArrayTest.cs b/src/Java.Interop/Tests/Java.Interop/JavaObjectArrayTest.cs index 8481b1fed..b3e83c654 100644 --- a/src/Java.Interop/Tests/Java.Interop/JavaObjectArrayTest.cs +++ b/src/Java.Interop/Tests/Java.Interop/JavaObjectArrayTest.cs @@ -130,7 +130,11 @@ public class JavaObjectArray_object_ContractTest : JavaObjectArrayContractTest (() => new JavaObjectWithNoJavaPeer ()); +#if __ANDROID__ + Assert.Throws (() => new JavaObjectWithMissingJavaPeer ()).Dispose (); +#else // !__ANDROID__ Assert.Throws (() => new JavaObjectWithMissingJavaPeer ()).Dispose (); +#endif // !__ANDROID__ } [Test] diff --git a/src/Java.Interop/Tests/Java.Interop/JniRuntime.JniValueManagerTests.cs b/src/Java.Interop/Tests/Java.Interop/JniRuntime.JniValueManagerTests.cs index 9e99c1540..2e865c225 100644 --- a/src/Java.Interop/Tests/Java.Interop/JniRuntime.JniValueManagerTests.cs +++ b/src/Java.Interop/Tests/Java.Interop/JniRuntime.JniValueManagerTests.cs @@ -126,6 +126,7 @@ public void GetValue_ReturnsNullWithInvalidSafeHandle () Assert.IsNull (JniRuntime.CurrentRuntime.ValueManager.GetValue (ref invalid, JniObjectReferenceOptions.CopyAndDispose)); } +#if !NO_MARSHAL_MEMBER_BUILDER_SUPPORT [Test] public unsafe void GetValue_FindBestMatchType () { @@ -138,6 +139,7 @@ public unsafe void GetValue_FindBestMatchType () } } } +#endif // !NO_MARSHAL_MEMBER_BUILDER_SUPPORT } } diff --git a/src/Java.Interop/Tests/Java.Interop/JniTypeManagerTests.cs b/src/Java.Interop/Tests/Java.Interop/JniTypeManagerTests.cs index db1d68562..457942496 100644 --- a/src/Java.Interop/Tests/Java.Interop/JniTypeManagerTests.cs +++ b/src/Java.Interop/Tests/Java.Interop/JniTypeManagerTests.cs @@ -75,7 +75,10 @@ public void GetTypeSignature_Type () AssertGetJniTypeInfoForType (typeof (JavaArray), "[[I", true, 2); AssertGetJniTypeInfoForType (typeof (JavaArray[]), "[[[I", true, 3); +#if !__ANDROID__ + // Re-enable once typemap files contain `JavaObject` subclasses, not just Java.Lang.Object subclasses AssertGetJniTypeInfoForType (typeof (GenericHolder), GenericHolder.JniTypeName, false, 0); +#endif // !__ANDROID__ } static void AssertGetJniTypeInfoForType (Type type, string jniType, bool isKeyword, int arrayRank) diff --git a/src/Java.Interop/Tests/Java.Interop/JniTypeTest.cs b/src/Java.Interop/Tests/Java.Interop/JniTypeTest.cs index 9b916062e..0fb59d7cf 100644 --- a/src/Java.Interop/Tests/Java.Interop/JniTypeTest.cs +++ b/src/Java.Interop/Tests/Java.Interop/JniTypeTest.cs @@ -33,7 +33,11 @@ public unsafe void Sanity () [Test] public void Ctor_ThrowsIfTypeNotFound () { +#if __ANDROID__ + Assert.Throws (() => new JniType ("__this__/__type__/__had__/__better__/__not__/__Exist__")).Dispose (); +#else // __ANDROID__ Assert.Throws (() => new JniType ("__this__/__type__/__had__/__better__/__not__/__Exist__")).Dispose (); +#endif // __ANDROID__ } [Test] @@ -92,19 +96,17 @@ public void IsAssignableFrom () } [Test] - public void IsInstanceOfType () + public unsafe void IsInstanceOfType () { - using (var t = new JniType ("java/lang/Object")) - using (var b = new TestType ()) { - Assert.IsTrue (t.IsInstanceOfType (b.PeerReference)); - } - } - - [Test] - public void ObjectBinding () - { - using (var b = new TestType ()) { - Console.WriteLine ("# ObjectBinding: {0}", b.ToString ()); + using (var Object_class = new JniType ("java/lang/Object")) + using (var String_class = new JniType ("java/lang/String")) { + var String_ctor = String_class.GetConstructor ("()V"); + var s = String_class.NewObject (String_ctor, null); + try { + Assert.IsTrue (Object_class.IsInstanceOfType (s), "java.lang.String IS-NOT-A java.lang.Object?!"); + } finally { + JniObjectReference.Dispose (ref s); + } } } @@ -112,7 +114,11 @@ public void ObjectBinding () public void InvalidSignatureThrowsJniException () { using (var Integer_class = new JniType ("java/lang/Integer")) { +#if __ANDROID__ + Assert.Throws (() => Integer_class.GetConstructor ("(C)V")).Dispose (); +#else // __ANDROID__ Assert.Throws (() => Integer_class.GetConstructor ("(C)V")).Dispose (); +#endif // __ANDROID__ } } @@ -122,6 +128,7 @@ public void GetStaticFieldID () using (var System_class = new JniType ("java/lang/System")) { var System_in = System_class.GetStaticField ("in", "Ljava/io/InputStream;"); Assert.IsNotNull (System_in); + Assert.IsTrue (System_in.ID != IntPtr.Zero); } } diff --git a/src/Java.Interop/Tests/Java.Interop/TestType.cs b/src/Java.Interop/Tests/Java.Interop/TestType.cs index 6963326e4..4640d5f14 100644 --- a/src/Java.Interop/Tests/Java.Interop/TestType.cs +++ b/src/Java.Interop/Tests/Java.Interop/TestType.cs @@ -8,6 +8,7 @@ namespace Java.InteropTests { +#if !NO_MARSHAL_MEMBER_BUILDER_SUPPORT [JniTypeSignature (TestType.JniTypeName)] public partial class TestType : JavaObject { @@ -204,5 +205,6 @@ public string GetStringValue (int value) return value.ToString (); } } +#endif // !NO_MARSHAL_MEMBER_BUILDER_SUPPORT } diff --git a/src/Java.Interop/Tests/Java.Interop/TestTypeTests.cs b/src/Java.Interop/Tests/Java.Interop/TestTypeTests.cs index 8018a399c..1c47e12a3 100644 --- a/src/Java.Interop/Tests/Java.Interop/TestTypeTests.cs +++ b/src/Java.Interop/Tests/Java.Interop/TestTypeTests.cs @@ -7,18 +7,27 @@ namespace Java.InteropTests { +#if !NO_MARSHAL_MEMBER_BUILDER_SUPPORT [TestFixture] public class TestTypeTests : JavaVMFixture { int lrefStartCount; +#if __ANDROID__ + [TestFixtureSetUp] +#else // __ANDROID__ [OneTimeSetUp] +#endif // __ANDROID__ public void StartArrayTests () { lrefStartCount = JniEnvironment.LocalReferenceCount; } +#if __ANDROID__ + [TestFixtureTearDown] +#else // __ANDROID__ [OneTimeTearDown] +#endif // __ANDROID__ public void EndArrayTests () { int lref = JniEnvironment.LocalReferenceCount; @@ -52,6 +61,14 @@ public void TestCase () } } + [Test] + public void ObjectBinding () + { + using (var b = new TestType ()) { + Console.WriteLine ("# ObjectBinding: {0}", b.ToString ()); + } + } + [Test] public void UpdateInt32Array () { @@ -143,5 +160,6 @@ public void PropogateException () } } } +#endif // !NO_MARSHAL_MEMBER_BUILDER_SUPPORT }