diff --git a/src/Java.Interop/Java.Interop/JniType.cs b/src/Java.Interop/Java.Interop/JniType.cs index 0ebcf7a76..83837d10f 100644 --- a/src/Java.Interop/Java.Interop/JniType.cs +++ b/src/Java.Interop/Java.Interop/JniType.cs @@ -57,6 +57,11 @@ public string Name { } } + public override string ToString () + { + return $"JniType(Name='{Name}' PeerReference={PeerReference})"; + } + #if XA_INTEGRATION internal #else // !XA_INTEGRATION diff --git a/tests/Java.Interop-Tests/Java.Interop/JavaExceptionTests.cs b/tests/Java.Interop-Tests/Java.Interop/JavaExceptionTests.cs index 19bc51a64..e663fd516 100644 --- a/tests/Java.Interop-Tests/Java.Interop/JavaExceptionTests.cs +++ b/tests/Java.Interop-Tests/Java.Interop/JavaExceptionTests.cs @@ -14,28 +14,30 @@ public void StackTrace () { try { new JniType ("this/type/had/better/not/exist"); - } catch (JavaException e) { + } +#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.JavaStackTrace.StartsWith ("java.lang.ClassNotFoundException: ", StringComparison.Ordinal) || + e.StackTrace.Contains ("java.lang.ClassNotFoundException: ", StringComparison.Ordinal) || // Dalvik, JVM - e.JavaStackTrace.StartsWith ("java.lang.NoClassDefFoundError: this/type/had/better/not/exist", StringComparison.Ordinal)); + e.StackTrace.Contains ("java.lang.NoClassDefFoundError: this/type/had/better/not/exist", StringComparison.Ordinal)); e.Dispose (); -#if __ANDROID__ - } catch (Java.Lang.Throwable e) { + } +#endif // __ANDROID__ + catch (JavaException 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) || + e.JavaStackTrace.StartsWith ("java.lang.ClassNotFoundException: ", StringComparison.Ordinal) || // Dalvik, JVM - e.StackTrace.Contains ("java.lang.NoClassDefFoundError: this/type/had/better/not/exist", StringComparison.Ordinal)); + e.JavaStackTrace.StartsWith ("java.lang.NoClassDefFoundError: this/type/had/better/not/exist", StringComparison.Ordinal)); e.Dispose (); -#endif // __ANDROID__ } } diff --git a/tests/Java.Interop-Tests/Java.Interop/JniTypeTest.cs b/tests/Java.Interop-Tests/Java.Interop/JniTypeTest.cs index 0fb59d7cf..9d3d8c294 100644 --- a/tests/Java.Interop-Tests/Java.Interop/JniTypeTest.cs +++ b/tests/Java.Interop-Tests/Java.Interop/JniTypeTest.cs @@ -141,9 +141,11 @@ public unsafe void Name () var Class_getMethod = Class_class.GetInstanceMethod ("getMethod", "(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;"); var Method_getReturnType = Method_class.GetInstanceMethod ("getReturnType", "()Ljava/lang/Class;"); var hashCode_str = JniEnvironment.Strings.NewString ("hashCode"); - var hashCode_args = stackalloc JniArgumentValue [1]; - hashCode_args [0] = new JniArgumentValue (hashCode_str); - var Object_hashCode = JniEnvironment.InstanceMethods.CallObjectMethod (Object_class.PeerReference, Class_getMethod, hashCode_args); + var emptyArray = JniEnvironment.Arrays.NewObjectArray (0, Class_class.PeerReference, new JniObjectReference ()); + var getHashcodeMethodArgs = stackalloc JniArgumentValue [2]; + getHashcodeMethodArgs [0] = new JniArgumentValue (hashCode_str); + getHashcodeMethodArgs [1] = new JniArgumentValue (emptyArray); + var Object_hashCode = JniEnvironment.InstanceMethods.CallObjectMethod (Object_class.PeerReference, Class_getMethod, getHashcodeMethodArgs); var Object_hashCode_rt = JniEnvironment.InstanceMethods.CallObjectMethod (Object_hashCode, Method_getReturnType); try { Assert.AreEqual ("java/lang/Object", Object_class.Name); @@ -154,6 +156,7 @@ public unsafe void Name () JniObjectReference.Dispose (ref hashCode_str); JniObjectReference.Dispose (ref Object_hashCode); JniObjectReference.Dispose (ref Object_hashCode_rt); + JniObjectReference.Dispose (ref emptyArray); } } }