//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.annotators.regex; import static org.junit.Assert.assertEquals; import org.apache.uima.fit.util.JCasUtil; import org.junit.Test; import uk.gov.dstl.baleen.annotators.regex.DateTime; import uk.gov.dstl.baleen.annotators.testing.AbstractAnnotatorTest; import uk.gov.dstl.baleen.types.semantic.Temporal; /** * Test the DateRange annotator */ public class DateTimeTest extends AbstractAnnotatorTest{ public DateTimeTest() { super(DateTime.class); } @Test public void testIso() throws Exception{ jCas.setDocumentText("It is currently 2016-10-05T11:07:22Z"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal ts1 = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertEquals("2016-10-05T11:07:22Z", ts1.getCoveredText()); assertEquals(1475665642L, ts1.getTimestampStart()); assertEquals(1475665643L, ts1.getTimestampStop()); jCas.reset(); jCas.setDocumentText("It is currently 2016-10-05T11:07:22"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal ts2 = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertEquals("2016-10-05T11:07:22", ts2.getCoveredText()); assertEquals(1475665642L, ts2.getTimestampStart()); assertEquals(1475665643L, ts2.getTimestampStop()); jCas.reset(); jCas.setDocumentText("It is currently 2016-10-05T13:37:22+02:30"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal ts3 = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertEquals("2016-10-05T13:37:22+02:30", ts3.getCoveredText()); assertEquals(1475665642L, ts3.getTimestampStart()); assertEquals(1475665643L, ts3.getTimestampStop()); jCas.reset(); jCas.setDocumentText("It is currently 2016-10-05T11:07:22.234"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal ts4 = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertEquals("2016-10-05T11:07:22.234", ts4.getCoveredText()); assertEquals(1475665642L, ts4.getTimestampStart()); assertEquals(1475665643L, ts4.getTimestampStop()); } @Test public void testTimeOnDate() throws Exception{ jCas.setDocumentText("Be ready to go at 1100hrs on 5 October 2016"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal ts1 = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertEquals("1100hrs on 5 October 2016", ts1.getCoveredText()); assertEquals(1475665200L, ts1.getTimestampStart()); assertEquals(1475665260L, ts1.getTimestampStop()); jCas.reset(); jCas.setDocumentText("Be ready to go at 11:00:00hrs on 5 Oct 2016"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal ts2 = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertEquals("11:00:00hrs on 5 Oct 2016", ts2.getCoveredText()); assertEquals(1475665200L, ts2.getTimestampStart()); assertEquals(1475665201L, ts2.getTimestampStop()); } @Test public void testDayMonthTime() throws Exception{ jCas.setDocumentText("It happened at 22 Apr 2014 1529Z"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal ts1 = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertEquals("22 Apr 2014 1529Z", ts1.getCoveredText()); assertEquals(1398180540L, ts1.getTimestampStart()); assertEquals(1398180600L, ts1.getTimestampStop()); jCas.reset(); jCas.setDocumentText("It happened at 22 April 2014 1529 EST"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal ts2 = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertEquals("22 April 2014 1529 EST", ts2.getCoveredText()); assertEquals(1398198540L, ts2.getTimestampStart()); assertEquals(1398198600L, ts2.getTimestampStop()); jCas.reset(); jCas.setDocumentText("It happened at 22 April 2014 152947Z"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal ts3 = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertEquals("22 April 2014 152947Z", ts3.getCoveredText()); assertEquals(1398180587L, ts3.getTimestampStart()); assertEquals(1398180588L, ts3.getTimestampStop()); jCas.reset(); jCas.setDocumentText("It happened at 22 April 2014 15:29:47"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal ts4 = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertEquals("22 April 2014 15:29:47", ts4.getCoveredText()); assertEquals(1398180587L, ts4.getTimestampStart()); assertEquals(1398180588L, ts4.getTimestampStop()); } @Test public void testMonthDayTime() throws Exception{ jCas.setDocumentText("It happened at Apr 22, 2014 1529Z"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal ts1 = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertEquals("Apr 22, 2014 1529Z", ts1.getCoveredText()); assertEquals(1398180540L, ts1.getTimestampStart()); assertEquals(1398180600L, ts1.getTimestampStop()); jCas.reset(); jCas.setDocumentText("It happened at April 22 2014 1529 EST"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal ts2 = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertEquals("April 22 2014 1529 EST", ts2.getCoveredText()); assertEquals(1398198540L, ts2.getTimestampStart()); assertEquals(1398198600L, ts2.getTimestampStop()); jCas.reset(); jCas.setDocumentText("It happened at April 22, 2014 152947Z"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal ts3 = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertEquals("April 22, 2014 152947Z", ts3.getCoveredText()); assertEquals(1398180587L, ts3.getTimestampStart()); assertEquals(1398180588L, ts3.getTimestampStop()); } }