package jmemorize.core.test;
import java.util.Calendar;
import java.util.Date;
import jmemorize.core.learn.LearnSettings;
import jmemorize.core.learn.LearnSettings.SchedulePreset;
import junit.framework.TestCase;
public class LearnSettingsTest extends TestCase
{
private LearnSettings m_settings;
private Calendar m_testCalendar;
private Date m_testDate;
@Override
protected void setUp() throws Exception
{
m_settings = new LearnSettings();
m_testCalendar = Calendar.getInstance();
m_testCalendar.set(2007, 5, 4, 13, 20);
m_testDate = m_testCalendar.getTime();
}
public void testGetExpirationForConst() throws Exception
{
m_settings.setSchedulePreset(SchedulePreset.CONST);
Date expirationDate = m_settings.getExpirationDate(m_testDate, 0);
assertCalendar(2007, 5, 5, 13, 20, expirationDate);
expirationDate = m_settings.getExpirationDate(m_testDate, 4);
assertCalendar(2007, 5, 5, 13, 20, expirationDate);
}
public void testGetExpirationForLinear() throws Exception
{
m_settings.setSchedulePreset(SchedulePreset.LINEAR);
Date expirationDate = m_settings.getExpirationDate(m_testDate, 0);
assertCalendar(2007, 5, 5, 13, 20, expirationDate);
expirationDate = m_settings.getExpirationDate(m_testDate, 2);
assertCalendar(2007, 5, 7, 13, 20, expirationDate);
}
public void testGetExpirationForCustomDueTimeOneDayDelay()
{
m_settings.setFixedExpirationTime(20, 00);
m_settings.setFixedExpirationTimeEnabled(true);
m_settings.setSchedulePreset(SchedulePreset.CONST); // 1 day delay
m_settings.getExpirationDate(m_testDate, 2);
Date expirationDate = m_settings.getExpirationDate(m_testDate, 0);
assertCalendar(2007, 5, 5, 20, 0, expirationDate);
}
public void testGetExpirationForCustomDueTimeZeroDayDelay()
{
m_settings.setFixedExpirationTime(20, 00);
m_settings.setFixedExpirationTimeEnabled(true); // o day delay
m_settings.setCustomSchedule(new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0});
m_settings.getExpirationDate(m_testDate, 0);
Date expirationDate = m_settings.getExpirationDate(m_testDate, 0);
assertCalendar(2007, 5, 4, 20, 0, expirationDate);
}
private void assertCalendar(int year, int month, int day, int hour,
int minute, Date date)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
assertEquals(year, cal.get(Calendar.YEAR));
assertEquals(month, cal.get(Calendar.MONTH));
assertEquals(day, cal.get(Calendar.DAY_OF_MONTH));
assertEquals(hour, cal.get(Calendar.HOUR_OF_DAY));
assertEquals(minute, cal.get(Calendar.MINUTE));
}
}