package de.dhbw.humbuch.util; import static org.junit.Assert.assertEquals; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import org.junit.Test; import org.mozilla.universalchardet.UniversalDetector; import au.com.bytecode.opencsv.CSVReader; /** * Test reading a csv file and creating student objects of its data. * * @author Benjamin Räthlein * */ public class CSVTest { @Test public void testCreateStudentObjectsFromCSV(){ CSVReader csvReader; try { String encoding = checkEncoding("./src/test/java/de/dhbw/humbuch/util/schueler_stamm.csv"); if (encoding != null) { csvReader = new CSVReader(new InputStreamReader(new FileInputStream("./src/test/java/de/dhbw/humbuch/util/schueler_stamm.csv"), encoding), ';', '\'', 0); } else{ csvReader = new CSVReader(new FileReader("./src/test/java/de/dhbw/humbuch/util/schueler_stamm.csv"), ';', '\'', 0); } ArrayList<de.dhbw.humbuch.model.entity.Student> list = CSVHandler.createStudentObjectsFromCSV(csvReader); assertEquals(99, list.size()); assertEquals("Zivko", list.get(1).getLastname()); assertEquals("Adelina", list.get(1).getFirstname()); DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy"); assertEquals("02.01.1989", dateFormat.format(list.get(1).getBirthday())); assertEquals("m", list.get(1).getGender()); } catch (FileNotFoundException | UnsupportedEncodingException e) { e.printStackTrace(); } } private String checkEncoding(String fileName) { byte[] buf = new byte[4096]; FileInputStream fileInputStream; try { fileInputStream = new FileInputStream(fileName); // (1) UniversalDetector detector = new UniversalDetector(null); // (2) int nread; while ((nread = fileInputStream.read(buf)) > 0 && !detector.isDone()) { detector.handleData(buf, 0, nread); } // (3) detector.dataEnd(); // (4) String encoding = detector.getDetectedCharset(); // (5) detector.reset(); fileInputStream.close(); return encoding; } catch (IOException e) { e.printStackTrace(); } return null; } }