package org.ovirt.engine.core.common.queries;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import org.junit.Test;
import org.ovirt.engine.core.compat.Guid;
/** A test case for {@link VdcUserQueryParametersBase} */
public abstract class AbstractVdcUserQueryParametersBaseTestCase<P extends VdcUserQueryParametersBase> {
/** The {@link VdcUserQueryParametersBase} being tested */
private P param;
protected P getParamObject() {
return param;
}
@SuppressWarnings("unchecked")
private Class<P> getTypeParameterClass() {
Type type = getClass().getGenericSuperclass();
ParameterizedType paramType = (ParameterizedType) type;
return (Class<P>) paramType.getActualTypeArguments()[0];
}
@Test
public void testDefaultConstructor() throws Exception {
param = getTypeParameterClass().getConstructor().newInstance();
assertNull("There should not be any user ID with the default constructor", param.getUserId());
}
@Test
public void testParameterizedConstructor() throws Exception {
Guid expectedUserID = Guid.newGuid();
param = getTypeParameterClass().getConstructor(Guid.class).newInstance(expectedUserID);
assertEquals("Wrong user ID", expectedUserID, param.getUserId());
}
}