package gov.nysenate.openleg.processor.hearing; import gov.nysenate.openleg.BaseTests; import jdk.nashorn.internal.ir.annotations.Ignore; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.net.URISyntaxException; import java.text.ParseException; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.List; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; public class PublicHearingDateParserTest extends BaseTests { private PublicHearingDateParser dateParser; @Before public void setup() { dateParser = new PublicHearingDateParser(); } /** Parses the date time string: June 4, 2014 1:00 p.m. to 3:00 p.m. */ @Test public void singleDigitHoursParse() throws IOException, URISyntaxException, ParseException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "06-04-14 NYsenate Heroin-Opioid Addiction Special Task Force_Seneca Nation_FINAL.txt"); LocalDate expectedDate = LocalDate.of(2014, 6, 4); LocalTime expectedStartTime = LocalTime.of(13, 00); LocalTime expectedEndTime = LocalTime.of(15, 00); LocalDate actualDate = dateParser.parseDate(pages.get(0)); LocalTime actualStartTime = dateParser.parseStartTime(pages.get(0)); LocalTime actualEndTime = dateParser.parseEndTime(pages.get(0)); assertThat(actualDate, is(expectedDate)); assertThat(actualStartTime, is(expectedStartTime)); assertThat(actualEndTime, is(expectedEndTime)); } /** Parses the date time string: June 2, 2014 10:00 a.m. to 12:00 p.m. */ @Test public void doubleDigitHoursParse() throws IOException, URISyntaxException, ParseException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "06-02-14 NYsenate_Labor_Savino_FINAL.txt"); LocalDate expectedDate = LocalDate.of(2014, 6, 2); LocalTime expectedStartTime = LocalTime.of(10, 00); LocalTime expectedEndTime = LocalTime.of(12, 00); LocalDate actualDate = dateParser.parseDate(pages.get(0)); LocalTime actualStartTime = dateParser.parseStartTime(pages.get(0)); LocalTime actualEndTime = dateParser.parseEndTime(pages.get(0)); assertThat(actualDate, is(expectedDate)); assertThat(actualStartTime, is(expectedStartTime)); assertThat(actualEndTime, is(expectedEndTime)); } /** Parses the date time string: Tuesday, August 23, 2011 9:30 a.m. */ @Test public void onlyStartTimeGivenParses() throws IOException, URISyntaxException, ParseException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "08-23-11 NYS Senator Ball SCOPED Final.txt"); LocalDate expectedDate = LocalDate.of(2011, 8, 23); LocalTime expectedStartTime = LocalTime.of(9, 30); LocalTime expectedEndTime = null; LocalDate actualDate = dateParser.parseDate(pages.get(0)); LocalTime actualStartTime = dateParser.parseStartTime(pages.get(0)); LocalTime actualEndTime = dateParser.parseEndTime(pages.get(0)); assertThat(actualDate, is(expectedDate)); assertThat(actualStartTime, is(expectedStartTime)); assertThat(actualEndTime, is(expectedEndTime)); } /** Parses the date time string: Albany, New York March 12, 2014, at 10:00 a.m. */ @Test public void dateTimeOnSingleLineParses() throws IOException, URISyntaxException, ParseException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "03-12-14 Roundtable on the Compassionate Care Act_Savino_FINAL.txt"); LocalDate expectedDate = LocalDate.of(2014, 3, 12); LocalTime expectedStartTime = LocalTime.of(10, 00); LocalTime expectedEndTime = null; LocalDate actualDate = dateParser.parseDate(pages.get(0)); LocalTime actualStartTime = dateParser.parseStartTime(pages.get(0)); LocalTime actualEndTime = dateParser.parseEndTime(pages.get(0)); assertThat(actualDate, is(expectedDate)); assertThat(actualStartTime, is(expectedStartTime)); assertThat(actualEndTime, is(expectedEndTime)); } /** Parses the date time string: January 25, 2012 Afternoon Session */ @Test public void noTimeParses() throws IOException, URISyntaxException, ParseException { // 01-03-13 HurricaneSandy_NYS TaskForce Roundtable_Final.txt List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "01-25-12 Young_Roundtable_III_Final.txt"); LocalDate expectedDate = LocalDate.of(2012, 1, 25); LocalTime expectedStartTime = null; LocalTime expectedEndTime = null; LocalDate actualDate = dateParser.parseDate(pages.get(0)); LocalTime actualStartTime = dateParser.parseStartTime(pages.get(0)); LocalTime actualEndTime = dateParser.parseEndTime(pages.get(0)); assertThat(actualDate, is(expectedDate)); assertThat(actualStartTime, is(expectedStartTime)); assertThat(actualEndTime, is(expectedEndTime)); } /** Parses the date time string: August 22, 2013 11:00 a.m. <96> 4:00 p.m. */ @Test public void invalidCharactersParse() throws IOException, URISyntaxException, ParseException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "08-22-13 NYSSenateHearing_Buffalo_Martins_FINAL.txt"); LocalDate expectedDate = LocalDate.of(2013, 8, 22); LocalTime expectedStartTime = LocalTime.of(11, 00); LocalTime expectedEndTime = LocalTime.of(16, 00); LocalDate actualDate = dateParser.parseDate(pages.get(0)); LocalTime actualStartTime = dateParser.parseStartTime(pages.get(0)); LocalTime actualEndTime = dateParser.parseEndTime(pages.get(0)); assertThat(actualDate, is(expectedDate)); assertThat(actualStartTime, is(expectedStartTime)); assertThat(actualEndTime, is(expectedEndTime)); } /** Parses the date time string: May 9, 2012 2:30 p.m. to - 5:30 p.m. */ @Test public void erroneousCharactersParse() throws IOException, URISyntaxException, ParseException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "05-09-12 NYS SenateAgriculture_Ritchie_Final.txt"); LocalDate expectedDate = LocalDate.of(2012, 5, 9); LocalTime expectedStartTime = LocalTime.of(14, 30); LocalTime expectedEndTime = LocalTime.of(17, 30); LocalDate actualDate = dateParser.parseDate(pages.get(0)); LocalTime actualStartTime = dateParser.parseStartTime(pages.get(0)); LocalTime actualEndTime = dateParser.parseEndTime(pages.get(0)); assertThat(actualDate, is(expectedDate)); assertThat(actualStartTime, is(expectedStartTime)); assertThat(actualEndTime, is(expectedEndTime)); } }