package sushi.csv.importer; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.List; import org.junit.Test; import sushi.csv.importer.CSVExporter; import sushi.csv.importer.CSVImporter; import sushi.event.SushiEvent; import sushi.event.SushiEventType; import sushi.event.attribute.SushiAttribute; import sushi.util.SushiTestHelper; /** * This class tests import of CSV files. * @author micha */ public class CSVImportTest { private static String filePath = System.getProperty("user.dir")+"/src/test/resources/Kino.csv"; private static String filePath2 = System.getProperty("user.dir")+"/src/test/resources/Kino2.csv"; private static String filePathSmallKino = System.getProperty("user.dir")+"/src/test/resources/KinoSmall.csv"; @Test public void testExtractionOfColumnTitles() { CSVImporter csvNormalizer = new CSVImporter(); List<String> columnTitles = csvNormalizer.getColumnTitlesFromFile(filePath); assertTrue("Timestamp column could not be read.", columnTitles.contains("Timestamp")); assertTrue("Location column could not be read.", columnTitles.contains("Location")); assertTrue("Rating column could not be read.", columnTitles.contains("Rating")); List<String> columnTitles2 = csvNormalizer.getColumnTitlesFromFile(filePath2); assertTrue("Timestamp column could not be read.", columnTitles2.contains("Timestamp")); assertTrue("Location column could not be read.", columnTitles2.contains("Location")); assertTrue("Rating column could not be read.", columnTitles2.contains("Rating")); } @Test public void testExtractionOfEvents() { CSVImporter csvNormalizer = new CSVImporter(); List<String> columnTitles = csvNormalizer.getColumnTitlesFromFile(filePath); List<SushiAttribute> attributes = SushiTestHelper.createAttributes(columnTitles); List<SushiEvent> events = csvNormalizer.importEventsFromFile(filePath, attributes); assertTrue("Not the right number of events imported. Number should be 999 but was " + events.size(), events.size() == 999); // ArrayList<String> columnTitles2 = csvNormalizer.getColumnTitlesFromFile(filePath2); // ArrayList<SushiEvent> events2 = csvNormalizer.importEventsFromFile(filePath2, columnTitles2); // assertTrue("Not the right number of events imported. Number should be 999 but was " + events2.size(), events2.size() == 999); } @Test public void testImportAndExport() { CSVImporter csvNormalizer = new CSVImporter(); List<String> columnTitles = csvNormalizer.getColumnTitlesFromFile(filePath); List<SushiAttribute> attributes = SushiTestHelper.createAttributes(columnTitles); List<SushiEvent> events = csvNormalizer.importEventsFromFile(filePath, attributes); SushiEventType eventType = new SushiEventType("Kino1", attributes, "Timestamp"); eventType.save(); for (SushiEvent e : events) { e.setEventType(eventType); } SushiEvent.save(events); CSVExporter exporter = new CSVExporter(); exporter.generateExportFile(eventType, events); } @Test public void testExtractionOfMeanEvents() { CSVImporter csvNormalizer = new CSVImporter(); List<String> columnTitles = csvNormalizer.getColumnTitlesFromFile(filePathSmallKino); assertTrue("Timestamp column could not be read.", columnTitles.contains("Timestamp")); assertTrue("Location column could not be read.", columnTitles.contains("Location")); assertTrue("Rating column could not be read.", columnTitles.contains("Rating")); List<SushiAttribute> attributes = SushiTestHelper.createAttributes(columnTitles); List<SushiEvent> events = csvNormalizer.importEventsFromFile(filePathSmallKino, attributes); assertTrue("Not the right number of events imported. Number should be 3 but was " + events.size(), events.size() == 3); SushiEvent event1 = events.get(0); assertEquals("re;d;", event1.getValues().get("Rating")); SushiEvent event2 = events.get(1); assertEquals("yel\"\"\"low", event2.getValues().get("Rating")); SushiEvent event3 = events.get(2); assertEquals("red", event3.getValues().get("Rating")); assertEquals(1, event3.getValues().get("Location")); } }