This is an automated email from the git hooks/post-receive script. New commit to branch feature/3790_export_to_reader_or_input_steam in repository nuiton-csv. See http://git.nuiton.org/nuiton-csv.git commit 0177cc94f2a3f8c49bac0a1ae2cd79467f81a6d2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Dec 7 22:46:38 2015 +0100 Add Export.exportToReaderTest and Export.exportToInputStream test methods + improve export test (See #3790) --- src/test/java/org/nuiton/csv/ExportTest.java | 121 +++++++++++++++++---------- 1 file changed, 79 insertions(+), 42 deletions(-) diff --git a/src/test/java/org/nuiton/csv/ExportTest.java b/src/test/java/org/nuiton/csv/ExportTest.java index c522f9b..2d6905c 100644 --- a/src/test/java/org/nuiton/csv/ExportTest.java +++ b/src/test/java/org/nuiton/csv/ExportTest.java @@ -21,10 +21,10 @@ */ package org.nuiton.csv; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -32,10 +32,11 @@ import org.nuiton.util.DateUtil; import java.io.File; import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.Reader; import java.nio.charset.Charset; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; +import java.util.Collections; +import java.util.Iterator; import java.util.Set; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -43,53 +44,60 @@ import java.util.zip.ZipOutputStream; public class ExportTest { - private static final Log log = LogFactory.getLog(ExportTest.class); - public static final Charset CHARSET = Charset.forName("UTF-8"); - protected Set<RowBean> oneSizedSet = new HashSet<RowBean>(); - - protected Set<RowBean> twoSizedSet = new HashSet<RowBean>(); - - protected Set<RowBean> fiveSizedSet = new HashSet<RowBean>(); - - protected List<Set<RowBean>> sets; + public static final Iterable<String> RESULTS = ImmutableList.of( + "DATE;TITLE;NUMBER\n", + "DATE;TITLE;NUMBER\n" + + "01/12/2011;Batman;1\n", + "DATE;TITLE;NUMBER\n" + + "01/12/2011;Batman;1\n" + + "02/12/2011;;7\n", + "DATE;TITLE;NUMBER\n" + + "01/12/2011;Batman;1\n" + + "02/12/2011;;7\n" + + "07/12/2011;;9\n" + + "18/12/2011;;18\n" + + "23/12/2011;;4\n" + ); + + protected Iterable<Set<RowBean>> sets; protected ExportModel<RowBean> model = new RowBeanExportModel(); @Before public void setUp() { - oneSizedSet.add(new RowBean(DateUtil.createDate(1, 12, 2011), "Batman", 1, RowBeanEnum.ONE)); + ImmutableSet.Builder<RowBean> builder = ImmutableSet.builder(); + + ImmutableList.Builder<Set<RowBean>> setBuilder = ImmutableList.builder(); - twoSizedSet.addAll(oneSizedSet); - twoSizedSet.add(new RowBean(DateUtil.createDate(2, 12, 2011), "", 7, RowBeanEnum.TWO)); + setBuilder.add(Collections.<RowBean>emptySet()); - fiveSizedSet.addAll(twoSizedSet); - fiveSizedSet.add(new RowBean(DateUtil.createDate(7, 12, 2011), "", 9, RowBeanEnum.ZERO)); - fiveSizedSet.add(new RowBean(DateUtil.createDate(18, 12, 2011), "", 18, RowBeanEnum.ONE)); - fiveSizedSet.add(new RowBean(DateUtil.createDate(23, 12, 2011), "", 4, RowBeanEnum.TWO)); + builder.add(new RowBean(DateUtil.createDate(1, 12, 2011), "Batman", 1, RowBeanEnum.ONE)); + setBuilder.add(builder.build()); + + builder.add(new RowBean(DateUtil.createDate(2, 12, 2011), "", 7, RowBeanEnum.TWO)); + setBuilder.add(builder.build()); + + builder.add((new RowBean(DateUtil.createDate(7, 12, 2011), "", 9, RowBeanEnum.ZERO))); + builder.add((new RowBean(DateUtil.createDate(18, 12, 2011), "", 18, RowBeanEnum.ONE))); + builder.add((new RowBean(DateUtil.createDate(23, 12, 2011), "", 4, RowBeanEnum.TWO))); + setBuilder.add(builder.build()); + + sets = setBuilder.build(); - sets = Arrays.asList(new HashSet<RowBean>(), oneSizedSet, twoSizedSet, fiveSizedSet); } @Test public void testExportToString() throws Exception { + Iterator<String> resultIterator = RESULTS.iterator(); for (Set<RowBean> set : sets) { String csv = Export.exportToString(model, set, CHARSET); + assertExportResultEquals(resultIterator, csv); - if (log.isDebugEnabled()) { - log.debug("exported csv:\n" + csv); - } - - // 1 header line + one line per RowBean instance - int expectedLineCount = 1 + set.size(); - // number of '\n' in csv - int actualLineCount = csv.split("\n").length; - Assert.assertEquals("exported CSV must have all lines", - expectedLineCount, actualLineCount); } } @@ -101,7 +109,7 @@ public class ExportTest { public void testExportToOuputStream() throws Exception { File f = new File(FileUtils.getTempDirectory(), getClass().getName() + "-exportcsvtest.zip"); - + FileUtils.forceMkdir(f.getParentFile()); ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(f)); @@ -116,22 +124,51 @@ public class ExportTest { ZipFile zipFile = new ZipFile(f); + Iterator<String> resultIterator = RESULTS.iterator(); for (Set<RowBean> set : sets) { String csv = IOUtils.toString(zipFile.getInputStream(new ZipEntry("/export" + (set.size()) + ".csv"))); + assertExportResultEquals(resultIterator, csv); + + } + + } + + @Test + public void testExportToReader() throws Exception { - if (log.isDebugEnabled()) { - log.debug("exported csv:\n" + csv); - } + Iterator<String> resultIterator = RESULTS.iterator(); + for (Set<RowBean> set : sets) { + + Reader reader = Export.exportToReader(model, set, CHARSET); + + String csv = IOUtils.toString(reader); + assertExportResultEquals(resultIterator, csv); + + } + + } + + @Test + public void testExportToInputStream() throws Exception { + + Iterator<String> resultIterator = RESULTS.iterator(); + for (Set<RowBean> set : sets) { + + InputStream inputStream = Export.exportToInputStream(model, set); + + String csv = IOUtils.toString(inputStream); + assertExportResultEquals(resultIterator, csv); - // 1 header line + one line per RowBean instance - int expectedLineCount = 1 + set.size(); - // number of '\n' in csv - int actualLineCount = csv.split("\n").length; - Assert.assertEquals("exported CSV must have all lines", - expectedLineCount, actualLineCount); } } + protected void assertExportResultEquals(Iterator<String> resultIterator, String actual) { + + String expected = resultIterator.next(); + Assert.assertEquals(expected, actual); + + } + } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.