Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/Java.Interop/Java.Interop/JniType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,11 @@ public string Name {
}
}

public override string ToString ()
{
return $"JniType(Name='{Name}' PeerReference={PeerReference})";
}

#if XA_INTEGRATION
internal
#else // !XA_INTEGRATION
Expand Down
18 changes: 10 additions & 8 deletions tests/Java.Interop-Tests/Java.Interop/JavaExceptionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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__
}
}

Expand Down
9 changes: 6 additions & 3 deletions tests/Java.Interop-Tests/Java.Interop/JniTypeTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
}
}
}
Expand Down