package gov.nysenate.openleg.processor.transcript; import org.apache.commons.lang3.text.WordUtils; import org.junit.Test; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import static org.junit.Assert.*; public class TranscriptLineTest { @Test public void testPageNumber() { TranscriptLine line = new TranscriptLine(" 1234"); assertTrue(line.isPageNumber()); line = new TranscriptLine("4321"); assertTrue(line.isPageNumber()); // Sometimes page number starts the second line. e.g. 011299.v1, 020597.v1 line = new TranscriptLine("55"); assertTrue(line.isPageNumber()); // Remove broken pipe character. e.g. 122099.v1 line = new TranscriptLine(" � 2301"); assertTrue(line.isPageNumber()); } @Test public void testRemoveLineNumber() { TranscriptLine line = new TranscriptLine(" 21 NEW YORK STATE SENATE "); assertEquals(" NEW YORK STATE SENATE", line.removeLineNumber()); line = new TranscriptLine(" 22"); assertEquals("", line.removeLineNumber().trim()); line = new TranscriptLine(" 2"); assertEquals("", line.removeLineNumber().trim()); line = new TranscriptLine(" THE NEW YORK SENATE"); assertEquals(" THE NEW YORK SENATE", line.removeLineNumber()); line = new TranscriptLine(" 833"); assertEquals(" 833", line.removeLineNumber()); } @Test public void timeTypoNotInterpretedAsLineNumber() { TranscriptLine line = new TranscriptLine(" 10 00 a.m."); assertEquals("1000AM", line.getTimeString()); } @Test public void testIsLocation() { TranscriptLine line = new TranscriptLine(" 10 ALBANY, NEW YORK"); assertTrue(line.isLocation()); // e.g. 021197.v1 line = new TranscriptLine(" ALBANY, NEW YORK"); assertTrue(line.isLocation()); } @Test public void testDateHandling() { TranscriptLine line = new TranscriptLine(" 11 March 26, 2011"); assertTrue(line.isDate()); assertEquals("March 26 2011", line.getDateString()); // e.g 031699.v1 line = new TranscriptLine(" 22 Albany NEW YORK"); assertFalse(line.isDate()); // e.g 031699.v1 line = new TranscriptLine(" March 16, 1999."); assertTrue(line.isDate()); assertEquals("March 16 1999", line.getDateString()); // e.g. 022894.v1 line = new TranscriptLine(" February 28 , 1994"); assertTrue(line.isDate()); assertEquals("February 28 1994", line.getDateString()); // e.g. 033193.v1 line = new TranscriptLine(" March 31,1993"); assertTrue(line.isDate()); assertEquals("March 31 1993", line.getDateString()); } @Test public void testIsTime() { TranscriptLine line = new TranscriptLine(" 13 26, 2011"); assertFalse(line.isTime()); line = new TranscriptLine(" 9 9:55 am"); assertTrue(line.isTime()); // e.g. 032611v1.TXT line = new TranscriptLine(" 10 00 a.m."); assertTrue(line.isTime()); line = new TranscriptLine(" 2:00 p.m."); assertTrue(line.isTime()); line = new TranscriptLine(" 9 12:55 pm"); assertTrue(line.isTime()); // e.g. 030393.v1 line = new TranscriptLine(" 12:00 Noon"); assertTrue(line.isTime()); } @Test public void testGetTime() { TranscriptLine line = new TranscriptLine(" 10:15 a.m."); assertEquals("1015AM", line.getTimeString()); } @Test public void testIsSessionType() { TranscriptLine line = new TranscriptLine(" 12 REGULAR SESSION"); assertTrue(line.isSession()); line = new TranscriptLine(" EXTRAORDINARY SESSION"); assertTrue(line.isSession()); } @Test public void testIsEmpty() { TranscriptLine line = new TranscriptLine("\t \n"); assertTrue(line.isEmpty()); line = new TranscriptLine(" "); assertTrue(line.isEmpty()); } @Test public void testIsStenographer() { TranscriptLine line = new TranscriptLine(" Candyco Transcription Service, Inc. "); assertTrue(line.isStenographer()); line = new TranscriptLine(" (518) 371-8910 "); assertTrue(line.isStenographer()); } @Test public void properlyIgnoresInvalidCharacters() { TranscriptLine line = new TranscriptLine(" � 2301"); assertTrue(line.isPageNumber()); } @Test public void dateTests() { String date = "NOVEMBER 15 2005"; String time = "1000am"; date = WordUtils.capitalizeFully(date); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM d yyyy hhmma"); LocalDateTime dt = LocalDateTime.parse(date + " " + time.toUpperCase(), dtf); } }