Added unit tests to titleparser

pull/14/head
Amy Tang 14 years ago
parent f494a55ff1
commit 86298cbdb6

@ -28,6 +28,6 @@
<classpathentry exported="true" kind="lib" path="libs/gson-1.6.jar"/>
<classpathentry exported="true" kind="lib" path="libs/google-api-services-tasks-v1-1.2.5-beta.jar"/>
<classpathentry kind="lib" path="libs/crittercism_v1_1_3.jar"/>
<classpathentry kind="lib" path="/Users/amytang/git/astrid/astrid/libs/jchronic-0.2.3.jar"/>
<classpathentry kind="lib" path="libs/jchronic-0.2.3.jar"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

@ -69,7 +69,7 @@ public class TitleParser {
private static void priorityHelper(Task task) {
String inputText = task.getValue(Task.TITLE);
String[] importanceStrings = {
"()((^|[^\\w!])!+|(^|[^\\w!])0|(^|[^\\w!])!\\d)($|[^\\w!])",
"()((^|[^\\w!])!+|(^|[^\\w!])!\\d)($|[^\\w!])",
"()(?i)((\\s?bang){1,})$",
"(?i)(\\spriority\\s?(\\d)$)",
"(?i)(\\sbang\\s?(\\d)$)",
@ -92,12 +92,12 @@ public class TitleParser {
//helper for dayHelper. Converts am/pm to an int 0/1.
private static int ampm_to_number(String am_pm_string) {
int time = 0;
int time = Calendar.PM;
if (am_pm_string == null){
return time;
}
String text = am_pm_string.toLowerCase().trim();
if (text.equals ("am") || text.equals ("a.m.") || text.equals("a"))
if (text.equals ("am") || text.equals ("a.m") || text.equals("a"))
time = Calendar.AM;
if (text.equals ("pm") || text.equals ("p.m") || text.equals("p"))
time = Calendar.PM;
@ -116,13 +116,12 @@ public class TitleParser {
"(?i)\\b(today)\\b",
"(?i)\\b(tomorrow)\\b",
"(?i)\\b(mon(day\\b|\\.))",
"(?i)\\b(tues(day\\b|\\.))",
"(?i)\\b(tue(sday\\b|\\.))",
"(?i)\\b(wed(nesday\\b|\\.))",
"(?i)\\b(thu(rsday\\b|\\.))",
"(?i)\\b(fri(day\\b|\\.))",
"(?i)\\b(sat(urday\\b|\\.))",
"(?i)\\b(sun(day\\b|\\.))",
"(?i)\\b(next (month|week|year))\\b" };
"(?i)\\b(sun(day\\b|\\.))" };
for (String date : days_of_week){
Pattern pattern = Pattern.compile(date);
@ -136,18 +135,18 @@ public class TitleParser {
String ds = "3[0-1]|[0-2]?[0-9]"; //day string for date regexes
String[] dates = {
"(?i)\\b(jan(\\.|uary))(\\s(3[0-1]|[0-2]?[0-9])),? (\\d{4}|\\d{2})?",
"(?i)\\b(feb(\\.|ruary))(\\s(3[0-1]|[0-2]?[0-9])),? (\\d{4}|\\d{2})?",
"(?i)\\b(mar(\\.|ch))(\\s(3[0-1]|[0-2]?[0-9])),? (\\d{4}|\\d{2})?",
"(?i)\\b(apr(\\.|il))(\\s(3[0-1]|[0-2]?[0-9])),? (\\d{4}|\\d{2})?",
"(?i)\\b(may)(\\s(3[0-1]|[0-2]?[0-9])),? (\\d{4}|\\d{2})?",
"(?i)\\b(jun(\\.|e))(\\s(3[0-1]|[0-2]?[0-9])),? (\\d{4}|\\d{2})?",
"(?i)\\b(jul(\\.|y))(\\s(3[0-1]|[0-2]?[0-9])),? (\\d{4}|\\d{2})?",
"(?i)\\b(aug(\\.|ust))(\\s(3[0-1]|[0-2]?[0-9])),? (\\d{4}|\\d{2})?",
"(?i)\\b(sep(\\.|tember))(\\s(3[0-1]|[0-2]?[0-9])),? (\\d{4}|\\d{2})?",
"(?i)\\b(oct(\\.|ober))(\\s(3[0-1]|[0-2]?[0-9])),? (\\d{4}|\\d{2})?",
"(?i)\\b(nov(\\.|ember))(\\s(3[0-1]|[0-2]?[0-9])),? (\\d{4}|\\d{2})?",
"(?i)\\b(dec(\\.|ember))(\\s(3[0-1]|[0-2]?[0-9])),? (\\d{4}|\\d{2})?"};
"(?i)\\b(jan(\\.|uary))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?",
"(?i)\\b(feb(\\.|ruary))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?",
"(?i)\\b(mar(\\.|ch))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?",
"(?i)\\b(apr(\\.|il))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?",
"(?i)\\b(may())(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?",
"(?i)\\b(jun(\\.|e))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?",
"(?i)\\b(jul(\\.|y))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?",
"(?i)\\b(aug(\\.|ust))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?",
"(?i)\\b(sep(\\.|tember))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?",
"(?i)\\b(oct(\\.|ober))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?",
"(?i)\\b(nov(\\.|ember))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?",
"(?i)\\b(dec(\\.|ember))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?"};
// m.group(1) = "month"
//m.group(4) = "day"
@ -157,17 +156,17 @@ public class TitleParser {
if (m.find()){
Calendar dateCal = Chronic.parse(m.group(1)).getBeginCalendar();
if (m.group(4)!= null){
if (m.group(4) != null){
dateCal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(m.group(4)));
}
Calendar today = Calendar.getInstance();
if (m.group(5)!=null){
dateCal.set(Calendar.YEAR, Integer.parseInt(m.group(5)));
if (m.group(5) != null){
dateCal.set(Calendar.YEAR, Integer.parseInt(m.group(5).trim()));
}
else if (today.get(Calendar.MONTH) - dateCal.get(Calendar.MONTH) > 1){ //if more than a month in the past
dateCal.set(Calendar.YEAR, dateCal.get(Calendar.YEAR)+1);
}
if (cal==null){
if (cal == null){
cal = dateCal;
}
else{
@ -179,7 +178,7 @@ public class TitleParser {
}
// for dates in the format MM/DD
Pattern p = Pattern.compile("(?i)\\b(1[0-2]|[1-9])(\\/|-)(3[0-1]|[0-2]?[0-9])(\\/|-)?(\\d{4}|\\d{2})?");
Pattern p = Pattern.compile("(?i)\\b(1[0-2]|0?[1-9])(\\/|-)(3[0-1]|[0-2]?[0-9])(\\/|-)?(\\d{4}|\\d{2})?");
Matcher match = p.matcher(inputText);
if (match.find()){
Calendar dCal = Calendar.getInstance();
@ -210,13 +209,13 @@ public class TitleParser {
dayTimes.put("(?i)\\bsupper\\b" ,18);
dayTimes.put("(?i)\\bdinner\\b",18);
dayTimes.put("(?i)\\bbrunch\\b", 10);
dayTimes.put("(?i)\\bmorning\\b", 8);
dayTimes.put("(?i)\\bafternoon\\b", 15);
dayTimes.put("(?i)\\bevening\\b" , 19);
dayTimes.put("(?i)\\bnight\\b" , 19);
dayTimes.put("(?i)\\bmidnight\\b" , 24);
dayTimes.put("(?i)\\bnoon\\b" , 12);
for (String dayTime: dayTimes.keySet()){
Pattern pattern = Pattern.compile(dayTime);
Matcher m = pattern.matcher(inputText);
@ -237,10 +236,10 @@ public class TitleParser {
}
String[] times = {
//[time] am/pm
"(?i)(\\b)([01]?\\d):?([0-5]\\d)? ?([ap]\\.?m?\\.?)\\b",
//army time
"(?i)\\b(([0-2]?[0-9]):([0-5][0-9]))(\\b)",
//[time] am/pm
"(\\b)([01]?\\d)(:[0-5]\\d)? ?([ap]\\.?m\\.?)\\b",
//[int] o'clock
"(?i)\\b(([01]?\\d)() ?o'? ?clock) ?([ap]\\.?m\\.?)?\\b",
//at [int]
@ -256,16 +255,32 @@ public class TitleParser {
Matcher m = pattern.matcher(inputText);
if (m.find()){
containsSpecificTime = true;
Calendar today = Calendar.getInstance();
Calendar timeCal = Calendar.getInstance();
setCalendarToDefaultTime(timeCal);
timeCal.set(Calendar.HOUR, Integer.parseInt(m.group(2)));
if (m.group(3) != null && !m.group(3).trim().equals(""))
timeCal.set(Calendar.MINUTE, Integer.parseInt(m.group(3)));
else
timeCal.set(Calendar.MINUTE, 0);
System.err.println(m.group(4));
System.err.println(ampm_to_number(m.group(4)));
timeCal.set(Calendar.AM_PM, ampm_to_number(m.group(4)));
if (Integer.parseInt(m.group(2)) <= 12)
timeCal.set(Calendar.AM_PM, ampm_to_number(m.group(4)));
//sets it to the next occurrence of that hour if no am/pm is provided. doesn't include military time
if ( Integer.parseInt(m.group(2))<= 12 && (m.group(4)==null || (m.group(4).trim()).equals(""))) {
while (timeCal.getTime().getTime() < today.getTime().getTime()){
timeCal.set(Calendar.HOUR_OF_DAY, timeCal.get(Calendar.HOUR_OF_DAY)+12);
}
}
else { //if am/pm is provided and the time is in the past, set it to the next day. Military time included.
if (timeCal.get(Calendar.HOUR) !=0 && (timeCal.getTime().getTime() < today.getTime().getTime())) {
timeCal.set(Calendar.DAY_OF_MONTH, timeCal.get(Calendar.DAY_OF_MONTH) + 1);
}
if (timeCal.get(Calendar.HOUR) == 0){
timeCal.set(Calendar.HOUR, 12);
}
}
if (cal == null){
cal = timeCal;
@ -276,7 +291,6 @@ public class TitleParser {
cal.set(Calendar.SECOND, timeCal.get(Calendar.SECOND));
cal.set(Calendar.AM_PM, timeCal.get(Calendar.AM_PM));
}
break;
}
}
@ -291,7 +305,6 @@ public class TitleParser {
task.setValue(Task.DUE_DATE, dueDate);
}
}
}
//---------------------DATE--------------------------
@ -299,7 +312,11 @@ public class TitleParser {
private static void repeatHelper(Task task) {
String inputText = task.getValue(Task.TITLE);
HashMap<String, Frequency> repeatTimes = new HashMap();
repeatTimes.put("(?i)\\bevery ?\\w{0,6} ?days?\\b" , Frequency.DAILY);
repeatTimes.put("(?i)\\bevery ?\\w{0,6} days?\\b" , Frequency.DAILY);
repeatTimes.put("(?i)\\bevery ?\\w{0,6} nights?\\b" , Frequency.DAILY);
repeatTimes.put("(?i)\\bevery ?\\w{0,6} ?mornings?\\b" , Frequency.DAILY);
repeatTimes.put("(?i)\\bevery ?\\w{0,6} ?evenings?\\b" , Frequency.DAILY);
repeatTimes.put("(?i)\\bevery ?\\w{0,6} ?afternoons?\\b" , Frequency.DAILY);
repeatTimes.put("(?i)\\bevery \\w{0,6} ?weeks?\\b", Frequency.WEEKLY);
repeatTimes.put("(?i)\\bevery \\w{0,6} ?(mon|tues|wednes|thurs|fri|satur|sun)days?\\b", Frequency.WEEKLY);
repeatTimes.put("(?i)\\bevery \\w{0,6} ?months?\\b", Frequency.MONTHLY);
@ -308,6 +325,7 @@ public class TitleParser {
HashMap<String, Frequency> repeatTimesIntervalOne = new HashMap();
//pre-determined intervals of 1
repeatTimesIntervalOne.put( "(?i)\\bdaily\\b" , Frequency.DAILY);
repeatTimesIntervalOne.put( "(?i)\\beveryday\\b" , Frequency.DAILY);
repeatTimesIntervalOne.put( "(?i)\\bweekly\\b" , Frequency.WEEKLY);
repeatTimesIntervalOne.put( "(?i)\\bmonthly\\b" ,Frequency.MONTHLY);
repeatTimesIntervalOne.put( "(?i)\\byearly\\b" , Frequency.YEARLY);
@ -327,7 +345,6 @@ public class TitleParser {
for (String repeatTimeIntervalOne:repeatTimesIntervalOne.keySet()){
Pattern pattern = Pattern.compile(repeatTimeIntervalOne);
Matcher m = pattern.matcher(inputText);
//if (m.find() && map.get("time")==null){
if (m.find()) {
Frequency rtime = repeatTimesIntervalOne.get(repeatTimeIntervalOne);
RRule rrule = new RRule();
@ -366,6 +383,7 @@ public class TitleParser {
//helper method for DayHelper. Resets the time on the calendar to 00:00:00 am
private static void setCalendarToDefaultTime(Calendar cal){
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.AM_PM, Calendar.AM);

@ -0,0 +1,509 @@
package com.todoroo.andlib.utility;
import java.util.Calendar;
import java.util.Date;
import com.google.ical.values.Frequency;
import com.google.ical.values.RRule;
import com.timsu.astrid.R;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.test.DatabaseTestCase;
public class TitleParserTest extends DatabaseTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
Preferences.setStringFromInteger(R.string.p_default_urgency_key, 0);
}
/** test that completing a task w/ no regular expressions creates a simple task with no date, no repeat, no lists*/
public void testNoRegexes() throws Exception{
TaskService taskService = new TaskService();
Task task = new Task();
Task nothing = new Task();
task.setValue(Task.TITLE, "Jog");
taskService.quickAdd(task);
assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate());
assertEquals(task.getValue(Task.RECURRENCE), nothing.getValue(Task.RECURRENCE));
}
/** Tests correct date is parsed **/
public void testMonthDate() {
TaskService taskService = new TaskService();
Task task = new Task();
Task nothing = 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, taskService);
Date date = new Date(task.getValue(Task.DUE_DATE));
assertEquals(date.getMonth(), i/2);
assertEquals(date.getDate(), 12);
}
}
public void testMonthSlashDay() {
TaskService taskService = new TaskService();
Task task = new Task();
Task nothing = new Task();
for (int i = 1; i < 13; i++) {
String testTitle = "Jog on " + i + "/12/13";
insertTitleAddTask(testTitle, task, taskService);
Date date = new Date(task.getValue(Task.DUE_DATE));
assertEquals(date.getMonth(), i-1);
assertEquals(date.getDate(), 12);
assertEquals(date.getYear(), 113);
}
}
public void testArmyTime() {
TaskService taskService = new TaskService();
Task task = new Task();
Task nothing = new Task();
String testTitle = "Jog on 23:21.";
insertTitleAddTask(testTitle, task, taskService);
Date date = new Date(task.getValue(Task.DUE_DATE));
assertEquals(date.getMinutes(), 21);
assertEquals(date.getHours(), 23);
}
public void test_AM_PM() {
TaskService taskService = new TaskService();
Task task = new Task();
Task nothing = new Task();
String testTitle = "Jog at 8:33 PM.";
insertTitleAddTask(testTitle, task, taskService);
Date date = new Date(task.getValue(Task.DUE_DATE));
assertEquals(date.getMinutes(), 33);
assertEquals(date.getHours(), 20);
}
public void test_at_hour() {
TaskService taskService = new TaskService();
Task task = new Task();
Task nothing = new Task();
String testTitle = "Jog at 8 PM.";
insertTitleAddTask(testTitle, task, taskService);
Date date = new Date(task.getValue(Task.DUE_DATE));
assertEquals(date.getMinutes(), 0);
assertEquals(date.getHours(), 20);
}
public void test_oclock_AM() {
TaskService taskService = new TaskService();
Task task = new Task();
Task nothing = new Task();
String testTitle = "Jog at 8 o'clock AM.";
insertTitleAddTask(testTitle, task, taskService);
Date date = new Date(task.getValue(Task.DUE_DATE));
assertEquals(date.getMinutes(), 0);
assertEquals(date.getHours(), 8);
}
public void test_several_forms_of_eight() {
TaskService taskService = new TaskService();
Task task = new Task();
Task nothing = new Task();
String[] testTitles = {
"Jog 8 AM",
"Jog 8 o'clock AM",
"at 8:00 AM"
};
for (String testTitle: testTitles) {
insertTitleAddTask(testTitle, task, taskService);
Date date = new Date(task.getValue(Task.DUE_DATE));
assertEquals(date.getMinutes(), 0);
assertEquals(date.getHours(), 8);
}
}
public void test_several_forms_of_1230PM() {
TaskService taskService = new TaskService();
Task task = new Task();
Task nothing = 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, taskService);
Date date = new Date(task.getValue(Task.DUE_DATE));
assertEquals(date.getMinutes(), 30);
assertEquals(date.getHours(), 12);
}
}
private void insertTitleAddTask(String title, Task task, TaskService taskService) {
task.setValue(Task.TITLE, title);
taskService.quickAdd(task);
}
// ----------------Days begin----------------//
public void testDays() throws Exception{
Calendar today = Calendar.getInstance();
TaskService taskService = new TaskService();
Task task = new Task();
task.setValue(Task.TITLE, "Jog today");
taskService.quickAdd(task);
Date date = new Date(task.getValue(Task.DUE_DATE));
assertEquals(date.getDay()+1, today.get(Calendar.DAY_OF_WEEK));
//Calendar starts 1-6, date.getDay() starts at 0
task = new Task();
task.setValue(Task.TITLE, "Jog tomorrow");
taskService.quickAdd(task);
date = new Date(task.getValue(Task.DUE_DATE));
assertEquals(date.getDay()+1, today.get(Calendar.DAY_OF_WEEK)+1);
String[] days = {
"sunday",
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday",
};
String[] abrevDays = {
"sun.",
"mon.",
"tue.",
"wed.",
"thu.",
"fri.",
"sat."
};
for (int i = 1; i <= 6; i++){
task = new Task();
task.setValue(Task.TITLE, "Jog "+ days[i]);
taskService.quickAdd(task);
date = new Date(task.getValue(Task.DUE_DATE));
assertEquals(date.getDay(), i);
task = new Task();
task.setValue(Task.TITLE, "Jog "+ abrevDays[i]);
taskService.quickAdd(task);
date = new Date(task.getValue(Task.DUE_DATE));
assertEquals(date.getDay(), i);
}
}
//----------------Days end----------------//
//----------------Priority begin----------------//
/** tests all words using priority 0 */
public void testPriority0() throws Exception {
String[] acceptedStrings = {
"priority 0",
"least priority",
"lowest priority",
"bang 0"
};
TaskService taskService = new TaskService();
Task task = new Task();
for (String acceptedString:acceptedStrings){
task = new Task();
task.setValue(Task.TITLE, "Jog " + acceptedString); //test at end of task. should set importance.
taskService.quickAdd(task);
assertEquals((int)task.getValue(Task.IMPORTANCE), (int)Task.IMPORTANCE_LEAST);
}
for (String acceptedString:acceptedStrings){
task = new Task();
task.setValue(Task.TITLE, acceptedString + " jog"); //test at beginning of task. should not set importance.
taskService.quickAdd(task);
assertNotSame((int)task.getValue(Task.IMPORTANCE),(int)Task.IMPORTANCE_LEAST);
}
}
public void testPriority1() throws Exception {
String[] acceptedStringsAtEnd = {
"priority 1",
"low priority",
"bang",
"bang 1"
};
String[] acceptedStringsAnywhere = {
"!1",
"!"
};
TaskService taskService = new TaskService();
Task task = new Task();
for (String acceptedStringAtEnd:acceptedStringsAtEnd){
task = new Task();
task.setValue(Task.TITLE, "Jog " + acceptedStringAtEnd); //test at end of task. should set importance.
taskService.quickAdd(task);
assertEquals((int)task.getValue(Task.IMPORTANCE), (int)Task.IMPORTANCE_SHOULD_DO);
}
for (String acceptedStringAtEnd:acceptedStringsAtEnd){
task = new Task();
task.setValue(Task.TITLE, acceptedStringAtEnd + " jog"); //test at beginning of task. should not set importance.
taskService.quickAdd(task);
assertEquals((int)task.getValue(Task.IMPORTANCE), (int)Task.IMPORTANCE_SHOULD_DO);
}
for (String acceptedStringAnywhere:acceptedStringsAnywhere){
task = new Task();
task.setValue(Task.TITLE, "Jog " + acceptedStringAnywhere); //test at end of task. should set importance.
taskService.quickAdd(task);
assertEquals((int)task.getValue(Task.IMPORTANCE), (int)Task.IMPORTANCE_SHOULD_DO);
task.setValue(Task.TITLE, acceptedStringAnywhere + " jog"); //test at beginning of task. should set importance.
taskService.quickAdd(task);
assertEquals((int)task.getValue(Task.IMPORTANCE), (int)Task.IMPORTANCE_SHOULD_DO);
}
}
public void testPriority2() throws Exception {
String[] acceptedStringsAtEnd = {
"priority 2",
"high priority",
"bang bang",
"bang 2"
};
String[] acceptedStringsAnywhere = {
"!2",
"!!"
};
TaskService taskService = new TaskService();
Task task = new Task();
for (String acceptedStringAtEnd:acceptedStringsAtEnd){
task = new Task();
task.setValue(Task.TITLE, "Jog " + acceptedStringAtEnd); //test at end of task. should set importance.
taskService.quickAdd(task);
assertEquals((int)task.getValue(Task.IMPORTANCE), (int)Task.IMPORTANCE_MUST_DO);
task = new Task();
task.setValue(Task.TITLE, acceptedStringAtEnd + " jog"); //test at beginning of task. should not set importance.
taskService.quickAdd(task);
assertNotSame((int)task.getValue(Task.IMPORTANCE), (int)Task.IMPORTANCE_MUST_DO);
}
for (String acceptedStringAnywhere:acceptedStringsAnywhere){
task = new Task();
task.setValue(Task.TITLE, "Jog " + acceptedStringAnywhere); //test at end of task. should set importance.
taskService.quickAdd(task);
assertEquals((int)task.getValue(Task.IMPORTANCE), (int)Task.IMPORTANCE_MUST_DO);
task.setValue(Task.TITLE, acceptedStringAnywhere + " jog"); //test at beginning of task. should set importance.
taskService.quickAdd(task);
assertEquals((int)task.getValue(Task.IMPORTANCE), (int)Task.IMPORTANCE_MUST_DO);
}
}
public void testPriority3() throws Exception {
String[] acceptedStringsAtEnd = {
"priority 3",
"highest priority",
"bang bang bang",
"bang 3",
"bang bang bang bang bang bang bang"
};
String[] acceptedStringsAnywhere = {
"!3",
"!!!",
"!6",
"!!!!!!!!!!!!!"
};
TaskService taskService = new TaskService();
Task task = new Task();
for (String acceptedStringAtEnd:acceptedStringsAtEnd){
task = new Task();
task.setValue(Task.TITLE, "Jog " + acceptedStringAtEnd); //test at end of task. should set importance.
taskService.quickAdd(task);
assertEquals((int)task.getValue(Task.IMPORTANCE), (int)Task.IMPORTANCE_DO_OR_DIE);
task = new Task();
task.setValue(Task.TITLE, acceptedStringAtEnd + " jog"); //test at beginning of task. should not set importance.
taskService.quickAdd(task);
assertNotSame((int)task.getValue(Task.IMPORTANCE), (int)Task.IMPORTANCE_DO_OR_DIE);
}
for (String acceptedStringAnywhere:acceptedStringsAnywhere){
task = new Task();
task.setValue(Task.TITLE, "Jog " + acceptedStringAnywhere); //test at end of task. should set importance.
taskService.quickAdd(task);
assertEquals((int)task.getValue(Task.IMPORTANCE), (int)Task.IMPORTANCE_DO_OR_DIE);
task.setValue(Task.TITLE, acceptedStringAnywhere + " jog"); //test at beginning of task. should set importance.
taskService.quickAdd(task);
assertEquals((int)task.getValue(Task.IMPORTANCE), (int)Task.IMPORTANCE_DO_OR_DIE);
}
}
//----------------Priority end----------------//
//----------------Repeats begin----------------//
/** test daily repeat from due date, but with no due date set */
public void testDailyWithNoDueDate() throws Exception {
TaskService taskService = new TaskService();
Task task = new Task();
task.setValue(Task.TITLE, "Jog daily");
taskService.quickAdd(task);
RRule rrule = new RRule();
rrule.setFreq(Frequency.DAILY);
rrule.setInterval(1);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate());
task.setValue(Task.TITLE, "Jog every day");
taskService.quickAdd(task);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate());
for (int i = 1; i <= 12; i++){
task.setValue(Task.TITLE, "Jog every " + i + " days.");
rrule.setInterval(i);
taskService.quickAdd(task);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate());
task = new Task();
}
}
/** test weekly repeat from due date, with no due date & time set */
public void testWeeklyWithNoDueDate() throws Exception {
TaskService taskService = new TaskService();
Task task = new Task();
task.setValue(Task.TITLE, "Jog weekly");
taskService.quickAdd(task);
RRule rrule = new RRule();
rrule.setFreq(Frequency.WEEKLY);
rrule.setInterval(1);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate());
task.setValue(Task.TITLE, "Jog every week");
taskService.quickAdd(task);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate());
for (int i = 1; i <= 12; i++){
task.setValue(Task.TITLE, "Jog every " + i + " weeks");
rrule.setInterval(i);
taskService.quickAdd(task);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate());
task = new Task();
}
}
/** test hourly repeat from due date, with no due date but no time */
public void testMonthlyFromNoDueDate() throws Exception {
TaskService taskService = new TaskService();
Task task = new Task();
task.setValue(Task.TITLE, "Jog monthly");
taskService.quickAdd(task);
RRule rrule = new RRule();
rrule.setFreq(Frequency.MONTHLY);
rrule.setInterval(1);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate());
task.setValue(Task.TITLE, "Jog every month");
taskService.quickAdd(task);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate());
for (int i = 1; i <= 12; i++){
task.setValue(Task.TITLE, "Jog every " + i + " months");
rrule.setInterval(i);
taskService.quickAdd(task);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertFalse(task.hasDueTime());
assertFalse(task.hasDueDate());
task = new Task();
}
}
public void testDailyFromDueDate() throws Exception { TaskService taskService = new TaskService();
Task task = new Task();
task.setValue(Task.TITLE, "Jog daily starting from today");
taskService.quickAdd(task);
RRule rrule = new RRule();
rrule.setFreq(Frequency.DAILY);
rrule.setInterval(1);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertTrue(task.hasDueDate());
task.setValue(Task.TITLE, "Jog every day starting from today");
taskService.quickAdd(task);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertTrue(task.hasDueDate());
for (int i = 1; i <= 12; i++){
task.setValue(Task.TITLE, "Jog every " + i + " days starting from today");
rrule.setInterval(i);
taskService.quickAdd(task);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertTrue(task.hasDueDate());
task = new Task();
}
}
public void testWeeklyFromDueDate() throws Exception { TaskService taskService = new TaskService();
Task task = new Task();
task.setValue(Task.TITLE, "Jog weekly starting from today");
taskService.quickAdd(task);
RRule rrule = new RRule();
rrule.setFreq(Frequency.WEEKLY);
rrule.setInterval(1);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertTrue(task.hasDueDate());
task.setValue(Task.TITLE, "Jog every week starting from today");
taskService.quickAdd(task);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertTrue(task.hasDueDate());
for (int i = 1; i <= 12; i++){
task.setValue(Task.TITLE, "Jog every " + i + " weeks starting from today");
rrule.setInterval(i);
taskService.quickAdd(task);
assertEquals(task.getValue(Task.RECURRENCE), rrule.toIcal());
assertTrue(task.hasDueDate());
task = new Task();
}
}
//----------------Repeats end----------------//
}
Loading…
Cancel
Save