package org.liberty.android.fantastischmemo.test.scheduler;
import android.support.test.filters.SmallTest;
import org.junit.Test;
import org.liberty.android.fantastischmemo.entity.LearningData;
import org.liberty.android.fantastischmemo.entity.SchedulingAlgorithmParameters;
import org.liberty.android.fantastischmemo.scheduler.DefaultScheduler;
import org.liberty.android.fantastischmemo.test.AbstractPreferencesTest;
import java.util.Date;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class DefaultSchedulerTest extends AbstractPreferencesTest {
private DefaultScheduler defaultScheduler;
private LearningData newCardLearningData;
private LearningData failedCardLearningData;
private LearningData learnedCardLearningData;
private LearningData forReviewCardLearningData;
@Override
public void setUp() throws Exception {
super.setUp();
defaultScheduler = new DefaultScheduler(new SchedulingAlgorithmParameters(getContext()));
newCardLearningData = new LearningData();
failedCardLearningData = new LearningData();
failedCardLearningData.setAcqReps(1);
failedCardLearningData.setNextLearnDate(new Date(new Date().getTime() - 1000000));
failedCardLearningData.setGrade(0);
learnedCardLearningData = new LearningData();
learnedCardLearningData.setAcqReps(1);
learnedCardLearningData.setNextLearnDate(new Date(new Date().getTime() + 1000000));
learnedCardLearningData.setGrade(5);
forReviewCardLearningData = new LearningData();
forReviewCardLearningData.setAcqReps(2);
forReviewCardLearningData.setNextLearnDate(new Date(new Date().getTime() - 1000000));
forReviewCardLearningData.setGrade(5);
}
@SmallTest
@Test
public void testIsNew() {
assertTrue(defaultScheduler.isCardNew(newCardLearningData));
assertFalse(defaultScheduler.isCardNew(failedCardLearningData));
assertFalse(defaultScheduler.isCardNew(learnedCardLearningData));
assertFalse(defaultScheduler.isCardNew(forReviewCardLearningData));
}
@SmallTest
@Test
public void testIsCardLearned() {
assertFalse(defaultScheduler.isCardLearned(newCardLearningData));
assertFalse(defaultScheduler.isCardLearned(failedCardLearningData));
assertTrue(defaultScheduler.isCardLearned(learnedCardLearningData));
assertTrue(defaultScheduler.isCardLearned(forReviewCardLearningData));
}
@SmallTest
@Test
public void testIsCardForReview() {
assertFalse(defaultScheduler.isCardForReview(newCardLearningData));
assertTrue(defaultScheduler.isCardForReview(failedCardLearningData));
assertFalse(defaultScheduler.isCardForReview(learnedCardLearningData));
assertTrue(defaultScheduler.isCardForReview(forReviewCardLearningData));
}
@SmallTest
@Test
public void testScheduleNewCardSuccess() {
LearningData ld = new LearningData();
LearningData newLd = defaultScheduler.schedule(ld, 3, false);
assertFalse(defaultScheduler.isCardForReview(newLd));
assertFalse(defaultScheduler.isCardNew(newLd));
assertTrue(defaultScheduler.isCardLearned(newLd));
assertEquals(3, (int) newLd.getGrade());
}
@SmallTest
@Test
public void testScheduleNewCardFailure() {
LearningData newLd = defaultScheduler.schedule(newCardLearningData, 0, false);
assertTrue(defaultScheduler.isCardForReview(newLd));
assertFalse(defaultScheduler.isCardNew(newLd));
assertFalse(defaultScheduler.isCardLearned(newLd));
assertEquals(0, (int) newLd.getGrade());
}
@SmallTest
@Test
public void testScheduleFailedCardSuccess() {
LearningData newLd = defaultScheduler.schedule(failedCardLearningData, 5, false);
assertFalse(defaultScheduler.isCardForReview(newLd));
assertFalse(defaultScheduler.isCardNew(newLd));
assertTrue(defaultScheduler.isCardLearned(newLd));
}
@SmallTest
@Test
public void testScheduleFailedCardFailure() {
LearningData newLd = defaultScheduler.schedule(failedCardLearningData, 0, false);
assertTrue(defaultScheduler.isCardForReview(newLd));
assertFalse(defaultScheduler.isCardNew(newLd));
assertFalse(defaultScheduler.isCardLearned(newLd));
}
@SmallTest
@Test
public void testScheduleLearnedCardSuccess() {
LearningData newLd = defaultScheduler.schedule(learnedCardLearningData, 5, false);
assertFalse(defaultScheduler.isCardForReview(newLd));
assertFalse(defaultScheduler.isCardNew(newLd));
assertTrue(defaultScheduler.isCardLearned(newLd));
}
@SmallTest
@Test
public void testScheduleLearnedCardFailure() {
LearningData newLd = defaultScheduler.schedule(learnedCardLearningData, 0, false);
assertTrue(defaultScheduler.isCardForReview(newLd));
assertFalse(defaultScheduler.isCardNew(newLd));
assertFalse(defaultScheduler.isCardLearned(newLd));
}
@SmallTest
@Test
public void testScheduleForReviewardSuccess() {
LearningData newLd = defaultScheduler.schedule(forReviewCardLearningData, 5, false);
assertFalse(defaultScheduler.isCardForReview(newLd));
assertFalse(defaultScheduler.isCardNew(newLd));
assertTrue(defaultScheduler.isCardLearned(newLd));
}
@SmallTest
@Test
public void testScheduleForScheduleCardFailure() {
LearningData newLd = defaultScheduler.schedule(forReviewCardLearningData, 0, false);
assertTrue(defaultScheduler.isCardForReview(newLd));
assertFalse(defaultScheduler.isCardNew(newLd));
assertFalse(defaultScheduler.isCardLearned(newLd));
}
}