blob: 4125e09c7b9ed46f717d4782470f9d73dddf7fcb [file] [log] [blame]
/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.util.reflection;
import org.junit.Test;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
import java.util.*;
import static org.junit.Assert.assertEquals;
public class GenericMasterTest {
GenericMaster m = new GenericMaster();
List<String> one;
Set<Integer> two;
Map<Double, String> map;
String nonGeneric;
List<Set<String>> nested;
List<Set<Collection<String>>> multiNested;
public interface ListSet extends List<Set<?>> {}
public interface MapNumberString extends Map<Number, String> {}
public class HashMapNumberString<K extends Number> extends HashMap<K, String> {}
public List<Number> numberList() { return null; }
public Comparable<Number> numberComparable() { return null; }
@SuppressWarnings("rawtypes")
public List rawList() { return null; }
public List<? extends Type> typeList() { return null; }
@Test
public void should_find_generic_class() throws Exception {
assertEquals(String.class, m.getGenericType(field("one")));
assertEquals(Integer.class, m.getGenericType(field("two")));
assertEquals(Double.class, m.getGenericType(field("map")));
}
@Test
public void should_get_object_for_non_generic() throws Exception {
assertEquals(Object.class, m.getGenericType(field("nonGeneric")));
}
@Test
public void should_deal_with_nested_generics() throws Exception {
assertEquals(Set.class, m.getGenericType(field("nested")));
assertEquals(Set.class, m.getGenericType(field("multiNested")));
}
private Field field(String fieldName) throws SecurityException, NoSuchFieldException {
return this.getClass().getDeclaredField(fieldName);
}
}