diff options
author | 2023-06-15 18:22:00 +0200 | |
---|---|---|
committer | 2023-06-15 18:22:00 +0200 | |
commit | c52ae2927ad88e5bf642c3134853693cd5546ec3 (patch) | |
tree | 1b3e709bb49ad901f039b24d9b8a7e9d45ef87d7 /src | |
parent | 550888891f9da7eeb6afd83f496e31340e617f78 (diff) | |
download | csv-utils-c52ae2927ad88e5bf642c3134853693cd5546ec3.tar.gz csv-utils-c52ae2927ad88e5bf642c3134853693cd5546ec3.zip |
Add new tests
Diffstat (limited to 'src')
-rw-r--r-- | src/test/java/it/alessandroiezzi/csv/CSVParserTest.java | 100 |
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); + } } } |