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; //IFJAVA8_START import java.util.stream.Collectors; //IFJAVA8_END import static org.junit.Assert.*; public class DynamicSheetMapperTest { Sheet dynamicSheet; SheetMapper<DbObject> dynamicSheetMapper; @Before public void setUp() { Workbook wb = new HSSFWorkbook(); dynamicSheet = wb.createSheet(); Row header = dynamicSheet.createRow(0); header.createCell(0).setCellValue("id"); header.createCell(1).setCellValue("name"); header.createCell(2).setCellValue("email"); header.createCell(3).setCellValue("creation_time"); header.createCell(4).setCellValue("type_ordinal"); header.createCell(5).setCellValue("type_name") ; for (int i = 0; i < 3; i++) { Row row = dynamicSheet.createRow(i + 1); 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()); } dynamicSheetMapper = SheetMapperFactory.newInstance().newMapper(DbObject.class); } @Test public void iteratorOnSheetFrom0WithDynamicMapper() { Iterator<DbObject> iterator = dynamicSheetMapper.iterator(dynamicSheet); testIteratorHasExpectedValue(iterator); } @Test public void forEachOnSheetFrom0WithDynamicMapper() { int row = dynamicSheetMapper.forEach(dynamicSheet, 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 streamOnSheetFrom0WithStreamWithDynamicMapper() { List<DbObject> list = dynamicSheetMapper.stream(dynamicSheet).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 streamOnSheetFrom0WithStreamWithLimitAndDynamicMapper() { List<DbObject> list = dynamicSheetMapper.stream(dynamicSheet).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()); } }