Skip to content

Commit 6e5b516

Browse files
committed
#22 - Further work on generics / parameterized-types
1 parent c7a0a36 commit 6e5b516

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

src/test/java/org/hibernate/models/generics/CollectionTests.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,25 @@ void testWildcard(Index index) {
229229
assertThat( superStuffFieldWildcardType.isExtends() ).isFalse();
230230
assertThat( superStuffFieldWildcardType.getBound().getTypeKind() ).isEqualTo( TypeDetails.Kind.CLASS );
231231
assertThat( superStuffFieldWildcardType.getBound().asClassType().getClassDetails().getName() ).endsWith( "Stuff" );
232+
233+
final FieldDetails namedStuffField = classDetails.findFieldByName( "namedStuff" );
234+
final TypeDetails namedStuffFieldType = namedStuffField.getType();
235+
assertThat( namedStuffFieldType.isImplementor( Collection.class ) ).isFalse();
236+
assertThat( namedStuffFieldType.isImplementor( List.class ) ).isFalse();
237+
assertThat( namedStuffFieldType.isImplementor( Set.class ) ).isFalse();
238+
assertThat( namedStuffFieldType.isImplementor( Map.class ) ).isTrue();
239+
assertThat( namedStuffFieldType.getTypeKind() ).isEqualTo( TypeDetails.Kind.PARAMETERIZED_TYPE );
240+
assertThat( namedStuffFieldType.asParameterizedType().getArguments() ).hasSize( 2 );
241+
assertThat( namedStuffFieldType.asParameterizedType().getArguments().get( 0 ).getTypeKind() ).isEqualTo( TypeDetails.Kind.CLASS );
242+
assertThat( namedStuffFieldType.asParameterizedType().getArguments().get( 0 ).asClassType().getClassDetails().toJavaClass() ).isEqualTo( String.class );
243+
assertThat( namedStuffFieldType.asParameterizedType().getArguments().get( 1 ).getTypeKind() ).isEqualTo( TypeDetails.Kind.WILDCARD_TYPE );
244+
final WildcardTypeDetails namedStuffFieldValueWildcardType = namedStuffFieldType.asParameterizedType()
245+
.getArguments()
246+
.get( 1 )
247+
.asWildcardType();
248+
assertThat( namedStuffFieldValueWildcardType.isExtends() ).isTrue();
249+
assertThat( namedStuffFieldValueWildcardType.getBound().getTypeKind() ).isEqualTo( TypeDetails.Kind.CLASS );
250+
assertThat( namedStuffFieldValueWildcardType.getBound().asClassType().getClassDetails().getName() ).endsWith( "Stuff" );
232251
}
233252

234253
@SuppressWarnings("unused")
@@ -266,5 +285,7 @@ static class Hat extends Stuff {
266285
static class Things {
267286
List<? extends Stuff> extendsStuff;
268287
List<? super Stuff> superStuff;
288+
289+
Map<String, ? extends Stuff> namedStuff;
269290
}
270291
}

0 commit comments

Comments
 (0)