package org.jaxygen.typeconverter.jaxygen.typeconverter;
import java.util.ArrayList;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.jaxygen.collections.PartialArrayList;
import org.jaxygen.dto.collections.PaginableBaseRequestDTO;
import org.jaxygen.dto.collections.PaginableListResponseBaseDTO;
import org.jaxygen.typeconverter.BeanConverter;
import org.jaxygen.typeconverter.TypeConverterFactory;
import org.jaxygen.typeconverter.converters.PaginableToPartialConverter;
import org.jaxygen.typeconverter.converters.PartialToPaginableConverter;
import org.jaxygen.typeconverter.exceptions.ConversionError;
public class PaginableListConvertersTest
extends TestCase
{
/** Get the default instance of the TypeConverterFactory
*
*/
static TypeConverterFactory converters = TypeConverterFactory.instance();
public static class DTO {
private String value;
private boolean question;
public boolean isQuestion() {
return question;
}
public void setQuestion(boolean question) {
this.question = question;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public DTO() {
}
public DTO(String value, boolean question) {
this.value = value;
this.question = question;
}
}
public static class DO {
private String value;
private boolean question;
public DO() {
this.question = false;
this.value = null;
}
public DO(String value, boolean question) {
this.value = value;
this.question = question;
}
public boolean isQuestion() {
return question;
}
public void setQuestion(boolean question) {
this.question = question;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
public static class PartialDO extends PartialArrayList<DO> {};
public static class PaginableDTO extends PaginableListResponseBaseDTO<DTO> {};
static class DTOtoDO extends BeanConverter<DTO, DO> {};
static class DOtoDTO extends BeanConverter<DO, DTO> {};
static class PartialToPaginable extends PartialToPaginableConverter<PartialDO, PaginableDTO> {};
static class PaginableToPartial extends PaginableToPartialConverter<PaginableDTO, PartialDO> {};
/**
* Create the test case
*
* @param testName name of the test case
*/
public PaginableListConvertersTest( String testName )
{
super( testName );
converters.registerConverter(new DTOtoDO());
converters.registerConverter(new DOtoDTO());
converters.registerConverter(new PartialToPaginable());
converters.registerConverter(new PaginableToPartial());
}
/**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( PaginableListConvertersTest.class );
}
/**
* Check the simple DTO to DO and back way conversions
*/
public void test_simpleConversion() throws ConversionError
{
final String expectedValue = "expeced1";
DTO dtoObject = new DTO();
dtoObject.value = expectedValue;
dtoObject.question = true;
DO dbObject = converters.convert(dtoObject, DO.class);
DTO dtoCopy = converters.convert(dbObject, DTO.class);
assertEquals(expectedValue, dbObject.value);
assertEquals(expectedValue, dtoCopy.value);
assertTrue(dbObject.isQuestion());
assertTrue(dtoCopy.isQuestion());
}
public void test_PartialToPaginable() throws ConversionError
{
PartialDO partial = new PartialDO();
partial.setTotalSize(123);
partial.add(new DO("v1", true));
partial.add(new DO("v2", false));
partial.add(new DO("v3", true));
PaginableDTO paginable = converters.convert(partial, PaginableDTO.class);
assertEquals(3, paginable.getElements().size());
assertEquals(123, paginable.getSize());
assertEquals("v1",paginable.getElements().get(0).getValue());
assertEquals("v2",paginable.getElements().get(1).getValue());
assertEquals("v3",paginable.getElements().get(2).getValue());
assertEquals(true, paginable.getElements().get(0).isQuestion());
assertEquals(false, paginable.getElements().get(1).isQuestion());
assertEquals(true, paginable.getElements().get(2).isQuestion());
}
public void test_PaginableToPartial() throws ConversionError
{
PaginableDTO paginable = new PaginableDTO();
paginable.setSize(123);
paginable.setElements(new ArrayList<DTO>());
paginable.getElements().add(new DTO("v1", true));
paginable.getElements().add(new DTO("v2", false));
paginable.getElements().add(new DTO("v3", true));
PartialDO partial = converters.convert(paginable, PartialDO.class);
assertEquals(3, partial.size());
assertEquals(123, partial.getTotalSize());
assertEquals("v1",partial.get(0).getValue());
assertEquals("v2",partial.get(1).getValue());
assertEquals("v3",partial.get(2).getValue());
assertEquals(true, partial.get(0).isQuestion());
assertEquals(false, partial.get(1).isQuestion());
assertEquals(true, partial.get(2).isQuestion());
}
}