@@ -99,6 +99,102 @@ public void WriteKotlinUnsignedArrayTypePropertiesClass ()
99
99
100
100
Assert . AreEqual ( GetTargetedExpected ( nameof ( WriteKotlinUnsignedArrayTypePropertiesClass ) ) , writer . ToString ( ) . NormalizeLineEndings ( ) ) ;
101
101
}
102
+
103
+ [ Test ]
104
+ public void ManagedOverrideMethod_Virtual ( )
105
+ {
106
+ var xml = @"<api>
107
+ <package name='java.lang' jni-name='java/lang'>
108
+ <class abstract='false' deprecated='not deprecated' final='false' name='Object' static='false' visibility='public' jni-signature='Ljava/lang/Object;' />
109
+ </package>
110
+ <package name='com.xamarin.android' jni-name='com/xamarin/android'>
111
+ <class abstract='false' deprecated='not deprecated' extends='java.lang.Object' extends-generic-aware='java.lang.Object' jni-extends='Ljava/lang/Object;' final='false' name='MyClass' static='false' visibility='public' jni-signature='Lcom/xamarin/android/MyClass;'>
112
+ <method abstract='false' deprecated='not deprecated' final='true' name='DoStuff' jni-signature='()I' bridge='false' native='false' return='int' jni-return='I' static='false' synchronized='false' synthetic='false' visibility='public' managedOverride='virtual'></method>
113
+ </class>
114
+ </package>
115
+ </api>" ;
116
+
117
+ var gens = ParseApiDefinition ( xml ) ;
118
+ var klass = gens . Single ( g => g . Name == "MyClass" ) ;
119
+
120
+ generator . Context . ContextTypes . Push ( klass ) ;
121
+ generator . WriteType ( klass , string . Empty , new GenerationInfo ( "" , "" , "MyAssembly" ) ) ;
122
+ generator . Context . ContextTypes . Pop ( ) ;
123
+
124
+ Assert . True ( writer . ToString ( ) . Contains ( "public virtual unsafe int DoStuff ()" ) ) ;
125
+ }
126
+
127
+ [ Test ]
128
+ public void ManagedOverrideMethod_Override ( )
129
+ {
130
+ var xml = @"<api>
131
+ <package name='java.lang' jni-name='java/lang'>
132
+ <class abstract='false' deprecated='not deprecated' final='false' name='Object' static='false' visibility='public' jni-signature='Ljava/lang/Object;' />
133
+ </package>
134
+ <package name='com.xamarin.android' jni-name='com/xamarin/android'>
135
+ <class abstract='false' deprecated='not deprecated' extends='java.lang.Object' extends-generic-aware='java.lang.Object' jni-extends='Ljava/lang/Object;' final='false' name='MyClass' static='false' visibility='public' jni-signature='Lcom/xamarin/android/MyClass;'>
136
+ <method abstract='false' deprecated='not deprecated' final='true' name='DoStuff' jni-signature='()I' bridge='false' native='false' return='int' jni-return='I' static='false' synchronized='false' synthetic='false' visibility='public' managedOverride='override'></method>
137
+ </class>
138
+ </package>
139
+ </api>" ;
140
+
141
+ var gens = ParseApiDefinition ( xml ) ;
142
+ var klass = gens . Single ( g => g . Name == "MyClass" ) ;
143
+
144
+ generator . Context . ContextTypes . Push ( klass ) ;
145
+ generator . WriteType ( klass , string . Empty , new GenerationInfo ( "" , "" , "MyAssembly" ) ) ;
146
+ generator . Context . ContextTypes . Pop ( ) ;
147
+
148
+ Assert . True ( writer . ToString ( ) . Contains ( "public override unsafe int DoStuff ()" ) ) ;
149
+ }
150
+
151
+ [ Test ]
152
+ public void ManagedOverrideProperty_Virtual ( )
153
+ {
154
+ var xml = @"<api>
155
+ <package name='java.lang' jni-name='java/lang'>
156
+ <class abstract='false' deprecated='not deprecated' final='false' name='Object' static='false' visibility='public' jni-signature='Ljava/lang/Object;' />
157
+ </package>
158
+ <package name='com.xamarin.android' jni-name='com/xamarin/android'>
159
+ <class abstract='false' deprecated='not deprecated' extends='java.lang.Object' extends-generic-aware='java.lang.Object' jni-extends='Ljava/lang/Object;' final='false' name='MyClass' static='false' visibility='public' jni-signature='Lcom/xamarin/android/MyClass;'>
160
+ <method abstract='false' deprecated='not deprecated' final='true' name='getName' jni-signature='()I' bridge='false' native='false' return='int' jni-return='I' static='false' synchronized='false' synthetic='false' visibility='public' managedOverride='virtual'></method>
161
+ </class>
162
+ </package>
163
+ </api>" ;
164
+
165
+ var gens = ParseApiDefinition ( xml ) ;
166
+ var klass = gens . Single ( g => g . Name == "MyClass" ) ;
167
+
168
+ generator . Context . ContextTypes . Push ( klass ) ;
169
+ generator . WriteType ( klass , string . Empty , new GenerationInfo ( "" , "" , "MyAssembly" ) ) ;
170
+ generator . Context . ContextTypes . Pop ( ) ;
171
+
172
+ Assert . True ( writer . ToString ( ) . Contains ( "public virtual unsafe int Name {" ) ) ;
173
+ }
174
+
175
+ [ Test ]
176
+ public void ManagedOverrideProperty_Override ( )
177
+ {
178
+ var xml = @"<api>
179
+ <package name='java.lang' jni-name='java/lang'>
180
+ <class abstract='false' deprecated='not deprecated' final='false' name='Object' static='false' visibility='public' jni-signature='Ljava/lang/Object;' />
181
+ </package>
182
+ <package name='com.xamarin.android' jni-name='com/xamarin/android'>
183
+ <class abstract='false' deprecated='not deprecated' extends='java.lang.Object' extends-generic-aware='java.lang.Object' jni-extends='Ljava/lang/Object;' final='false' name='MyClass' static='false' visibility='public' jni-signature='Lcom/xamarin/android/MyClass;'>
184
+ <method abstract='false' deprecated='not deprecated' final='true' name='getName' jni-signature='()I' bridge='false' native='false' return='int' jni-return='I' static='false' synchronized='false' synthetic='false' visibility='public' managedOverride='override'></method>
185
+ </class>
186
+ </package>
187
+ </api>" ;
188
+
189
+ var gens = ParseApiDefinition ( xml ) ;
190
+ var klass = gens . Single ( g => g . Name == "MyClass" ) ;
191
+
192
+ generator . Context . ContextTypes . Push ( klass ) ;
193
+ generator . WriteType ( klass , string . Empty , new GenerationInfo ( "" , "" , "MyAssembly" ) ) ;
194
+ generator . Context . ContextTypes . Pop ( ) ;
195
+
196
+ Assert . True ( writer . ToString ( ) . Contains ( "public override unsafe int Name {" ) ) ;
197
+ }
102
198
}
103
199
104
200
[ TestFixture ]
0 commit comments