package sushi.xml.importer; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.IOException; import java.util.Calendar; import java.util.Date; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPathExpressionException; import org.junit.Before; import org.junit.Test; import org.xml.sax.SAXException; import sushi.DateUtils; import sushi.event.SushiEvent; import sushi.event.SushiEventType; import sushi.persistence.Persistor; /** * This class tests the parsing of events and event types from an XML file. * @author micha */ public class XMLParserTest { private static String filePath = System.getProperty("user.dir")+"/src/test/resources/Event1.xml"; private static String filePathToXMLWithHierarchicalTimestamp = System.getProperty("user.dir")+"/src/test/resources/Event2.xml"; @Before public void setup(){ Persistor.useTestEnviroment(); } @Test public void testXMLParsing() throws XPathExpressionException, ParserConfigurationException, SAXException, IOException, XMLParsingException{ SushiEventType eventTyp = new SushiEventType("EventTaxonomy"); eventTyp.setXMLName("EventTaxonomy"); eventTyp.setTimestampName("timestamp"); eventTyp.save(); SushiEvent event = XMLParser.generateEventFromXML(filePath); assertNotNull(event); } @Test public void testHierarchicalTimestampParsing() throws XMLParsingException { SushiEventType eventTyp = new SushiEventType("EventTaxonomy"); eventTyp.setXMLName("EventTaxonomy"); eventTyp.setTimestampName("location.timestamp"); eventTyp.save(); SushiEvent event = XMLParser.generateEventFromXML(filePathToXMLWithHierarchicalTimestamp); assertNotNull(event); Calendar cal = Calendar.getInstance(); cal.clear(); cal.set(2013, 11, 25, 20, 25, 00); assertTrue("Should be " + cal.getTime() + " but was " + event.getTimestamp(), event.getTimestamp().equals(cal.getTime())); } @Test public void testNonHierarchicalTimestampParsing() throws XMLParsingException { SushiEventType eventTyp = new SushiEventType("EventTaxonomy"); eventTyp.setXMLName("EventTaxonomy"); eventTyp.setTimestampName("timestamp"); eventTyp.save(); SushiEvent event = XMLParser.generateEventFromXML(filePathToXMLWithHierarchicalTimestamp); assertNotNull(event); Calendar cal = Calendar.getInstance(); cal.clear(); cal.set(2013, 11, 24, 20, 25, 00); assertTrue("Should be " + cal.getTime() + " but was " + event.getTimestamp(), event.getTimestamp().equals(cal.getTime())); } @SuppressWarnings("deprecation") @Test public void testDateParsing() { String timeStampString = "24.12.2013 20:25"; Date timeStamp = DateUtils.parseDate(timeStampString); assertTrue(timeStamp.getDate() == 24); assertTrue(timeStamp.getMonth() == 12 - 1); assertTrue(timeStamp.getYear() == 2013 - 1900); } }