package org.simpleflatmapper.csv.test.impl;
import org.junit.Test;
import org.simpleflatmapper.csv.impl.CsvMapperImpl;
import org.simpleflatmapper.test.beans.DbObject;
import org.simpleflatmapper.csv.CellValueReader;
import org.simpleflatmapper.csv.CsvColumnDefinition;
import org.simpleflatmapper.csv.CsvMapperFactory;
import org.simpleflatmapper.csv.ParsingContext;
import org.simpleflatmapper.util.CheckedConsumer;
import java.io.IOException;
import java.io.StringReader;
import static org.junit.Assert.*;
public class CsvMapperImplTest {
@Test
public void testAsmFactoryTest() throws IOException {
final CsvMapperImpl<DbObject> mapper1 = (CsvMapperImpl<DbObject>) CsvMapperFactory.newInstance().newBuilder(DbObject.class).addMapping("id").addMapping("name").addMapping("email").mapper();
final CsvMapperImpl<DbObject> mapper2 = (CsvMapperImpl<DbObject>) CsvMapperFactory.newInstance().newBuilder(DbObject.class).addMapping("id", CsvColumnDefinition.customReaderDefinition(new CellValueReader<Long>() {
@Override
public Long read(char[] chars, int offset, int length, ParsingContext parsingContext) {
return 23l;
}
})).addMapping("name").addMapping("email").mapper();
final CsvMapperImpl<DbObject> mapper3 = (CsvMapperImpl<DbObject>) CsvMapperFactory.newInstance().newBuilder(DbObject.class).addMapping("id").addMapping("name").addMapping("creationTime").mapper();
final CheckedConsumer<DbObject> handler = new CheckedConsumer<DbObject>() {
@Override
public void accept(DbObject dbObject) throws Exception {
}
};
assertSame(mapper1.csvMapperCellHandlerFactory().getClass(), mapper2.csvMapperCellHandlerFactory().getClass());
assertNotSame(mapper1.csvMapperCellHandlerFactory().getClass(), mapper3.csvMapperCellHandlerFactory().getClass());
assertTrue(mapper1.csvMapperCellHandlerFactory().getClass().getSimpleName().startsWith("AsmCsvMapperCellHandlerTo"));
assertTrue(mapper2.csvMapperCellHandlerFactory().getClass().getSimpleName().startsWith("AsmCsvMapperCellHandlerTo"));
assertTrue(mapper3.csvMapperCellHandlerFactory().getClass().getSimpleName().startsWith("AsmCsvMapperCellHandlerTo"));
assertEquals(2l, mapper1.iterator(new StringReader("2")).next().getId());
assertEquals(23l, mapper2.iterator(new StringReader("2")).next().getId());
}
}