package tc.oc.message; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.Optional; import javax.inject.Inject; import com.google.common.reflect.TypeToken; import org.junit.Test; import tc.oc.ApiTest; import tc.oc.api.docs.Server; import tc.oc.api.message.Message; import tc.oc.api.message.MessageRegistry; import tc.oc.api.message.types.ModelUpdate; import static org.junit.Assert.*; import static tc.oc.test.Assert.*; public class MessageRegistryTest extends ApiTest { @Inject MessageRegistry registry; @Test public void testResolveGenericMessage() throws Exception { final TypeToken<? extends Message> token = registry.resolve("ModelUpdate", Optional.of("Server")); assertAssignableTo(new TypeToken<ModelUpdate<Server>>(){}, token); final Type type = token.getType(); assertInstanceOf(ParameterizedType.class, type); final ParameterizedType pType = (ParameterizedType) type; assertEquals(ModelUpdate.class, pType.getRawType()); assertEquals(Server.class, pType.getActualTypeArguments()[0]); } }