package org.simpleflatmapper.test.map.asm;
import org.junit.Test;
import org.simpleflatmapper.map.FieldMapper;
import org.simpleflatmapper.map.Mapper;
import org.simpleflatmapper.map.MappingContext;
import org.simpleflatmapper.map.MappingException;
import org.simpleflatmapper.reflect.BiInstantiator;
import org.simpleflatmapper.test.map.SampleFieldKey;
import org.simpleflatmapper.map.asm.MapperAsmFactory;
import org.simpleflatmapper.reflect.Instantiator;
import org.simpleflatmapper.reflect.asm.AsmFactory;
import org.simpleflatmapper.test.beans.DbObject;
import java.io.IOException;
import static org.junit.Assert.assertTrue;
public class MapperAsmFactoryTest {
static MapperAsmFactory asmFactory = new MapperAsmFactory(new AsmFactory(Thread.currentThread().getContextClassLoader()));
@SuppressWarnings("unchecked")
@Test
public void testAsmJdbcMapperFailedInstantiator() throws Exception {
Mapper<Object, DbObject> jdbcMapper =
asmFactory.createMapper(new SampleFieldKey[0],
(FieldMapper<Object, DbObject>[]) new FieldMapper[]{},
(FieldMapper<Object, DbObject>[]) new FieldMapper[]{},
new BiInstantiator<Object, MappingContext<? super Object>, DbObject>() {
@Override
public DbObject newInstance(Object s, MappingContext<? super Object> mappingContext) throws Exception {
throw new IOException("Error");
}
},Object.class,
DbObject.class);
try {
jdbcMapper.map(null);
} catch(Exception e) {
assertTrue(e instanceof IOException);
// ok
}
}
@Test
@SuppressWarnings("unchecked")
public void testAsmJdbcMapperFailedGetter() throws Exception {
Mapper<Object, DbObject> jdbcMapper = asmFactory.createMapper(new SampleFieldKey[0],
(FieldMapper<Object, DbObject>[]) new FieldMapper[]{
new FieldMapper<Object, DbObject>() {
@Override
public void mapTo(Object source, DbObject target, MappingContext<? super Object> mappingContext)
throws MappingException {
throw new MappingException("Expected ");
}
}
},
(FieldMapper<Object, DbObject>[]) new FieldMapper[]{},
new BiInstantiator<Object, MappingContext<? super Object>, DbObject>() {
@Override
public DbObject newInstance(Object s, MappingContext<? super Object> context) throws Exception {
return new DbObject();
}
}, Object.class,
DbObject.class);
try {
jdbcMapper.map(null);
} catch(MappingException e) {
// ok
}
}
}