/*
* Copyright 2015, The Querydsl Team (http://www.querydsl.com/team)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.querydsl.core.util;
import static com.querydsl.core.util.ArrayUtils.isEmpty;
import static com.querydsl.core.util.ConstructorUtils.getConstructorParameters;
import static org.junit.Assert.*;
import java.lang.reflect.Constructor;
import java.util.Arrays;
import org.junit.Test;
import com.querydsl.core.types.ProjectionExample;
/**
*
* @author Shredder121
*/
public class ConstructorUtilsTest {
@Test
public void getDefaultConstructor() {
Class<?>[] args = {};
Constructor<?> emptyDefaultConstructor = getConstructor(ProjectionExample.class, args);
Constructor<?> nullDefaultConstructor = getConstructor(ProjectionExample.class, null);
assertNotNull(emptyDefaultConstructor);
assertNotNull(nullDefaultConstructor);
assertTrue(isEmpty(emptyDefaultConstructor.getParameterTypes())
&& isEmpty(nullDefaultConstructor.getParameterTypes()));
}
@Test
public void getSimpleConstructor() {
Class<?>[] args = {Long.class};
Constructor<?> constructor = getConstructor(ProjectionExample.class, args);
assertNotNull(constructor);
assertArrayEquals(args, constructor.getParameterTypes());
}
@Test
public void getDefaultConstructorParameters() {
Class<?>[] args = {Long.class, String.class};
Class<?>[] expected = {Long.TYPE, String.class};
Class<?>[] constructorParameters = getConstructorParameters(ProjectionExample.class, args);
assertArrayEquals("Constructorparameters not equal", expected, constructorParameters);
}
private <C> Constructor<C> getConstructor(Class<C> type, Class<?>[] givenTypes) {
Constructor<C> rv = null;
try {
rv = ConstructorUtils.getConstructor(type, givenTypes);
} catch (NoSuchMethodException ex) {
fail("No constructor found for " + type.toString()
+ " with parameters: " + Arrays.toString(givenTypes));
}
return rv;
}
}