summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Iezzi <aiezzi@alessandroiezzi.it>2023-06-15 18:22:00 +0200
committerAlessandro Iezzi <aiezzi@alessandroiezzi.it>2023-06-15 18:22:00 +0200
commitc52ae2927ad88e5bf642c3134853693cd5546ec3 (patch)
tree1b3e709bb49ad901f039b24d9b8a7e9d45ef87d7
parent550888891f9da7eeb6afd83f496e31340e617f78 (diff)
downloadcsv-utils-c52ae2927ad88e5bf642c3134853693cd5546ec3.tar.gz
csv-utils-c52ae2927ad88e5bf642c3134853693cd5546ec3.zip
Add new tests
-rw-r--r--src/test/java/it/alessandroiezzi/csv/CSVParserTest.java100
1 files changed, 98 insertions, 2 deletions
diff --git a/src/test/java/it/alessandroiezzi/csv/CSVParserTest.java b/src/test/java/it/alessandroiezzi/csv/CSVParserTest.java
index e2453d5..241a8bd 100644
--- a/src/test/java/it/alessandroiezzi/csv/CSVParserTest.java
+++ b/src/test/java/it/alessandroiezzi/csv/CSVParserTest.java
@@ -3,12 +3,108 @@
package it.alessandroiezzi.csv;
import java.io.IOException;
+import java.util.*;
+
import org.junit.Test;
+import static org.junit.Assert.*;
+
public class CSVParserTest {
+ private interface Runnable {
+ void run() throws IOException;
+ }
+
+ public static class TestDomain {
+ String code, tag, bl;
+ }
+
+ public static class TestDomain2 {
+ String code, name, surname, description;
+ }
+
@Test
public void test_parseCSV() throws IOException {
- CSVParser parser = new CSVParser(getClass().getClassLoader().getResourceAsStream("test.csv"));
- parser.parse();
+ List<TestDomain> rows = new CSVParser<>(getClass().getClassLoader().getResourceAsStream("test.csv"),
+ TestDomain.class)
+ .map("codice", (t, v) -> t.code = v)
+ .map("tag", (t, v) -> t.tag = v )
+ .map("blacklist", (t, v) -> t.bl = v )
+ .parse();
+
+ assertEquals("999xx", rows.get(0).code);
+ assertTrue(rows.get(0).tag == null || rows.get(0).tag.isEmpty());
+ assertEquals("S", rows.get(0).bl);
+
+ assertEquals("888xx", rows.get(1).code);
+ assertEquals("Ale", rows.get(1).tag);
+ assertTrue(rows.get(1).bl == null || rows.get(1).bl.isEmpty());
+
+ assertEquals("7t7t7t7", rows.get(2).code);
+ assertTrue(rows.get(2).tag == null || rows.get(2).tag.isEmpty());
+ assertEquals("S", rows.get(2).bl);
+ }
+
+ public static String generateRandomString(int size) {
+ char start;
+ char end;
+ StringBuilder sb = new StringBuilder();
+
+
+ start = '0';
+ end = '9';
+
+ for (int i = 0; i < size; i ++)
+ sb.append((char) (Math.random() * (end - start) + start));
+
+ return sb.toString();
+ }
+
+ private CSVBuilder rndcsv(final int max) {
+ int i = 0;
+
+ CSVBuilder csvBuilder = new CSVBuilder("code", "name", "surname", "description");
+ while (i++ < max) {
+ csvBuilder.append(generateRandomString(10),
+ generateRandomString(10),
+ generateRandomString(10),
+ generateRandomString(10));
+ }
+
+ return csvBuilder;
+ }
+
+ private long timedop(Runnable rn) throws IOException {
+ long t0 = new Date().getTime();
+ rn.run();
+ long t1 = new Date().getTime();
+ return t1 - t0;
+ }
+
+ @Test
+ public void test_parsCSV_performances() throws IOException {
+ Collection<CSVBuilder> builders = Arrays.asList(rndcsv(7000),
+ rndcsv(7000),
+ rndcsv(7000),
+ rndcsv(7000),
+ rndcsv(7000),
+ rndcsv(7000));
+
+ Collection<Long> times = new ArrayList<>();
+ for (CSVBuilder builder : builders) {
+ long tt = timedop(() -> builder.buildAsInputStream(is -> {
+ new CSVParser<>(is, TestDomain2.class)
+ .map("code", (t, v) -> t.code = v)
+ .map("name", (t, v) -> t.name = v )
+ .map("surname", (t, v) -> t.surname = v )
+ .map("description", (t, v) -> t.description = v )
+ .parse();
+ }));
+ times.add(tt);
+ }
+
+ int i = 1;
+ for (Long time : times) {
+ System.out.printf("#%d --> %d%n", i++, time);
+ }
}
}