package com.perunlabs.testinjector.util;
import static org.assertj.core.api.Assertions.assertThat;
import java.lang.reflect.Field;
import java.util.List;
import org.junit.Test;
import com.google.inject.Provider;
import com.google.inject.TypeLiteral;
public class TypesTest {
/*
* typeOf()
*/
@Test
public void type_of_string_field() throws Exception {
Field field = field("stringField");
assertThat(Types.typeOf(field)).isEqualTo(TypeLiteral.get(String.class));
}
String stringField;
@Test
public void type_of_list_of_strings_field() throws Exception {
Field field = field("listOfStringsField");
assertThat(Types.typeOf(field)).isEqualTo(new TypeLiteral<List<String>>() {});
}
List<String> listOfStringsField;
/*
* isProvider()
*/
@Test
public void string_field_is_not_provider() throws Exception {
Field field = field("stringField");
assertThat(Types.isProvider(field)).isFalse();
}
@Test
public void list_of_strings_field_is_not_provider() throws Exception {
Field field = field("listOfStringsField");
assertThat(Types.isProvider(field)).isFalse();
}
@Test
public void string_provider_is_provider() throws Exception {
Field field = field("stringProviderField");
assertThat(Types.isProvider(field)).isTrue();
}
/*
* isJavaxProvider()
*/
@Test
public void string_field_is_not_javax_provider() throws Exception {
Field field = field("stringField");
assertThat(Types.isJavaxProvider(field)).isFalse();
}
@Test
public void list_of_strings_field_is_not_javax_provider() throws Exception {
Field field = field("listOfStringsField");
assertThat(Types.isJavaxProvider(field)).isFalse();
}
@Test
public void string_javax_provider_is_javax_provider() throws Exception {
Field field = field("stringJavaxProviderField");
assertThat(Types.isJavaxProvider(field)).isTrue();
}
javax.inject.Provider<String> stringJavaxProviderField;
/*
* typeProvidedBy()
*/
@Test
public void type_provided_by_string_provider() throws Exception {
Field field = field("stringProviderField");
assertThat(Types.typeProvidedBy(field)).isEqualTo(TypeLiteral.get(String.class));
}
Provider<String> stringProviderField;
@Test
public void type_provided_by_list_of_strings_provider() throws Exception {
Field field = field("listOfStringsProviderField");
assertThat(Types.typeProvidedBy(field)).isEqualTo(new TypeLiteral<List<String>>() {});
}
Provider<List<String>> listOfStringsProviderField;
private static Field field(String name) throws Exception {
return TypesTest.class.getDeclaredField(name);
}
}