package de.saring.sportstracker.data; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.regex.PatternSyntaxException; import org.junit.Before; import org.junit.Test; /** * This class contains all unit tests for the NoteList class. * * @author Stefan Saring */ public class NoteListTest { private NoteList list; /** * Setup of test data. */ @Before public void setUp() { // create a new list with some test content list = new NoteList(); Note note1 = new Note(1); note1.setDateTime(LocalDateTime.of(2003, 9, 2, 0, 0, 0)); note1.setComment("Dummy note 1"); list.set(note1); Note note2 = new Note(2); note2.setDateTime(LocalDateTime.of(2003, 8, 20, 0, 0, 0)); note2.setComment("Dummy note 2"); list.set(note2); Note note3 = new Note(3); note3.setDateTime(LocalDateTime.of(2003, 9, 6, 0, 0, 0)); note3.setComment("Dummy note 3"); list.set(note3); } /** * Tests for getEntriesForFilter(). */ @Test public void testGetEntriesForFilter1() { // all 3 notes should be found EntryFilter filter = new EntryFilter(); filter.setDateStart(LocalDate.of(2003, 2, 1)); filter.setDateEnd(LocalDate.of(2003, 12, 31)); filter.setEntryType(EntryFilter.EntryType.NOTE); filter.setCommentSubString(""); filter.setRegularExpressionMode(false); EntryList<Note> entryList = list.getEntriesForFilter(filter); assertEquals(3, entryList.size()); } /** * Tests for getEntriesForFilter(): no notes should be found (no notes in time span). */ @Test public void testGetEntriesForFilter2() { EntryFilter filter = new EntryFilter(); filter.setDateStart(LocalDate.of(2003, 1, 1)); filter.setDateEnd(LocalDate.of(2003, 04, 30)); filter.setEntryType(EntryFilter.EntryType.NOTE); filter.setCommentSubString(""); filter.setRegularExpressionMode(false); EntryList<Note> entryList = list.getEntriesForFilter(filter); assertEquals(0, entryList.size()); } /** * Tests for getEntriesForFilter(): all notes should be found (no notes in time span, but filter is set to type * NOTE). */ @Test public void testGetEntriesForFilter3() { EntryFilter filter = new EntryFilter(); filter.setDateStart(LocalDate.of(2003, 1, 1)); filter.setDateEnd(LocalDate.of(2003, 04, 30)); filter.setEntryType(EntryFilter.EntryType.WEIGHT); filter.setCommentSubString(""); filter.setRegularExpressionMode(false); EntryList<Note> entryList = list.getEntriesForFilter(filter); assertEquals(3, entryList.size()); } /** * Tests for getEntriesForFilter(): 2 notes should be found (in the specified time span). */ @Test public void testGetEntriesForFilter4() { EntryFilter filter = new EntryFilter(); filter.setDateStart(LocalDate.of(2003, 9, 2)); filter.setDateEnd(LocalDate.of(2003, 9, 6)); filter.setEntryType(EntryFilter.EntryType.NOTE); filter.setCommentSubString(""); filter.setRegularExpressionMode(false); EntryList<Note> entryList = list.getEntriesForFilter(filter); assertEquals(2, entryList.size()); } /** * Tests for getEntriesForFilter(): 3 notes should be found (with comment substring "NOTE"). */ @Test public void testGetEntriesForFilter5() { EntryFilter filter = new EntryFilter(); filter.setDateStart(LocalDate.of(2003, 1, 1)); filter.setDateEnd(LocalDate.of(2003, 12, 31)); filter.setEntryType(EntryFilter.EntryType.NOTE); filter.setCommentSubString("NOTE"); filter.setRegularExpressionMode(false); EntryList<Note> entryList = list.getEntriesForFilter(filter); assertEquals(3, entryList.size()); } /** * Tests for getEntriesForFilter(): 1 note should be found (with comment substring "OTE 2"). */ @Test public void testGetEntriesForFilter6() { EntryFilter filter = new EntryFilter(); filter.setDateStart(LocalDate.of(2003, 1, 1)); filter.setDateEnd(LocalDate.of(2003, 12, 31)); filter.setEntryType(EntryFilter.EntryType.NOTE); filter.setCommentSubString(" OTE 2 "); filter.setRegularExpressionMode(false); EntryList<Note> entryList = list.getEntriesForFilter(filter); assertEquals(1, entryList.size()); } /** * Tests for getEntriesForFilter(): 0 notes should be found (with comment substring "NotInThere"). */ @Test public void testGetEntriesForFilter7() { EntryFilter filter = new EntryFilter(); filter.setDateStart(LocalDate.of(2003, 1, 1)); filter.setDateEnd(LocalDate.of(2003, 12, 31)); filter.setEntryType(EntryFilter.EntryType.NOTE); filter.setCommentSubString("NotInThere"); filter.setRegularExpressionMode(false); EntryList<Note> entryList = list.getEntriesForFilter(filter); assertEquals(0, entryList.size()); } /** * Tests for getEntriesForFilter(): 2 notes should be found (with comment regular expression substring "ote [0-2]"). */ @Test public void testGetEntriesForFilter8() { EntryFilter filter = new EntryFilter(); filter.setDateStart(LocalDate.of(2003, 1, 1)); filter.setDateEnd(LocalDate.of(2003, 12, 31)); filter.setEntryType(EntryFilter.EntryType.NOTE); filter.setCommentSubString("ote [0-2]"); filter.setRegularExpressionMode(true); EntryList<Note> entryList = list.getEntriesForFilter(filter); assertEquals(2, entryList.size()); } /** * Tests for getEntriesForFilter(): 3 notes should be found (with comment regular expression substring for 3 small * characters). */ @Test public void testGetEntriesForFilter9() { EntryFilter filter = new EntryFilter(); filter.setDateStart(LocalDate.of(2003, 1, 1)); filter.setDateEnd(LocalDate.of(2003, 12, 31)); filter.setEntryType(EntryFilter.EntryType.NOTE); filter.setCommentSubString("[a-z]{3}"); filter.setRegularExpressionMode(true); EntryList<Note> entryList = list.getEntriesForFilter(filter); assertEquals(3, entryList.size()); } /** * Tests for getEntriesForFilter(): 0 notes should be found (with comment regular expression substring for 8 small * characters). */ @Test public void testGetEntriesForFilter10() { EntryFilter filter = new EntryFilter(); filter.setDateStart(LocalDate.of(2003, 1, 1)); filter.setDateEnd(LocalDate.of(2003, 12, 31)); filter.setEntryType(EntryFilter.EntryType.NOTE); filter.setCommentSubString("[a-z]{8}"); filter.setRegularExpressionMode(true); EntryList<Note> entryList = list.getEntriesForFilter(filter); assertEquals(0, entryList.size()); } /** * Tests for getEntriesForFilter(): use of regular expression "ote [0-2" with syntax error => ArgumentException * needs to be thrown. */ @Test public void testGetEntriesForFilter11() { try { EntryFilter filter = new EntryFilter(); filter.setDateStart(LocalDate.of(2003, 1, 1)); filter.setDateEnd(LocalDate.of(2003, 12, 31)); filter.setEntryType(EntryFilter.EntryType.NOTE); filter.setCommentSubString("cise [0-2"); filter.setRegularExpressionMode(true); list.getEntriesForFilter(filter); fail("The expected System.ArgumentException was not thown!"); } catch (PatternSyntaxException pse) { } catch (Exception e) { fail("The expected System.ArgumentException was not thown!"); } } }