package org.merka.stubgen.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Categories.ExcludeCategory;
import org.merka.stubgen.MockObjectGenerator;
import org.merka.stubgen.exception.MockGenException;
import org.merka.stubgen.stupiddto.ComplexTestObject;
import org.merka.stubgen.stupiddto.StupidPOJO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.core.type.TypeReference;
public class TestMockObjectGenerator {
private static transient Logger logger = LoggerFactory.getLogger(TestMockObjectGenerator.class);
protected MockObjectGenerator gen;
@Before
public void setUp()
{
gen = new MockObjectGenerator();
}
@After
public void tearDown()
{
gen = null;
}
@Test
public void testGeneratePrimitiveTypes() throws MockGenException
{
Object stub = generateForClass(int.class);
assertTrue(stub instanceof Integer);
stub = generateForClass(long.class);
assertTrue(stub instanceof Long);
stub = generateForClass(char.class);
assertTrue(stub instanceof Character);
stub = generateForClass(byte.class);
assertTrue(stub instanceof Byte);
stub = generateForClass(boolean.class);
assertTrue(stub instanceof Boolean);
stub = generateForClass(float.class);
assertTrue(stub instanceof Float);
}
@Test
public void testGenerateObject() throws MockGenException
{
Object stub = gen.generate(StupidPOJO.class);
assertNotNull(stub);
assertTrue(stub instanceof StupidPOJO);
StupidPOJO stupid = (StupidPOJO) stub;
assertEquals(stupid.getStupidInt(), 0);
assertNotNull(stupid.getStupidString());
}
@Test
public void testGenerateComplexObject() throws MockGenException
{
Object stub = gen.generate(ComplexTestObject.class);
assertNotNull(stub);
logger.info(stub.toString());
assertTrue(stub instanceof ComplexTestObject);
ComplexTestObject complex = (ComplexTestObject) stub;
assertNotNull(complex.getBigDecimalArray());
assertTrue(complex.getBigDecimalArray().length > 0);
assertNotNull(complex.getObjectArray());
assertTrue(complex.getObjectArray().length > 0);
assertNotNull(complex.getObjectList());
assertTrue(complex.getObjectList().size() > 0);
assertNotNull(complex.getSingleObject());
assertNotNull(complex.getType());
}
@Test(expected = MockGenException.class)
public void testGenerateListDirectly() throws MockGenException
{
List<ComplexTestObject> pilot = new ArrayList<ComplexTestObject>();
Object stublist = (List<ComplexTestObject>) gen.generate( (Class<?>) pilot.getClass() );
}
@Test
public void testGenerateList() throws MockGenException
{
Object stub = gen.generateList(ComplexTestObject.class, 3);
assertNotNull(stub);
assertTrue(stub instanceof List<?>);
List<?> list = (List<?>) stub;
assertTrue(list.size() > 0);
Object element = list.get(0);
assertNotNull(element);
assertTrue(element instanceof ComplexTestObject);
}
protected Object generateForClass(Class<?> clazz) throws MockGenException
{
Object stub = this.gen.generate(clazz);
return stub;
}
}