package org.simpleflatmapper.poi.test; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.junit.Before; import org.junit.Test; import org.simpleflatmapper.poi.SheetMapper; import org.simpleflatmapper.poi.SheetMapperFactory; import org.simpleflatmapper.test.beans.DbObject; import org.simpleflatmapper.util.CheckedConsumer; import java.util.Date; import java.util.Iterator; import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; //IFJAVA8_START import java.util.stream.Collectors; //IFJAVA8_END public class StaticSheetMapperTest { Sheet staticSheet; SheetMapper<DbObject> staticSheetMapper; @Before public void setUp(){ Workbook wb = new HSSFWorkbook(); staticSheet = wb.createSheet(); for(int i = 0; i < 3; i++) { Row row = staticSheet.createRow(i); row.createCell(0).setCellValue(i); row.createCell(1).setCellValue("name" + i); row.createCell(2).setCellValue("email" + i); row.createCell(3).setCellValue(new Date(i * 10000 )); row.createCell(4).setCellValue(DbObject.Type.values()[i].ordinal()); row.createCell(5).setCellValue(DbObject.Type.values()[i].name()); } staticSheetMapper = SheetMapperFactory .newInstance() .newBuilder(DbObject.class) .addMapping("id") .addMapping("name") .addMapping("email") .addMapping("creation_time") .addMapping("type_ordinal") .addMapping("type_name") .mapper(); } @Test public void iteratorOnSheetFrom0WithStaticMapper() { Iterator<DbObject> iterator = staticSheetMapper.iterator(staticSheet); testIteratorHasExpectedValue(iterator); } @Test public void forEachOnSheetFrom0WithStaticMapper() { int row = staticSheetMapper.forEach(staticSheet, new CheckedConsumer<DbObject>() { int row = 0; @Override public void accept(DbObject dbObject) throws Exception { assertDbObject(row, dbObject); row++; } }).row; assertEquals(3, row); } //IFJAVA8_START @Test public void streamOnSheetFrom0WithStreamWithStaticMapper() { List<DbObject> list = staticSheetMapper.stream(staticSheet).collect(Collectors.toList()); assertEquals(3, list.size()); assertDbObject(0, list.get(0)); assertDbObject(1, list.get(1)); assertDbObject(2, list.get(2)); } @Test public void streamOnSheetFrom0WithStreamWithLimitAndStaticMapper() { List<DbObject> list = staticSheetMapper.stream(staticSheet).limit(2).collect(Collectors.toList()); assertEquals(2, list.size()); assertDbObject(0, list.get(0)); assertDbObject(1, list.get(1)); } //IFJAVA8_END protected void testIteratorHasExpectedValue(Iterator<DbObject> iterator) { assertTrue(iterator.hasNext()); assertDbObject(0, iterator.next()); assertTrue(iterator.hasNext()); assertDbObject(1, iterator.next()); assertTrue(iterator.hasNext()); assertDbObject(2, iterator.next()); } private void assertDbObject(int index, DbObject o) { assertEquals(index, o.getId()); assertEquals("name" + index, o.getName()); assertEquals("email" + index, o.getEmail()); assertEquals(index * 10000, o.getCreationTime().getTime()); assertEquals(DbObject.Type.values()[index % 4], o.getTypeOrdinal()); assertEquals(DbObject.Type.values()[index % 4], o.getTypeName()); } }