package com.josketres.builderator;
import org.junit.Test;
import java.lang.reflect.Constructor;
import static org.junit.Assert.assertEquals;
public class ConstructorAnalyserTest {
static class ConstructorWithOneParam {
private final String name;
public ConstructorWithOneParam(String name) {
this.name = name;
}
}
static class ConstructorWithTwoParams {
private final String name;
private final String lastName;
public ConstructorWithTwoParams(String name, String lastName) {
this.name = name;
this.lastName = lastName;
}
}
@Test
public void should_extract_signature_of_constructor_with_one_param() throws Exception {
Constructor<?>[] declaredConstructors = ConstructorWithOneParam.class.getDeclaredConstructors();
assertEquals(declaredConstructors.length, 1);
ConstructorSignature signature = new ConstructorAnalyser().getSignature(ConstructorWithOneParam.class);
assertEquals("name", signature.getNames().get(0));
assertEquals(String.class, signature.getClassTypes().get(0));
}
@Test
public void should_extract_signature_of_constructor_with_two_params() throws Exception {
Constructor<?>[] declaredConstructors = ConstructorWithTwoParams.class.getDeclaredConstructors();
assertEquals(declaredConstructors.length, 1);
ConstructorSignature signature = new ConstructorAnalyser().getSignature(ConstructorWithTwoParams.class);
assertEquals("name", signature.getNames().get(0));
assertEquals(String.class, signature.getClassTypes().get(0));
assertEquals("lastName", signature.getNames().get(1));
assertEquals(String.class, signature.getClassTypes().get(1));
}
}