@@ -221,3 +221,88 @@ SCENARIO("gather_full_class_name")
221
221
}
222
222
}
223
223
}
224
+
225
+ SCENARIO (" find_closing_semi_colon_for_reference_type" , " [core][java_util_test]" )
226
+ {
227
+ GIVEN (" A simple reference type" )
228
+ {
229
+ std::string descriptor = " LA;" ;
230
+ // |
231
+ // 012
232
+ REQUIRE (find_closing_semi_colon_for_reference_type (descriptor, 0 ) == 2 );
233
+ }
234
+ GIVEN (" A generic reference type" )
235
+ {
236
+ std::string descriptor = " LA<TT;>;" ;
237
+ // |
238
+ // 01234567
239
+ REQUIRE (find_closing_semi_colon_for_reference_type (descriptor, 0 ) == 7 );
240
+ }
241
+ GIVEN (" A generic reference type with multiple generic params" )
242
+ {
243
+ std::string descriptor = " LA<TT;TU;>;" ;
244
+ // |
245
+ // 01234567890
246
+ REQUIRE (find_closing_semi_colon_for_reference_type (descriptor, 0 ) == 10 );
247
+ }
248
+ GIVEN (" A descriptor with multiple reference type" )
249
+ {
250
+ std::string descriptor = " LA;LB;" ;
251
+ // |
252
+ // 012
253
+ REQUIRE (find_closing_semi_colon_for_reference_type (descriptor, 0 ) == 2 );
254
+ }
255
+ GIVEN (" A descriptor with multiple reference types parsing the second" )
256
+ {
257
+ std::string descriptor = " LA;LB;" ;
258
+ // | |
259
+ // 012345
260
+ REQUIRE (find_closing_semi_colon_for_reference_type (descriptor, 3 ) == 5 );
261
+ }
262
+ GIVEN (" A descriptor inner class" )
263
+ {
264
+ std::string descriptor = " LA$B;" ;
265
+ // |
266
+ // 01234
267
+ REQUIRE (find_closing_semi_colon_for_reference_type (descriptor, 0 ) == 4 );
268
+ }
269
+ GIVEN (" A signature inner class" )
270
+ {
271
+ std::string descriptor = " LA.B;" ;
272
+ // |
273
+ // 01234
274
+ REQUIRE (find_closing_semi_colon_for_reference_type (descriptor, 0 ) == 4 );
275
+ }
276
+ GIVEN (" A inner class of a generic class" )
277
+ {
278
+ std::string descriptor = " LA<TT;>.B;" ;
279
+ // |
280
+ // 0123456789
281
+ REQUIRE (find_closing_semi_colon_for_reference_type (descriptor, 0 ) == 9 );
282
+ }
283
+ GIVEN (" A inner class of a instantiated generic class" )
284
+ {
285
+ std::string descriptor = " LA<LFoo;>.B;" ;
286
+ // |
287
+ // 012345678901
288
+ REQUIRE (find_closing_semi_colon_for_reference_type (descriptor, 0 ) == 11 );
289
+ }
290
+ GIVEN (
291
+ " A signature with multiple references and an inner class of a generic "
292
+ " class" )
293
+ {
294
+ std::string descriptor = " LA<TT;>.B;LA<TT;>.B;" ;
295
+ // |
296
+ // 0123456789
297
+ REQUIRE (find_closing_semi_colon_for_reference_type (descriptor, 0 ) == 9 );
298
+ }
299
+ GIVEN (
300
+ " A signature with multiple references and an inner class of a generic "
301
+ " class" )
302
+ {
303
+ std::string descriptor = " LA<TT;>.B;LA<TT;>.B;" ;
304
+ // | |
305
+ // 01234567890123456789
306
+ REQUIRE (find_closing_semi_colon_for_reference_type (descriptor, 10 ) == 19 );
307
+ }
308
+ }
0 commit comments