diff --git a/app/src/androidTest/java/com/todoroo/astrid/service/TitleParserTest.java b/app/src/androidTest/java/com/todoroo/astrid/service/TitleParserTest.java index 3d0c6be62..a9ec57ed0 100644 --- a/app/src/androidTest/java/com/todoroo/astrid/service/TitleParserTest.java +++ b/app/src/androidTest/java/com/todoroo/astrid/service/TitleParserTest.java @@ -1,6 +1,6 @@ /** * Copyright (c) 2012 Todoroo Inc - * + *

* See the file "LICENSE" for the full license governing this code. */ package com.todoroo.astrid.service; @@ -54,156 +54,142 @@ public class TitleParserTest extends InjectingTestCase { /** test that completing a task w/ no regular expressions creates a simple task with no date, no repeat, no lists*/ @Test - public void testNoRegexes() throws Exception{ - Task task = new Task(); - Task nothing = new Task(); - task.setTitle("Jog"); - taskDao.save(task); - assertFalse(task.hasDueTime()); - assertFalse(task.hasDueDate()); - assertEquals(task.getRecurrence(), nothing.getRecurrence()); - } - - /** Tests correct date is parsed **/ - @Test - public void testMonthDate() { - Task task = new Task(); - String[] titleMonthStrings = { - "Jan.", "January", - "Feb.", "February", - "Mar.", "March", - "Apr.", "April", - "May", "May", - "Jun.", "June", - "Jul.", "July", - "Aug.", "August", - "Sep.", "September", - "Oct.", "October", - "Nov.", "November", - "Dec.", "December" - }; - for (int i = 0; i < 23; i++) { - String testTitle = "Jog on " + titleMonthStrings[i] + " 12."; - insertTitleAddTask(testTitle, task); - DateTime date = newDateTime(task.getDueDate()); - assertEquals(date.getMonthOfYear(), i/2 + 1); - assertEquals(date.getDayOfMonth(), 12); - } - } + public void testNoRegexes() throws Exception { + Task task = new Task(); + Task nothing = new Task(); + task.setTitle("Jog"); + taskDao.save(task); + assertFalse(task.hasDueTime()); + assertFalse(task.hasDueDate()); + assertEquals(task.getRecurrence(), nothing.getRecurrence()); + } + /** Tests correct date is parsed **/ @Test - public void testMonthSlashDay() { - Task task = new Task(); - for (int i = 1; i < 13; i++) { - String testTitle = "Jog on " + i + "/12/13"; - insertTitleAddTask(testTitle, task); - DateTime date = newDateTime(task.getDueDate()); - assertEquals(date.getMonthOfYear(), i); - assertEquals(date.getDayOfMonth(), 12); - assertEquals(date.getYear(), 2013); - } - } + public void testMonthDate() { + String[] titleMonthStrings = { + "Jan.", "January", + "Feb.", "February", + "Mar.", "March", + "Apr.", "April", + "May", "May", + "Jun.", "June", + "Jul.", "July", + "Aug.", "August", + "Sep.", "September", + "Oct.", "October", + "Nov.", "November", + "Dec.", "December" + }; + for (int i = 0; i < 23; i++) { + String testTitle = "Jog on " + titleMonthStrings[i] + " 12."; + Task task = insertTitleAddTask(testTitle); + DateTime date = newDateTime(task.getDueDate()); + assertEquals(date.getMonthOfYear(), i / 2 + 1); + assertEquals(date.getDayOfMonth(), 12); + } + } @Test - public void testArmyTime() { - Task task = new Task(); - String testTitle = "Jog on 23:21."; - insertTitleAddTask(testTitle, task); - DateTime date = newDateTime(task.getDueDate()); - assertEquals(date.getHourOfDay(), 23); - assertEquals(date.getMinuteOfHour(), 21); - } + public void testMonthSlashDay() { + for (int i = 1; i < 13; i++) { + String testTitle = "Jog on " + i + "/12/13"; + Task task = insertTitleAddTask(testTitle); + DateTime date = newDateTime(task.getDueDate()); + assertEquals(date.getMonthOfYear(), i); + assertEquals(date.getDayOfMonth(), 12); + assertEquals(date.getYear(), 2013); + } + } @Test - public void test_AM_PM() { - Task task = new Task(); - String testTitle = "Jog at 8:33 PM."; - insertTitleAddTask(testTitle, task); - DateTime date = newDateTime(task.getDueDate()); - assertEquals(date.getHourOfDay(), 20); - assertEquals(date.getMinuteOfHour(), 33); - } + public void testArmyTime() { + String testTitle = "Jog on 23:21."; + Task task = insertTitleAddTask(testTitle); + DateTime date = newDateTime(task.getDueDate()); + assertEquals(date.getHourOfDay(), 23); + assertEquals(date.getMinuteOfHour(), 21); + } @Test - public void test_at_hour() { - Task task = new Task(); - String testTitle = "Jog at 8 PM."; - insertTitleAddTask(testTitle, task); - DateTime date = newDateTime(task.getDueDate()); - assertEquals(date.getHourOfDay(), 20); - assertEquals(date.getMinuteOfHour(), 0); - } + public void test_AM_PM() { + String testTitle = "Jog at 8:33 PM."; + Task task = insertTitleAddTask(testTitle); + DateTime date = newDateTime(task.getDueDate()); + assertEquals(date.getHourOfDay(), 20); + assertEquals(date.getMinuteOfHour(), 33); + } @Test - public void test_oclock_AM() { - Task task = new Task(); - String testTitle = "Jog at 8 o'clock AM."; - insertTitleAddTask(testTitle, task); - DateTime date = newDateTime(task.getDueDate()); - assertEquals(date.getHourOfDay(), 8); - assertEquals(date.getMinuteOfHour(), 0); - } + public void test_at_hour() { + String testTitle = "Jog at 8 PM."; + Task task = insertTitleAddTask(testTitle); + DateTime date = newDateTime(task.getDueDate()); + assertEquals(date.getHourOfDay(), 20); + assertEquals(date.getMinuteOfHour(), 0); + } @Test - public void test_several_forms_of_eight() { - Task task = new Task(); - String[] testTitles = { - "Jog 8 AM", - "Jog 8 o'clock AM", - "at 8:00 AM" - }; - for (String testTitle: testTitles) { - insertTitleAddTask(testTitle, task); - DateTime date = newDateTime(task.getDueDate()); - assertEquals(date.getHourOfDay(), 8); - assertEquals(date.getMinuteOfHour(), 0); - } - } + public void test_oclock_AM() { + String testTitle = "Jog at 8 o'clock AM."; + Task task = insertTitleAddTask(testTitle); + DateTime date = newDateTime(task.getDueDate()); + assertEquals(date.getHourOfDay(), 8); + assertEquals(date.getMinuteOfHour(), 0); + } + + @Test + public void test_several_forms_of_eight() { + String[] testTitles = { + "Jog 8 AM", + "Jog 8 o'clock AM", + "at 8:00 AM" + }; + for (String testTitle : testTitles) { + Task task = insertTitleAddTask(testTitle); + DateTime date = newDateTime(task.getDueDate()); + assertEquals(date.getHourOfDay(), 8); + assertEquals(date.getMinuteOfHour(), 0); + } + } + + @Test + public void test_several_forms_of_1230PM() { + String[] testTitles = { + "Jog 12:30 PM", + "at 12:30 PM", + "Do something on 12:30 PM", + "Jog at 12:30 PM Friday" + + }; + for (String testTitle : testTitles) { + Task task = insertTitleAddTask(testTitle); + DateTime date = newDateTime(task.getDueDate()); + assertEquals(date.getHourOfDay(), 12); + assertEquals(date.getMinuteOfHour(), 30); + } + } + + private Task insertTitleAddTask(String title) { + return taskCreator.createWithValues(null, title); + } + + // ----------------Days begin----------------// @Test - public void test_several_forms_of_1230PM() { - Task task = new Task(); - String[] testTitles = { - "Jog 12:30 PM", - "at 12:30 PM", - "Do something on 12:30 PM", - "Jog at 12:30 PM Friday" - - }; - for (String testTitle: testTitles) { - insertTitleAddTask(testTitle, task); - DateTime date = newDateTime(task.getDueDate()); - assertEquals(date.getHourOfDay(), 12); - assertEquals(date.getMinuteOfHour(), 30); - } - } - - private void insertTitleAddTask(String title, Task task) { - task.clear(); - task.setTitle(title); - taskCreator.createWithValues(task, null, title); - } - - - // ----------------Days begin----------------// - @Test public void testDays() { Calendar today = Calendar.getInstance(); - Task task = new Task(); String title = "Jog today"; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + Task task = taskCreator.createWithValues(null, title); DateTime date = newDateTime(task.getDueDate()); assertEquals(date.getDayOfWeek(), today.get(Calendar.DAY_OF_WEEK)); //Calendar starts 1-6, date.getDay() starts at 0 - task = new Task(); title = "Jog tomorrow"; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + task = taskCreator.createWithValues(null, title); date = newDateTime(task.getDueDate()); - assertEquals((date.getDayOfWeek()) % 7, (today.get(Calendar.DAY_OF_WEEK)+1) % 7); + assertEquals((date.getDayOfWeek()) % 7, (today.get(Calendar.DAY_OF_WEEK) + 1) % 7); String[] days = { "sunday", @@ -224,28 +210,25 @@ public class TitleParserTest extends InjectingTestCase { "sat." }; - for (int i = 1; i <= 6; i++){ - task = new Task(); - title = "Jog "+ days[i]; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + for (int i = 1; i <= 6; i++) { + title = "Jog " + days[i]; + task = taskCreator.createWithValues(null, title); date = newDateTime(task.getDueDate()); assertEquals(date.getDayOfWeek(), i + 1); - task = new Task(); - title = "Jog "+ abrevDays[i]; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + title = "Jog " + abrevDays[i]; + task = taskCreator.createWithValues(null, title); date = newDateTime(task.getDueDate()); assertEquals(date.getDayOfWeek(), i + 1); } - } + } //----------------Days end----------------// //----------------Priority begin----------------// + /** tests all words using priority 0 */ @Test public void testPriority0() throws Exception { @@ -255,20 +238,15 @@ public class TitleParserTest extends InjectingTestCase { "lowest priority", "bang 0" }; - Task task; - for (String acceptedString:acceptedStrings){ - task = new Task(); + for (String acceptedString : acceptedStrings) { String title = "Jog " + acceptedString; - task.setTitle(title); //test at end of task. should set importance. - taskCreator.createWithValues(task, null, title); - assertEquals((int)task.getImportance(), Task.IMPORTANCE_NONE); + Task task = taskCreator.createWithValues(null, title); + assertEquals((int) task.getImportance(), Task.IMPORTANCE_NONE); } - for (String acceptedString:acceptedStrings){ - task = new Task(); + for (String acceptedString : acceptedStrings) { String title = acceptedString + " jog"; - task.setTitle(title); //test at beginning of task. should not set importance. - taskCreator.createWithValues(task, null, title); - assertNotSame(task.getImportance(),Task.IMPORTANCE_NONE); + Task task = taskCreator.createWithValues(null, title); + assertNotSame(task.getImportance(), Task.IMPORTANCE_NONE); } } @@ -285,27 +263,27 @@ public class TitleParserTest extends InjectingTestCase { "!" }; Task task; - for (String acceptedStringAtEnd:acceptedStringsAtEnd){ + for (String acceptedStringAtEnd : acceptedStringsAtEnd) { task = new Task(); task.setTitle("Jog " + acceptedStringAtEnd); //test at end of task. should set importance. taskDao.save(task); - assertEquals((int)task.getImportance(), Task.IMPORTANCE_SHOULD_DO); + assertEquals((int) task.getImportance(), Task.IMPORTANCE_SHOULD_DO); } - for (String acceptedStringAtEnd:acceptedStringsAtEnd){ + for (String acceptedStringAtEnd : acceptedStringsAtEnd) { task = new Task(); task.setTitle(acceptedStringAtEnd + " jog"); //test at beginning of task. should not set importance. taskDao.save(task); - assertEquals((int)task.getImportance(), Task.IMPORTANCE_SHOULD_DO); + assertEquals((int) task.getImportance(), Task.IMPORTANCE_SHOULD_DO); } - for (String acceptedStringAnywhere:acceptedStringsAnywhere){ + for (String acceptedStringAnywhere : acceptedStringsAnywhere) { task = new Task(); task.setTitle("Jog " + acceptedStringAnywhere); //test at end of task. should set importance. taskDao.save(task); - assertEquals((int)task.getImportance(), Task.IMPORTANCE_SHOULD_DO); + assertEquals((int) task.getImportance(), Task.IMPORTANCE_SHOULD_DO); task.setTitle(acceptedStringAnywhere + " jog"); //test at beginning of task. should set importance. taskDao.save(task); - assertEquals((int)task.getImportance(), Task.IMPORTANCE_SHOULD_DO); + assertEquals((int) task.getImportance(), Task.IMPORTANCE_SHOULD_DO); } } @@ -321,31 +299,23 @@ public class TitleParserTest extends InjectingTestCase { "!2", "!!" }; - Task task; - for (String acceptedStringAtEnd:acceptedStringsAtEnd){ - task = new Task(); + for (String acceptedStringAtEnd : acceptedStringsAtEnd) { String title = "Jog " + acceptedStringAtEnd; - task.setTitle(title); //test at end of task. should set importance. - taskCreator.createWithValues(task, null, title); - assertEquals((int)task.getImportance(), Task.IMPORTANCE_MUST_DO); + Task task = taskCreator.createWithValues(null, title); + assertEquals((int) task.getImportance(), Task.IMPORTANCE_MUST_DO); - task = new Task(); title = acceptedStringAtEnd + " jog"; - task.setTitle(title); //test at beginning of task. should not set importance. - taskCreator.createWithValues(task, null, title); + task = taskCreator.createWithValues(null, title); assertNotSame(task.getImportance(), Task.IMPORTANCE_MUST_DO); } - for (String acceptedStringAnywhere:acceptedStringsAnywhere){ - task = new Task(); + for (String acceptedStringAnywhere : acceptedStringsAnywhere) { String title = "Jog " + acceptedStringAnywhere; - task.setTitle(title); //test at end of task. should set importance. - taskCreator.createWithValues(task, null, title); - assertEquals((int)task.getImportance(), Task.IMPORTANCE_MUST_DO); + Task task = taskCreator.createWithValues(null, title); + assertEquals((int) task.getImportance(), Task.IMPORTANCE_MUST_DO); title = acceptedStringAnywhere + " jog"; - task.setTitle(title); //test at beginning of task. should set importance. - taskCreator.createWithValues(task, null, title); - assertEquals((int)task.getImportance(), Task.IMPORTANCE_MUST_DO); + task = taskCreator.createWithValues(null, title); + assertEquals((int) task.getImportance(), Task.IMPORTANCE_MUST_DO); } } @@ -364,31 +334,23 @@ public class TitleParserTest extends InjectingTestCase { "!6", "!!!!!!!!!!!!!" }; - Task task; - for (String acceptedStringAtEnd:acceptedStringsAtEnd){ - task = new Task(); + for (String acceptedStringAtEnd : acceptedStringsAtEnd) { String title = "Jog " + acceptedStringAtEnd; - task.setTitle(title); //test at end of task. should set importance. - taskCreator.createWithValues(task, null, title); - assertEquals((int)task.getImportance(), Task.IMPORTANCE_DO_OR_DIE); + Task task = taskCreator.createWithValues(null, title); + assertEquals((int) task.getImportance(), Task.IMPORTANCE_DO_OR_DIE); - task = new Task(); title = acceptedStringAtEnd + " jog"; - task.setTitle(title); //test at beginning of task. should not set importance. - taskCreator.createWithValues(task, null, title); + task = taskCreator.createWithValues(null, title); assertNotSame(task.getImportance(), Task.IMPORTANCE_DO_OR_DIE); } - for (String acceptedStringAnywhere:acceptedStringsAnywhere){ - task = new Task(); + for (String acceptedStringAnywhere : acceptedStringsAnywhere) { String title = "Jog " + acceptedStringAnywhere; - task.setTitle(title); //test at end of task. should set importance. - taskCreator.createWithValues(task, null, title); - assertEquals((int)task.getImportance(), Task.IMPORTANCE_DO_OR_DIE); + Task task = taskCreator.createWithValues(null, title); + assertEquals((int) task.getImportance(), Task.IMPORTANCE_DO_OR_DIE); title = acceptedStringAnywhere + " jog"; - task.setTitle(title); //test at beginning of task. should set importance. - taskCreator.createWithValues(task, null, title); - assertEquals((int)task.getImportance(), Task.IMPORTANCE_DO_OR_DIE); + task = taskCreator.createWithValues(null, title); + assertEquals((int) task.getImportance(), Task.IMPORTANCE_DO_OR_DIE); } } @@ -396,13 +358,12 @@ public class TitleParserTest extends InjectingTestCase { //----------------Repeats begin----------------// + /** test daily repeat from due date, but with no due date set */ @Test public void testDailyWithNoDueDate() throws Exception { - Task task = new Task(); String title = "Jog daily"; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + Task task = taskCreator.createWithValues(null, title); RRule rrule = new RRule(); rrule.setFreq(Frequency.DAILY); rrule.setInterval(1); @@ -411,21 +372,18 @@ public class TitleParserTest extends InjectingTestCase { assertFalse(task.hasDueDate()); title = "Jog every day"; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + task = taskCreator.createWithValues(null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertFalse(task.hasDueTime()); assertFalse(task.hasDueDate()); - for (int i = 1; i <= 12; i++){ + for (int i = 1; i <= 12; i++) { title = "Jog every " + i + " days."; - task.setTitle(title); rrule.setInterval(i); - taskCreator.createWithValues(task, null, title); + task = taskCreator.createWithValues(null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertFalse(task.hasDueTime()); assertFalse(task.hasDueDate()); - task = new Task(); } } @@ -433,10 +391,8 @@ public class TitleParserTest extends InjectingTestCase { /** test weekly repeat from due date, with no due date & time set */ @Test public void testWeeklyWithNoDueDate() throws Exception { - Task task = new Task(); String title = "Jog weekly"; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + Task task = taskCreator.createWithValues(null, title); RRule rrule = new RRule(); rrule.setFreq(Frequency.WEEKLY); rrule.setInterval(1); @@ -445,31 +401,26 @@ public class TitleParserTest extends InjectingTestCase { assertFalse(task.hasDueDate()); title = "Jog every week"; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + task = taskCreator.createWithValues(null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertFalse(task.hasDueTime()); assertFalse(task.hasDueDate()); - for (int i = 1; i <= 12; i++){ + for (int i = 1; i <= 12; i++) { title = "Jog every " + i + " weeks"; - task.setTitle(title); rrule.setInterval(i); - taskCreator.createWithValues(task, null, title); + task = taskCreator.createWithValues(null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertFalse(task.hasDueTime()); assertFalse(task.hasDueDate()); - task = new Task(); } } /** test hourly repeat from due date, with no due date but no time */ @Test public void testMonthlyFromNoDueDate() throws Exception { - Task task = new Task(); String title = "Jog monthly"; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + Task task = taskCreator.createWithValues(null, title); RRule rrule = new RRule(); rrule.setFreq(Frequency.MONTHLY); rrule.setInterval(1); @@ -478,30 +429,25 @@ public class TitleParserTest extends InjectingTestCase { assertFalse(task.hasDueDate()); title = "Jog every month"; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + task = taskCreator.createWithValues(null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertFalse(task.hasDueTime()); assertFalse(task.hasDueDate()); - for (int i = 1; i <= 12; i++){ + for (int i = 1; i <= 12; i++) { title = "Jog every " + i + " months"; - task.setTitle(title); rrule.setInterval(i); - taskCreator.createWithValues(task, null, title); + task = taskCreator.createWithValues(null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertFalse(task.hasDueTime()); assertFalse(task.hasDueDate()); - task = new Task(); } } @Test public void testDailyFromDueDate() throws Exception { - Task task = new Task(); String title = "Jog daily starting from today"; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + Task task = taskCreator.createWithValues(null, title); RRule rrule = new RRule(); rrule.setFreq(Frequency.DAILY); rrule.setInterval(1); @@ -511,28 +457,23 @@ public class TitleParserTest extends InjectingTestCase { task.clearValue(Task.ID); task.clearValue(Task.UUID); title = "Jog every day starting from today"; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + task = taskCreator.createWithValues(null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertTrue(task.hasDueDate()); - for (int i = 1; i <= 12; i++){ + for (int i = 1; i <= 12; i++) { title = "Jog every " + i + " days starting from today"; - task.setTitle(title); rrule.setInterval(i); - taskCreator.createWithValues(task, null, title); + task = taskCreator.createWithValues(null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertTrue(task.hasDueDate()); - task = new Task(); } } @Test public void testWeeklyFromDueDate() throws Exception { - Task task = new Task(); String title = "Jog weekly starting from today"; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + Task task = taskCreator.createWithValues(null, title); RRule rrule = new RRule(); rrule.setFreq(Frequency.WEEKLY); rrule.setInterval(1); @@ -542,19 +483,16 @@ public class TitleParserTest extends InjectingTestCase { task.clearValue(Task.ID); task.clearValue(Task.UUID); title = "Jog every week starting from today"; - task.setTitle(title); - taskCreator.createWithValues(task, null, title); + task = taskCreator.createWithValues(null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertTrue(task.hasDueDate()); - for (int i = 1; i <= 12; i++){ + for (int i = 1; i <= 12; i++) { title = "Jog every " + i + " weeks starting from today"; - task.setTitle(title); rrule.setInterval(i); - taskCreator.createWithValues(task, null, title); + task = taskCreator.createWithValues(null, title); assertEquals(task.getRecurrence(), rrule.toIcal()); assertTrue(task.hasDueDate()); - task = new Task(); } } @@ -562,6 +500,7 @@ public class TitleParserTest extends InjectingTestCase { //----------------Tags begin----------------// + /** tests all words using priority 0 */ @Test public void testTagsPound() throws Exception { @@ -598,7 +537,7 @@ public class TitleParserTest extends InjectingTestCase { ArrayList tags = new ArrayList<>(); TitleParser.listHelper(tagService, task, tags); String tag = TitleParser.trimParenthesis(acceptedString); - assertTrue("testTagsAt failed for string: " + acceptedString+ " for tags: " + tags.toString(), tags.contains(tag)); + assertTrue("testTagsAt failed for string: " + acceptedString + " for tags: " + tags.toString(), tags.contains(tag)); } } } diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.java b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.java index 58dcd09fd..ebd712697 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.java +++ b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.java @@ -74,10 +74,7 @@ public class TaskCreator { * doesn't need to start with a base task model. */ public Task createWithValues(Map values, String title) { - return createWithValues(new Task(), values, title); - } - - Task createWithValues(Task task, Map values, String title) { + Task task = new Task(); if (title != null) { task.setTitle(title.trim()); }