package org.nextprot.api.web.service.impl.writer; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.junit.Assert; import org.junit.Test; import org.nextprot.api.web.dbunit.base.mvc.WebIntegrationBaseTest; import java.io.*; import java.util.Arrays; /** * Created by fnikitin on 12/08/15. */ public class NPEntryIsoformXLSWriterTest extends WebIntegrationBaseTest { @Test public void testXLSIsoformWriterStream() throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); EntryXLSWriter writer = new EntryIsoformXLSWriter(out); writer.write(Arrays.asList("NX_P48730")); writer.close(); assertXLSEquals(out, new String[]{"acc. code", "protein name", "isoform", "seq. len", "mass", "PI"}, new Object[]{"NX_P48730-1", "Casein kinase I isoform delta", "Iso 1", 415.0, 47330.0, 9.77}, new Object[]{"NX_P48730-2", "Casein kinase I isoform delta", "Iso 2", 409.0, 46832.0, 9.67} ); } //@Test public void exportXLSIsoformsFile() throws Exception { FileOutputStream out = new FileOutputStream("/Users/fnikitin/Downloads/isoforms.xls"); EntryXLSWriter writer = new EntryIsoformXLSWriter(out); writer.write(Arrays.asList("NX_P48730")); } private static void assertXLSEquals(ByteArrayOutputStream baos, String[] headers, Object[]... expectedRows) throws IOException { InputStream is = new ByteArrayInputStream(baos.toByteArray()); HSSFWorkbook workbook = new HSSFWorkbook(is); HSSFSheet worksheet = workbook.getSheet("Isoforms"); HSSFRow headerRow = worksheet.getRow(0); for (int rowIndex=0 ; rowIndex<expectedRows.length ; rowIndex++) { Object[] expectedRow = expectedRows[rowIndex]; HSSFRow valuesRow = worksheet.getRow(rowIndex+1); for (int i = 0; i < headers.length; i++) { Assert.assertEquals(headers[i], headerRow.getCell(i).getStringCellValue()); if (i > 2) Assert.assertEquals(expectedRow[i], valuesRow.getCell(i).getNumericCellValue()); else Assert.assertEquals(expectedRow[i], valuesRow.getCell(i).getStringCellValue()); } } workbook.close(); } }