Skip to content

Commit dd230d9

Browse files
committed
add a new unit test checking that JDK Map's inner classes are handled correctly (they appear to)
1 parent d02a094 commit dd230d9

File tree

2 files changed

+43
-12
lines changed

2 files changed

+43
-12
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.fasterxml.classmate;
2+
3+
import java.util.*;
4+
5+
public class OddJDKTypesTest extends BaseTest
6+
{
7+
// Simple test, based on issues Jackson's type resolver had with inner
8+
// classes of JDK (Hash)Map
9+
public void testJDKMaps()
10+
{
11+
TypeResolver resolver = new TypeResolver();
12+
Map<Object,Object> map = new HashMap<Object,Object>();
13+
map.put("foo", "bar");
14+
15+
// map itself is trivial
16+
ResolvedType type = resolver.resolve(map.getClass());
17+
assertEquals(HashMap.class, type.getErasedType());
18+
19+
// but how about it's entry, key, value sets?
20+
type = resolver.resolve(map.entrySet().getClass());
21+
assertNotNull(type.getErasedType());
22+
assertTrue(type.isInstanceOf(Set.class));
23+
24+
type = resolver.resolve(map.keySet().getClass());
25+
assertNotNull(type.getErasedType());
26+
assertTrue(type.isInstanceOf(Set.class));
27+
28+
type = resolver.resolve(map.values().getClass());
29+
assertNotNull(type.getErasedType());
30+
assertTrue(type.isInstanceOf(Collection.class));
31+
}
32+
}

src/test/java/com/fasterxml/classmate/ResolvedTypeTest.java

+11-12
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
package com.fasterxml.classmate;
22

3-
import com.fasterxml.classmate.types.ResolvedArrayType;
4-
import com.fasterxml.classmate.types.ResolvedInterfaceType;
5-
import com.fasterxml.classmate.types.ResolvedObjectType;
6-
import org.junit.Test;
7-
83
import java.io.Serializable;
94
import java.nio.CharBuffer;
105
import java.util.List;
116

12-
import static junit.framework.Assert.*;
7+
import org.junit.Test;
8+
9+
import com.fasterxml.classmate.types.ResolvedArrayType;
10+
import com.fasterxml.classmate.types.ResolvedInterfaceType;
11+
import com.fasterxml.classmate.types.ResolvedObjectType;
1312

14-
public class ResolvedTypeTest
13+
public class ResolvedTypeTest extends BaseTest
1514
{
1615
// For [Issue#16]
1716

@@ -22,7 +21,7 @@ private static class Bar16 extends Zen16<Bar16, Foo16> { }
2221
private static class Zen16<A, B extends A> { }
2322

2423
@Test
25-
public void canCreateSubtype() {
24+
public void testCanCreateSubtype() {
2625
ResolvedObjectType stringType = ResolvedObjectType.create(String.class, null, null, null);
2726
assertTrue(stringType.canCreateSubtype(String.class));
2827
assertFalse(stringType.canCreateSubtype(CharBuffer.class));
@@ -40,13 +39,13 @@ public void canCreateSubtype() {
4039
}
4140

4241
@Test
43-
public void typeParametersFor() {
42+
public void testtypeParametersFor() {
4443
ResolvedObjectType stringType = ResolvedObjectType.create(String.class, null, null, null);
4544
assertNull(stringType.typeParametersFor(CharBuffer.class));
4645
}
4746

4847
@Test
49-
public void findSupertype() {
48+
public void testFindSupertype() {
5049
ResolvedInterfaceType comparableType = new ResolvedInterfaceType(Comparable.class, TypeBindings.create(String.class, ResolvedType.NO_TYPES), null);
5150
ResolvedObjectType stringType = new ResolvedObjectType(String.class, null, (ResolvedType) null, new ResolvedType[] { comparableType });
5251
assertNull(stringType.findSupertype(CharBuffer.class));
@@ -56,15 +55,15 @@ public void findSupertype() {
5655
}
5756

5857
@Test
59-
public void isConcrete() {
58+
public void testIsConcrete() {
6059
ResolvedObjectType stringType = ResolvedObjectType.create(String.class, null, null, null);
6160
assertTrue(stringType.isConcrete());
6261
ResolvedObjectType charBufferType = ResolvedObjectType.create(CharBuffer.class, null, null, null);
6362
assertFalse(charBufferType.isConcrete());
6463
}
6564

6665
@Test
67-
public void accessors() {
66+
public void testAccessors() {
6867
// the default accessor implementation is to return an empty-list; check for a new subtype
6968
ResolvedType type = new ResolvedType(String.class, null) {
7069
@Override public boolean canCreateSubtypes() {

0 commit comments

Comments
 (0)