@@ -56,13 +56,13 @@ public void testIsReviewPending_5MinutesAfter_1stReviewNotMastered() {
5656 wordLearningEventGson .setWordId (1L );
5757 wordLearningEventGson .setTime (calendar5MinutesAgo );
5858
59- List <WordAssessmentEventGson > wordAssessmentEventGsonList = new ArrayList <>();
60-
6159 Calendar calendarNow = Calendar .getInstance ();
6260 WordAssessmentEventGson wordAssessmentEventGson = new WordAssessmentEventGson ();
6361 wordAssessmentEventGson .setWordId (1L );
6462 wordAssessmentEventGson .setTime (calendarNow );
6563 wordAssessmentEventGson .setMasteryScore (0.00f );
64+
65+ List <WordAssessmentEventGson > wordAssessmentEventGsonList = new ArrayList <>();
6666 wordAssessmentEventGsonList .add (wordAssessmentEventGson );
6767
6868 assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsonList ), is (true ));
@@ -79,13 +79,13 @@ public void testIsReviewPending_5MinutesAfter_1stReviewMastered() {
7979 wordLearningEventGson .setWordId (1L );
8080 wordLearningEventGson .setTime (calendar5MinutesAgo );
8181
82- List <WordAssessmentEventGson > wordAssessmentEventGsonList = new ArrayList <>();
83-
8482 Calendar calendarNow = Calendar .getInstance ();
8583 WordAssessmentEventGson wordAssessmentEventGson = new WordAssessmentEventGson ();
8684 wordAssessmentEventGson .setWordId (1L );
8785 wordAssessmentEventGson .setTime (calendarNow );
8886 wordAssessmentEventGson .setMasteryScore (1.00f );
87+
88+ List <WordAssessmentEventGson > wordAssessmentEventGsonList = new ArrayList <>();
8989 wordAssessmentEventGsonList .add (wordAssessmentEventGson );
9090
9191 assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsonList ), is (false ));
@@ -102,13 +102,13 @@ public void testIsReviewPending_17MinutesAfter_MasteryOnFirstTry() {
102102 wordLearningEventGson .setWordId (1L );
103103 wordLearningEventGson .setTime (calendar17MinutesAgo );
104104
105- List <WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
106-
107105 Calendar calendarNow = Calendar .getInstance ();
108106 WordAssessmentEventGson wordAssessmentEventGson = new WordAssessmentEventGson ();
109107 wordAssessmentEventGson .setWordId (1L );
110108 wordAssessmentEventGson .setTime (calendarNow );
111109 wordAssessmentEventGson .setMasteryScore (1.00f );
110+
111+ List <WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
112112 wordAssessmentEventGsons .add (wordAssessmentEventGson );
113113
114114 assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsons ), is (false ));
@@ -119,75 +119,73 @@ public void testIsReviewPending_17MinutesAfter_MasteryOnFirstTry() {
119119 */
120120 @ Test
121121 public void testIsReviewPending_17MinutesAfter_MasteryOnSecondTry () {
122- Calendar calendar17MinutesAgo = Calendar .getInstance ();
123- calendar17MinutesAgo .add (Calendar .MINUTE , -17 );
122+ Calendar calendar22MinutesAgo = Calendar .getInstance ();
123+ calendar22MinutesAgo .add (Calendar .MINUTE , -22 );
124124 WordLearningEventGson wordLearningEventGson = new WordLearningEventGson ();
125125 wordLearningEventGson .setWordId (1L );
126- wordLearningEventGson .setTime (calendar17MinutesAgo );
127-
128- List <WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
126+ wordLearningEventGson .setTime (calendar22MinutesAgo );
129127
130- Calendar calendar1MinuteAgo = Calendar .getInstance ();
131- calendar1MinuteAgo .add (Calendar .MINUTE , -1 );
128+ Calendar calendar18MinutesAgo = Calendar .getInstance ();
129+ calendar18MinutesAgo .add (Calendar .MINUTE , -18 );
132130 WordAssessmentEventGson wordAssessmentEventGsonFirst = new WordAssessmentEventGson ();
133131 wordAssessmentEventGsonFirst .setWordId (1L );
134- wordAssessmentEventGsonFirst .setTime (calendar1MinuteAgo );
132+ wordAssessmentEventGsonFirst .setTime (calendar18MinutesAgo );
135133 wordAssessmentEventGsonFirst .setMasteryScore (0.00f );
136- wordAssessmentEventGsons .add (wordAssessmentEventGsonFirst );
137-
138- assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsons ), is (true ));
139134
140- Calendar calendarNow = Calendar .getInstance ();
135+ Calendar calendar17MinutesAgo = Calendar .getInstance ();
136+ calendar17MinutesAgo .add (Calendar .MINUTE , -17 );
141137 WordAssessmentEventGson wordAssessmentEventGsonSecond = new WordAssessmentEventGson ();
142138 wordAssessmentEventGsonSecond .setWordId (1L );
143- wordAssessmentEventGsonSecond .setTime (calendarNow );
139+ wordAssessmentEventGsonSecond .setTime (calendar17MinutesAgo );
144140 wordAssessmentEventGsonSecond .setMasteryScore (1.00f );
141+
142+ // Store assessment events in _descending_ order
143+ List <WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
145144 wordAssessmentEventGsons .add (wordAssessmentEventGsonSecond );
145+ wordAssessmentEventGsons .add (wordAssessmentEventGsonFirst );
146146
147- assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsons ), is (false ));
147+ assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsons ), is (true ));
148148 }
149149
150150 /**
151151 * Test a time _after_ the time of the 2nd review (16 minutes).
152152 */
153153 @ Test
154154 public void testIsReviewPending_17MinutesAfter_MasteryOnThirdTry () {
155- Calendar calendar17MinutesAgo = Calendar .getInstance ();
156- calendar17MinutesAgo .add (Calendar .MINUTE , -17 );
155+ Calendar calendar23MinutesAgo = Calendar .getInstance ();
156+ calendar23MinutesAgo .add (Calendar .MINUTE , -23 );
157157 WordLearningEventGson wordLearningEventGson = new WordLearningEventGson ();
158158 wordLearningEventGson .setWordId (1L );
159- wordLearningEventGson .setTime (calendar17MinutesAgo );
160-
161- List <WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
159+ wordLearningEventGson .setTime (calendar23MinutesAgo );
162160
163- Calendar calendar2MinutesAgo = Calendar .getInstance ();
164- calendar2MinutesAgo .add (Calendar .MINUTE , -2 );
161+ Calendar calendar19MinutesAgo = Calendar .getInstance ();
162+ calendar19MinutesAgo .add (Calendar .MINUTE , -19 );
165163 WordAssessmentEventGson wordAssessmentEventGsonFirst = new WordAssessmentEventGson ();
166164 wordAssessmentEventGsonFirst .setWordId (1L );
167- wordAssessmentEventGsonFirst .setTime (calendar2MinutesAgo );
165+ wordAssessmentEventGsonFirst .setTime (calendar19MinutesAgo );
168166 wordAssessmentEventGsonFirst .setMasteryScore (0.00f );
169- wordAssessmentEventGsons .add (wordAssessmentEventGsonFirst );
170167
171- assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsons ), is (true ));
172-
173- Calendar calendar1MinuteAgo = Calendar .getInstance ();
174- calendar1MinuteAgo .add (Calendar .MINUTE , -1 );
168+ Calendar calendar18MinutesAgo = Calendar .getInstance ();
169+ calendar18MinutesAgo .add (Calendar .MINUTE , -18 );
175170 WordAssessmentEventGson wordAssessmentEventGsonSecond = new WordAssessmentEventGson ();
176171 wordAssessmentEventGsonSecond .setWordId (1L );
177- wordAssessmentEventGsonSecond .setTime (calendar1MinuteAgo );
172+ wordAssessmentEventGsonSecond .setTime (calendar18MinutesAgo );
178173 wordAssessmentEventGsonSecond .setMasteryScore (0.00f );
179- wordAssessmentEventGsons .add (wordAssessmentEventGsonSecond );
180-
181- assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsons ), is (true ));
182174
183- Calendar calendarNow = Calendar .getInstance ();
175+ Calendar calendar17MinutesAgo = Calendar .getInstance ();
176+ calendar17MinutesAgo .add (Calendar .MINUTE , -17 );
184177 WordAssessmentEventGson wordAssessmentEventGsonThird = new WordAssessmentEventGson ();
185178 wordAssessmentEventGsonThird .setWordId (1L );
186- wordAssessmentEventGsonThird .setTime (calendarNow );
179+ wordAssessmentEventGsonThird .setTime (calendar17MinutesAgo );
187180 wordAssessmentEventGsonThird .setMasteryScore (1.00f );
181+
182+ // Store assessment events in _descending_ order
183+ List <WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
188184 wordAssessmentEventGsons .add (wordAssessmentEventGsonThird );
185+ wordAssessmentEventGsons .add (wordAssessmentEventGsonSecond );
186+ wordAssessmentEventGsons .add (wordAssessmentEventGsonFirst );
189187
190- assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsons ), is (false ));
188+ assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsons ), is (true ));
191189 }
192190
193191 /**
@@ -201,14 +199,14 @@ public void testIsReviewPending_false_15MinutesAfterFirstMastery() {
201199 wordLearningEventGson .setWordId (1L );
202200 wordLearningEventGson .setTime (calendar60MinutesAgo );
203201
204- List <WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
205-
206202 Calendar calendar15MinutesAgo = Calendar .getInstance ();
207203 calendar15MinutesAgo .add (Calendar .MINUTE , -15 );
208204 WordAssessmentEventGson wordAssessmentEventGsonFirst = new WordAssessmentEventGson ();
209205 wordAssessmentEventGsonFirst .setWordId (1L );
210206 wordAssessmentEventGsonFirst .setTime (calendar15MinutesAgo );
211207 wordAssessmentEventGsonFirst .setMasteryScore (1.00f );
208+
209+ List <WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
212210 wordAssessmentEventGsons .add (wordAssessmentEventGsonFirst );
213211
214212 assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsons ), is (false ));
@@ -225,14 +223,14 @@ public void testIsReviewPending_true_17MinutesAfterFirstMastery() {
225223 wordLearningEventGson .setWordId (1L );
226224 wordLearningEventGson .setTime (calendar60MinutesAgo );
227225
228- List <WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
229-
230226 Calendar calendar17MinutesAgo = Calendar .getInstance ();
231227 calendar17MinutesAgo .add (Calendar .MINUTE , -17 );
232228 WordAssessmentEventGson wordAssessmentEventGsonFirst = new WordAssessmentEventGson ();
233229 wordAssessmentEventGsonFirst .setWordId (1L );
234230 wordAssessmentEventGsonFirst .setTime (calendar17MinutesAgo );
235231 wordAssessmentEventGsonFirst .setMasteryScore (1.00f );
232+
233+ List <WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
236234 wordAssessmentEventGsons .add (wordAssessmentEventGsonFirst );
237235
238236 assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsons ), is (true ));
@@ -249,24 +247,30 @@ public void testIsReviewPending_false_63MinutesAfterSecondMastery() {
249247 wordLearningEventGson .setWordId (1L );
250248 wordLearningEventGson .setTime (calendar180MinutesAgo );
251249
252- List < WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
253-
250+ // 1st review (>=4 minutes after learning event)
251+ // 180 minutes ago - 120 minutes ago = 60 minutes passed
254252 Calendar calendar120MinutesAgo = Calendar .getInstance ();
255253 calendar120MinutesAgo .add (Calendar .MINUTE , -120 );
256254 WordAssessmentEventGson wordAssessmentEventGsonFirst = new WordAssessmentEventGson ();
257255 wordAssessmentEventGsonFirst .setWordId (1L );
258256 wordAssessmentEventGsonFirst .setTime (calendar120MinutesAgo );
259257 wordAssessmentEventGsonFirst .setMasteryScore (1.00f );
260- wordAssessmentEventGsons .add (wordAssessmentEventGsonFirst );
261258
259+ // 2nd review (>=16 minutes after the 1st mastery)
260+ // 120 minutes ago - 63 minutes ago = 57
262261 Calendar calendar63MinutesAgo = Calendar .getInstance ();
263262 calendar63MinutesAgo .add (Calendar .MINUTE , -63 );
264263 WordAssessmentEventGson wordAssessmentEventGsonSecond = new WordAssessmentEventGson ();
265264 wordAssessmentEventGsonSecond .setWordId (1L );
266265 wordAssessmentEventGsonSecond .setTime (calendar63MinutesAgo );
267266 wordAssessmentEventGsonSecond .setMasteryScore (1.00f );
267+
268+ // Store assessment events in _descending_ order
269+ List <WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
268270 wordAssessmentEventGsons .add (wordAssessmentEventGsonSecond );
271+ wordAssessmentEventGsons .add (wordAssessmentEventGsonFirst );
269272
273+ // 3rd review (>=64 minutes after the 2nd mastery)
270274 assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsons ), is (false ));
271275 }
272276
@@ -281,23 +285,24 @@ public void testIsReviewPending_true_65MinutesAfterSecondMastery() {
281285 wordLearningEventGson .setWordId (1L );
282286 wordLearningEventGson .setTime (calendar180MinutesAgo );
283287
284- List <WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
285-
286288 Calendar calendar120MinutesAgo = Calendar .getInstance ();
287289 calendar120MinutesAgo .add (Calendar .MINUTE , -120 );
288290 WordAssessmentEventGson wordAssessmentEventGsonFirst = new WordAssessmentEventGson ();
289291 wordAssessmentEventGsonFirst .setWordId (1L );
290292 wordAssessmentEventGsonFirst .setTime (calendar120MinutesAgo );
291293 wordAssessmentEventGsonFirst .setMasteryScore (1.00f );
292- wordAssessmentEventGsons .add (wordAssessmentEventGsonFirst );
293294
294295 Calendar calendar65MinutesAgo = Calendar .getInstance ();
295296 calendar65MinutesAgo .add (Calendar .MINUTE , -65 );
296297 WordAssessmentEventGson wordAssessmentEventGsonSecond = new WordAssessmentEventGson ();
297298 wordAssessmentEventGsonSecond .setWordId (1L );
298299 wordAssessmentEventGsonSecond .setTime (calendar65MinutesAgo );
299300 wordAssessmentEventGsonSecond .setMasteryScore (1.00f );
301+
302+ // Store assessment events in _descending_ order
303+ List <WordAssessmentEventGson > wordAssessmentEventGsons = new ArrayList <>();
300304 wordAssessmentEventGsons .add (wordAssessmentEventGsonSecond );
305+ wordAssessmentEventGsons .add (wordAssessmentEventGsonFirst );
301306
302307 assertThat (SpacedRepetitionHelper .isReviewPending (wordLearningEventGson , wordAssessmentEventGsons ), is (true ));
303308 }
0 commit comments