//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.annotators.regex; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.time.LocalDateTime; import java.time.Month; import java.time.ZoneOffset; import org.apache.uima.fit.util.JCasUtil; import org.junit.Test; import uk.gov.dstl.baleen.annotators.regex.Dtg; import uk.gov.dstl.baleen.annotators.testing.AbstractAnnotatorTest; import uk.gov.dstl.baleen.types.semantic.Temporal; /** * */ public class DtgTest extends AbstractAnnotatorTest { public DtgTest() { super(Dtg.class); } @Test public void test() throws Exception{ jCas.setDocumentText("This test was written at 251137Z FEB 13"); processJCas(); assertEquals(1, JCasUtil.select(jCas, Temporal.class).size()); Temporal dt = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertNotNull(dt); assertEquals("251137Z FEB 13", dt.getCoveredText()); assertEquals("251137Z FEB 13", dt.getValue()); assertEquals("EXACT", dt.getPrecision()); assertEquals("SINGLE", dt.getScope()); assertEquals("DATETIME", dt.getTemporalType()); LocalDateTime date = LocalDateTime.of(2013, Month.FEBRUARY, 25, 11, 37); assertEquals(date.toInstant(ZoneOffset.UTC).getEpochSecond(), dt.getTimestampStart()); assertEquals(date.plusMinutes(1).toInstant(ZoneOffset.UTC).getEpochSecond(), dt.getTimestampStop()); } @Test public void test2() throws Exception{ jCas.setDocumentText("Report Title: An example report\nDTG: 04 1558D Sep 10"); processJCas(); Temporal dt = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertNotNull(dt); assertEquals("04 1558D Sep 10", dt.getCoveredText()); assertEquals("04 1558D Sep 10", dt.getValue()); assertEquals("EXACT", dt.getPrecision()); assertEquals("SINGLE", dt.getScope()); assertEquals("DATETIME", dt.getTemporalType()); LocalDateTime date = LocalDateTime.of(2010, Month.SEPTEMBER, 4, 11, 58); assertEquals(date.toInstant(ZoneOffset.UTC).getEpochSecond(), dt.getTimestampStart()); assertEquals(date.plusMinutes(1).toInstant(ZoneOffset.UTC).getEpochSecond(), dt.getTimestampStop()); } @Test public void test3() throws Exception{ jCas.setDocumentText("Report Title: An example report\nDTG: 04 1558D*SEP 10"); processJCas(); Temporal dt = JCasUtil.selectByIndex(jCas, Temporal.class, 0); assertNotNull(dt); assertEquals("04 1558D*SEP 10", dt.getCoveredText()); assertEquals("04 1558D*SEP 10", dt.getValue()); assertEquals("EXACT", dt.getPrecision()); assertEquals("SINGLE", dt.getScope()); assertEquals("DATETIME", dt.getTemporalType()); LocalDateTime date = LocalDateTime.of(2010, Month.SEPTEMBER, 4, 11, 28); assertEquals(date.toInstant(ZoneOffset.UTC).getEpochSecond(), dt.getTimestampStart()); assertEquals(date.plusMinutes(1).toInstant(ZoneOffset.UTC).getEpochSecond(), dt.getTimestampStop()); } @Test public void testBad() throws Exception{ jCas.setDocumentText("This test was written at 301137Z FEB 13"); processJCas(); assertEquals(0, JCasUtil.select(jCas, Temporal.class).size()); jCas.reset(); jCas.setDocumentText("This test was written at 901137Z FEB 13"); processJCas(); assertEquals(0, JCasUtil.select(jCas, Temporal.class).size()); } }