Skip to content

Commit be24451

Browse files
committed
Add a "more complete" JavaCallableWrappers test
1 parent bd8e058 commit be24451

File tree

3 files changed

+89
-3
lines changed

3 files changed

+89
-3
lines changed

tests/Java.Interop.Tools.JavaCallableWrappers-Tests/Java.Interop.Tools.JavaCallableWrappers/JavaCallableWrapperGeneratorTests.cs

+49
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,55 @@ public void monodroidClearReferences ()
104104
Assert.AreEqual (expected, actual);
105105
}
106106

107+
[Test]
108+
public void GenerateTypeMentioningNestedInvoker ()
109+
{
110+
var actual = Generate (typeof (ApplicationName.ActivityLifecycleCallbacks));
111+
var expected = """
112+
package application;
113+
114+
115+
public class Name_ActivityLifecycleCallbacks
116+
extends java.lang.Object
117+
implements
118+
mono.android.IGCUserPeer,
119+
java.lang.Object
120+
{
121+
/** @hide */
122+
public static final String __md_methods;
123+
static {
124+
__md_methods =
125+
"n_onActivityCreated:(Landroid/app/Activity;Landroid/os/Bundle;)V:GetOnActivityCreated_Landroid_app_Activity_Landroid_os_Bundle_Handler:Android.App.Application+IActivityLifecycleCallbacksInvoker, Mono.Android\n" +
126+
"";
127+
mono.android.Runtime.register ("Xamarin.Android.ToolsTests.ApplicationName+ActivityLifecycleCallbacks, Java.Interop.Tools.JavaCallableWrappers-Tests", Name_ActivityLifecycleCallbacks.class, __md_methods);
128+
}
129+
130+
public void onActivityCreated (android.app.Activity p0, android.os.Bundle p1)
131+
{
132+
n_onActivityCreated (p0, p1);
133+
}
134+
135+
private native void n_onActivityCreated (android.app.Activity p0, android.os.Bundle p1);
136+
137+
private java.util.ArrayList refList;
138+
public void monodroidAddReference (java.lang.Object obj)
139+
{
140+
if (refList == null)
141+
refList = new java.util.ArrayList ();
142+
refList.add (obj);
143+
}
144+
145+
public void monodroidClearReferences ()
146+
{
147+
if (refList != null)
148+
refList.clear ();
149+
}
150+
}
151+
152+
""";
153+
Assert.AreEqual (expected, actual);
154+
}
155+
107156
static string Generate (Type type, string applicationJavaClass = null, string monoRuntimeInit = null, JavaPeerStyle style = JavaPeerStyle.XAJavaInterop1)
108157
{
109158
var reader_options = new CallableWrapperReaderOptions {

tests/Java.Interop.Tools.JavaCallableWrappers-Tests/Java.Interop.Tools.JavaCallableWrappers/SupportDeclarations.cs

+35
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,26 @@ class Application : Java.Lang.Object
2222
protected virtual void OnCreate ()
2323
{
2424
}
25+
26+
[Register ("android/app/Application$ActivityLifecycleCallbacks", DoNotGenerateAcw = true)]
27+
public partial interface IActivityLifecycleCallbacks {
28+
[Register (
29+
name: "onActivityCreated",
30+
signature: "(Landroid/app/Activity;Landroid/os/Bundle;)V",
31+
connector: "GetOnActivityCreated_Landroid_app_Activity_Landroid_os_Bundle_Handler:Android.App.Application/IActivityLifecycleCallbacksInvoker, Mono.Android")]
32+
void OnActivityCreated (Android.App.Activity activity, global::Android.OS.Bundle savedInstanceState);
33+
}
34+
35+
internal class IActivityLifecycleCallbacksInvoker : Java.Lang.Object, IActivityLifecycleCallbacks {
36+
static Delegate GetOnActivityCreated_Landroid_app_Activity_Landroid_os_Bundle_Handler ()
37+
{
38+
return null;
39+
}
40+
41+
public void OnActivityCreated (Android.App.Activity activity, global::Android.OS.Bundle savedInstanceState)
42+
{
43+
}
44+
}
2545
}
2646

2747
[Register ("android/app/Activity", DoNotGenerateAcw = true)]
@@ -43,6 +63,14 @@ public virtual void OnCreate (Java.Lang.Object arguments)
4363
}
4464
}
4565

66+
namespace Android.OS {
67+
68+
[Register ("android/os/Bundle", DoNotGenerateAcw = true)]
69+
class Bundle : Java.Lang.Object
70+
{
71+
}
72+
}
73+
4674
namespace Android.Runtime {
4775

4876
interface IJavaObject
@@ -72,6 +100,7 @@ static class SupportDeclarations
72100
typeof (AbstractClass),
73101
typeof (ActivityName),
74102
typeof (ApplicationName),
103+
typeof (ApplicationName.ActivityLifecycleCallbacks),
75104
typeof (DefaultName),
76105
typeof (DefaultName.A),
77106
typeof (DefaultName.A.B),
@@ -139,6 +168,12 @@ class ActivityName : Java.Lang.Object
139168
[Application (Name = "application.Name")]
140169
class ApplicationName : Application
141170
{
171+
public class ActivityLifecycleCallbacks : Java.Lang.Object, Application.IActivityLifecycleCallbacks
172+
{
173+
public void OnActivityCreated (Activity activity, global::Android.OS.Bundle savedInstanceState)
174+
{
175+
}
176+
}
142177
}
143178

144179
class IndirectApplication : ApplicationName

tests/Java.Interop.Tools.JavaCallableWrappers-Tests/Java.Interop.Tools.JavaCallableWrappers/TypeNameMapGeneratorTests.cs

+5-3
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public void WriteJavaToManaged ()
5050
v.WriteJavaToManaged (o);
5151
var a = ToArray (o);
5252
Save (a, "__j2m");
53-
var length = 190;
53+
var length = 193;
5454
var offset = 76;
5555
var e =
5656
"version=1\u0000" +
@@ -59,6 +59,7 @@ public void WriteJavaToManaged ()
5959
"value-offset=" + offset + "\u0000" +
6060
GetJ2MEntryLine (typeof (ActivityName), "activity/Name", offset, length) +
6161
GetJ2MEntryLine (typeof (ApplicationName), "application/Name", offset, length) +
62+
GetJ2MEntryLine (typeof (ApplicationName.ActivityLifecycleCallbacks), "application/Name_ActivityLifecycleCallbacks", offset, length) +
6263
GetJ2MEntryLine (typeof (DefaultName), "crc64197ae30a36756915/DefaultName", offset, length) +
6364
GetJ2MEntryLine (typeof (DefaultName.A), "crc64197ae30a36756915/DefaultName_A", offset, length) +
6465
GetJ2MEntryLine (typeof (DefaultName.A.B), "crc64197ae30a36756915/DefaultName_A_B", offset, length) +
@@ -128,8 +129,8 @@ public void WriteManagedToJava ()
128129
v.WriteManagedToJava (o);
129130
var a = ToArray (o);
130131
Save (a, "__m2j");
131-
var length = 190;
132-
var offset = 114;
132+
var length = 193;
133+
var offset = 117;
133134
var e =
134135
"version=1\u0000" +
135136
$"entry-count={types.Count}\u0000" +
@@ -138,6 +139,7 @@ public void WriteManagedToJava ()
138139
GetM2JEntryLine (typeof (AbstractClass), "my/AbstractClass", offset, length) +
139140
GetM2JEntryLine (typeof (AbstractClassInvoker), "my/AbstractClass", offset, length) +
140141
GetM2JEntryLine (typeof (ActivityName), "activity/Name", offset, length) +
142+
GetM2JEntryLine (typeof (ApplicationName.ActivityLifecycleCallbacks), "application/Name_ActivityLifecycleCallbacks", offset, length) +
141143
GetM2JEntryLine (typeof (ApplicationName), "application/Name", offset, length) +
142144
GetM2JEntryLine (typeof (DefaultName.A.B), "crc64197ae30a36756915/DefaultName_A_B", offset, length) +
143145
GetM2JEntryLine (typeof (DefaultName.A), "crc64197ae30a36756915/DefaultName_A", offset, length) +

0 commit comments

Comments
 (0)