Przeglądaj źródła

java: meetup tests and example implementation

A straight port of the Ruby tests. The example implementation
uses Joda Time which is generally considered a saner date/time
library than what is built in to Java.
Emil Sit 12 lat temu
rodzic
commit
19af4eb922

+ 2
- 0
assignments/java/meetup/build.gradle Wyświetl plik

@@ -7,5 +7,7 @@ repositories {
7 7
 }
8 8
 
9 9
 dependencies {
10
+  compile "joda-time:joda-time:2.3+"
10 11
   testCompile "junit:junit:4.10"
12
+  testCompile "org.easytesting:fest-assert-core:2.0M10"
11 13
 }

+ 51
- 0
assignments/java/meetup/example.java Wyświetl plik

@@ -0,0 +1,51 @@
1
+import org.joda.time.DateTime;
2
+
3
+public class Meetup {
4
+    private final DateTime startOfMonth;
5
+
6
+    public Meetup(int monthOfYear, int year) {
7
+        startOfMonth = new DateTime(year, monthOfYear, 1, 0, 0);
8
+    }
9
+
10
+    DateTime day(int dayOfWeek, MeetupSchedule schedule) {
11
+        DateTime current = cycleToNext(dayOfWeek, startOfMonth);
12
+        switch (schedule) {
13
+            case FIRST:
14
+                break;
15
+            case SECOND:
16
+                current = current.plusWeeks(1);
17
+                break;
18
+            case THIRD:
19
+                current = current.plusWeeks(2);
20
+                break;
21
+            case FOURTH:
22
+                current = current.plusWeeks(3);
23
+                break;
24
+            case TEENTH:
25
+                while (current.getDayOfMonth() < 13) {
26
+                    current = current.plusWeeks(1);
27
+                }
28
+                break;
29
+            case LAST:
30
+                current = cycleToPrev(dayOfWeek, startOfMonth.plusMonths(1).minusDays(1));
31
+                break;
32
+            default:
33
+                return null;
34
+        }
35
+        return current;
36
+    }
37
+
38
+    private DateTime cycleToPrev(int dayOfWeek, DateTime current) {
39
+        while (current.getDayOfWeek() != dayOfWeek) {
40
+            current = current.minusDays(1);
41
+        }
42
+        return current;
43
+    }
44
+
45
+    private DateTime cycleToNext(int dayOfWeek, DateTime current) {
46
+        while (current.getDayOfWeek() != dayOfWeek) {
47
+            current = current.plusDays(1);
48
+        }
49
+        return current;
50
+    }
51
+}

+ 2
- 2
assignments/java/meetup/gradle/wrapper/gradle-wrapper.properties Wyświetl plik

@@ -1,6 +1,6 @@
1
-#Mon Dec 02 00:17:20 EST 2013
1
+#Tue Feb 04 23:44:51 EST 2014
2 2
 distributionBase=GRADLE_USER_HOME
3 3
 distributionPath=wrapper/dists
4 4
 zipStoreBase=GRADLE_USER_HOME
5 5
 zipStorePath=wrapper/dists
6
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
6
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-all.zip

+ 8
- 0
assignments/java/meetup/src/main/java/MeetupSchedule.java Wyświetl plik

@@ -0,0 +1,8 @@
1
+public enum MeetupSchedule {
2
+    FIRST,
3
+    SECOND,
4
+    THIRD,
5
+    FOURTH,
6
+    LAST,
7
+    TEENTH
8
+}

+ 648
- 0
assignments/java/meetup/src/test/java/MeetupTest.java Wyświetl plik

@@ -0,0 +1,648 @@
1
+import org.joda.time.DateTime;
2
+import org.joda.time.DateTimeConstants;
3
+import org.junit.Test;
4
+
5
+import static org.fest.assertions.api.Assertions.assertThat;
6
+import static org.joda.time.DateTimeConstants.*;
7
+
8
+/*
9
+ * We use Joda Time here to encourage the use of a saner date manipulation library.
10
+ */
11
+public class MeetupTest {
12
+    @Test
13
+    public void test_monteenth_of_may_2013() {
14
+        DateTime expected = new DateTime(2013, 5, 13, 0, 0);
15
+        Meetup meetup = new Meetup(5, 2013);
16
+        assertThat(meetup.day(MONDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
17
+    }
18
+
19
+    @Test
20
+    public void test_monteenth_of_august_2013() {
21
+        DateTime expected = new DateTime(2013, 8, 19, 0, 0);
22
+        Meetup meetup = new Meetup(8, 2013);
23
+        assertThat(meetup.day(MONDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
24
+    }
25
+
26
+    @Test
27
+    public void test_monteenth_of_september_2013() {
28
+        DateTime expected = new DateTime(2013, 9, 16, 0, 0);
29
+        Meetup meetup = new Meetup(9, 2013);
30
+        assertThat(meetup.day(MONDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
31
+    }
32
+
33
+    @Test
34
+    public void test_tuesteenth_of_march_2013() {
35
+        DateTime expected = new DateTime(2013, 3, 19, 0, 0);
36
+        Meetup meetup = new Meetup(3, 2013);
37
+        assertThat(meetup.day(TUESDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
38
+    }
39
+
40
+    @Test
41
+    public void test_tuesteenth_of_april_2013() {
42
+        DateTime expected = new DateTime(2013, 4, 16, 0, 0);
43
+        Meetup meetup = new Meetup(4, 2013);
44
+        assertThat(meetup.day(TUESDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
45
+    }
46
+
47
+    @Test
48
+    public void test_tuesteenth_of_august_2013() {
49
+        DateTime expected = new DateTime(2013, 8, 13, 0, 0);
50
+        Meetup meetup = new Meetup(8, 2013);
51
+        assertThat(meetup.day(TUESDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
52
+    }
53
+
54
+    @Test
55
+    public void test_wednesteenth_of_january_2013() {
56
+        DateTime expected = new DateTime(2013, 1, 16, 0, 0);
57
+        Meetup meetup = new Meetup(1, 2013);
58
+        assertThat(meetup.day(WEDNESDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
59
+    }
60
+
61
+    @Test
62
+    public void test_wednesteenth_of_february_2013() {
63
+        DateTime expected = new DateTime(2013, 2, 13, 0, 0);
64
+        Meetup meetup = new Meetup(2, 2013);
65
+        assertThat(meetup.day(WEDNESDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
66
+    }
67
+
68
+    @Test
69
+    public void test_wednesteenth_of_june_2013() {
70
+        DateTime expected = new DateTime(2013, 6, 19, 0, 0);
71
+        Meetup meetup = new Meetup(6, 2013);
72
+        assertThat(meetup.day(WEDNESDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
73
+    }
74
+
75
+    @Test
76
+    public void test_thursteenth_of_may_2013() {
77
+        DateTime expected = new DateTime(2013, 5, 16, 0, 0);
78
+        Meetup meetup = new Meetup(5, 2013);
79
+        assertThat(meetup.day(THURSDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
80
+    }
81
+
82
+    @Test
83
+    public void test_thursteenth_of_june_2013() {
84
+        DateTime expected = new DateTime(2013, 6, 13, 0, 0);
85
+        Meetup meetup = new Meetup(6, 2013);
86
+        assertThat(meetup.day(THURSDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
87
+    }
88
+
89
+    @Test
90
+    public void test_thursteenth_of_september_2013() {
91
+        DateTime expected = new DateTime(2013, 9, 19, 0, 0);
92
+        Meetup meetup = new Meetup(9, 2013);
93
+        assertThat(meetup.day(THURSDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
94
+    }
95
+
96
+    @Test
97
+    public void test_friteenth_of_april_2013() {
98
+        DateTime expected = new DateTime(2013, 4, 19, 0, 0);
99
+        Meetup meetup = new Meetup(4, 2013);
100
+        assertThat(meetup.day(FRIDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
101
+    }
102
+
103
+    @Test
104
+    public void test_friteenth_of_august_2013() {
105
+        DateTime expected = new DateTime(2013, 8, 16, 0, 0);
106
+        Meetup meetup = new Meetup(8, 2013);
107
+        assertThat(meetup.day(FRIDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
108
+    }
109
+
110
+    @Test
111
+    public void test_friteenth_of_september_2013() {
112
+        DateTime expected = new DateTime(2013, 9, 13, 0, 0);
113
+        Meetup meetup = new Meetup(9, 2013);
114
+        assertThat(meetup.day(FRIDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
115
+    }
116
+
117
+    @Test
118
+    public void test_saturteenth_of_february_2013() {
119
+        DateTime expected = new DateTime(2013, 2, 16, 0, 0);
120
+        Meetup meetup = new Meetup(2, 2013);
121
+        assertThat(meetup.day(SATURDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
122
+    }
123
+
124
+    @Test
125
+    public void test_saturteenth_of_april_2013() {
126
+        DateTime expected = new DateTime(2013, 4, 13, 0, 0);
127
+        Meetup meetup = new Meetup(4, 2013);
128
+        assertThat(meetup.day(SATURDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
129
+    }
130
+
131
+    @Test
132
+    public void test_saturteenth_of_october_2013() {
133
+        DateTime expected = new DateTime(2013, 10, 19, 0, 0);
134
+        Meetup meetup = new Meetup(10, 2013);
135
+        assertThat(meetup.day(SATURDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
136
+    }
137
+
138
+    @Test
139
+    public void test_sunteenth_of_map_2013() {
140
+        DateTime expected = new DateTime(2013, 5, 19, 0, 0);
141
+        Meetup meetup = new Meetup(5, 2013);
142
+        assertThat(meetup.day(SUNDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
143
+    }
144
+
145
+    @Test
146
+    public void test_sunteenth_of_june_2013() {
147
+        DateTime expected = new DateTime(2013, 6, 16, 0, 0);
148
+        Meetup meetup = new Meetup(6, 2013);
149
+        assertThat(meetup.day(SUNDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
150
+    }
151
+
152
+    @Test
153
+    public void test_sunteenth_of_october_2013() {
154
+        DateTime expected = new DateTime(2013, 10, 13, 0, 0);
155
+        Meetup meetup = new Meetup(10, 2013);
156
+        assertThat(meetup.day(SUNDAY, MeetupSchedule.TEENTH)).isEqualTo(expected);
157
+    }
158
+
159
+    @Test
160
+    public void test_first_monday_of_march_2013() {
161
+        DateTime expected = new DateTime(2013, 3, 4, 0, 0);
162
+        Meetup meetup = new Meetup(3, 2013);
163
+        assertThat(meetup.day(MONDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
164
+    }
165
+
166
+    @Test
167
+    public void test_first_monday_of_april_2013() {
168
+        DateTime expected = new DateTime(2013, 4, 1, 0, 0);
169
+        Meetup meetup = new Meetup(4, 2013);
170
+        assertThat(meetup.day(MONDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
171
+    }
172
+
173
+    @Test
174
+    public void test_first_tuesday_of_may_2013() {
175
+        DateTime expected = new DateTime(2013, 5, 7, 0, 0);
176
+        Meetup meetup = new Meetup(5, 2013);
177
+        assertThat(meetup.day(TUESDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
178
+    }
179
+
180
+    @Test
181
+    public void test_first_tuesday_of_june_2013() {
182
+        DateTime expected = new DateTime(2013, 6, 4, 0, 0);
183
+        Meetup meetup = new Meetup(6, 2013);
184
+        assertThat(meetup.day(TUESDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
185
+    }
186
+
187
+    @Test
188
+    public void test_first_wednesday_of_july_2013() {
189
+        DateTime expected = new DateTime(2013, 7, 3, 0, 0);
190
+        Meetup meetup = new Meetup(7, 2013);
191
+        assertThat(meetup.day(WEDNESDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
192
+    }
193
+
194
+    @Test
195
+    public void test_first_wednesday_of_august_2013() {
196
+        DateTime expected = new DateTime(2013, 8, 7, 0, 0);
197
+        Meetup meetup = new Meetup(8, 2013);
198
+        assertThat(meetup.day(WEDNESDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
199
+    }
200
+
201
+    @Test
202
+    public void test_first_thursday_of_september_2013() {
203
+        DateTime expected = new DateTime(2013, 9, 5, 0, 0);
204
+        Meetup meetup = new Meetup(9, 2013);
205
+        assertThat(meetup.day(THURSDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
206
+    }
207
+
208
+    @Test
209
+    public void test_first_thursday_of_october_2013() {
210
+        DateTime expected = new DateTime(2013, 10, 3, 0, 0);
211
+        Meetup meetup = new Meetup(10, 2013);
212
+        assertThat(meetup.day(THURSDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
213
+    }
214
+
215
+    @Test
216
+    public void test_first_friday_of_november_2013() {
217
+        DateTime expected = new DateTime(2013, 11, 1, 0, 0);
218
+        Meetup meetup = new Meetup(11, 2013);
219
+        assertThat(meetup.day(FRIDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
220
+    }
221
+
222
+    @Test
223
+    public void test_first_friday_of_december_2013() {
224
+        DateTime expected = new DateTime(2013, 12, 6, 0, 0);
225
+        Meetup meetup = new Meetup(12, 2013);
226
+        assertThat(meetup.day(FRIDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
227
+    }
228
+
229
+    @Test
230
+    public void test_first_saturday_of_january_2013() {
231
+        DateTime expected = new DateTime(2013, 1, 5, 0, 0);
232
+        Meetup meetup = new Meetup(1, 2013);
233
+        assertThat(meetup.day(SATURDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
234
+    }
235
+
236
+    @Test
237
+    public void test_first_saturday_of_february_2013() {
238
+        DateTime expected = new DateTime(2013, 2, 2, 0, 0);
239
+        Meetup meetup = new Meetup(2, 2013);
240
+        assertThat(meetup.day(SATURDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
241
+    }
242
+
243
+    @Test
244
+    public void test_first_sunday_of_march_2013() {
245
+        DateTime expected = new DateTime(2013, 3, 3, 0, 0);
246
+        Meetup meetup = new Meetup(3, 2013);
247
+        assertThat(meetup.day(SUNDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
248
+    }
249
+
250
+    @Test
251
+    public void test_first_sunday_of_april_2013() {
252
+        DateTime expected = new DateTime(2013, 4, 7, 0, 0);
253
+        Meetup meetup = new Meetup(4, 2013);
254
+        assertThat(meetup.day(SUNDAY, MeetupSchedule.FIRST)).isEqualTo(expected);
255
+    }
256
+
257
+    @Test
258
+    public void test_second_monday_of_march_2013() {
259
+        DateTime expected = new DateTime(2013, 3, 11, 0, 0);
260
+        Meetup meetup = new Meetup(3, 2013);
261
+        assertThat(meetup.day(MONDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
262
+    }
263
+
264
+    @Test
265
+    public void test_second_monday_of_april_2013() {
266
+        DateTime expected = new DateTime(2013, 4, 8, 0, 0);
267
+        Meetup meetup = new Meetup(4, 2013);
268
+        assertThat(meetup.day(MONDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
269
+    }
270
+
271
+    @Test
272
+    public void test_second_tuesday_of_may_2013() {
273
+        DateTime expected = new DateTime(2013, 5, 14, 0, 0);
274
+        Meetup meetup = new Meetup(5, 2013);
275
+        assertThat(meetup.day(TUESDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
276
+    }
277
+
278
+    @Test
279
+    public void test_second_tuesday_of_june_2013() {
280
+        DateTime expected = new DateTime(2013, 6, 11, 0, 0);
281
+        Meetup meetup = new Meetup(6, 2013);
282
+        assertThat(meetup.day(TUESDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
283
+    }
284
+
285
+    @Test
286
+    public void test_second_wednesday_of_july_2013() {
287
+        DateTime expected = new DateTime(2013, 7, 10, 0, 0);
288
+        Meetup meetup = new Meetup(7, 2013);
289
+        assertThat(meetup.day(WEDNESDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
290
+    }
291
+
292
+    @Test
293
+    public void test_second_wednesday_of_august_2013() {
294
+        DateTime expected = new DateTime(2013, 8, 14, 0, 0);
295
+        Meetup meetup = new Meetup(8, 2013);
296
+        assertThat(meetup.day(WEDNESDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
297
+    }
298
+
299
+    @Test
300
+    public void test_second_thursday_of_september_2013() {
301
+        DateTime expected = new DateTime(2013, 9, 12, 0, 0);
302
+        Meetup meetup = new Meetup(9, 2013);
303
+        assertThat(meetup.day(THURSDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
304
+    }
305
+
306
+    @Test
307
+    public void test_second_thursday_of_october_2013() {
308
+        DateTime expected = new DateTime(2013, 10, 10, 0, 0);
309
+        Meetup meetup = new Meetup(10, 2013);
310
+        assertThat(meetup.day(THURSDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
311
+    }
312
+
313
+    @Test
314
+    public void test_second_friday_of_november_2013() {
315
+        DateTime expected = new DateTime(2013, 11, 8, 0, 0);
316
+        Meetup meetup = new Meetup(11, 2013);
317
+        assertThat(meetup.day(FRIDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
318
+    }
319
+
320
+    @Test
321
+    public void test_second_friday_of_december_2013() {
322
+        DateTime expected = new DateTime(2013, 12, 13, 0, 0);
323
+        Meetup meetup = new Meetup(12, 2013);
324
+        assertThat(meetup.day(FRIDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
325
+    }
326
+
327
+    @Test
328
+    public void test_second_saturday_of_january_2013() {
329
+        DateTime expected = new DateTime(2013, 1, 12, 0, 0);
330
+        Meetup meetup = new Meetup(1, 2013);
331
+        assertThat(meetup.day(SATURDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
332
+    }
333
+
334
+    @Test
335
+    public void test_second_saturday_of_february_2013() {
336
+        DateTime expected = new DateTime(2013, 2, 9, 0, 0);
337
+        Meetup meetup = new Meetup(2, 2013);
338
+        assertThat(meetup.day(SATURDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
339
+    }
340
+
341
+    @Test
342
+    public void test_second_sunday_of_march_2013() {
343
+        DateTime expected = new DateTime(2013, 3, 10, 0, 0);
344
+        Meetup meetup = new Meetup(3, 2013);
345
+        assertThat(meetup.day(SUNDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
346
+    }
347
+
348
+    @Test
349
+    public void test_second_sunday_of_april_2013() {
350
+        DateTime expected = new DateTime(2013, 4, 14, 0, 0);
351
+        Meetup meetup = new Meetup(4, 2013);
352
+        assertThat(meetup.day(SUNDAY, MeetupSchedule.SECOND)).isEqualTo(expected);
353
+    }
354
+
355
+    @Test
356
+    public void test_third_monday_of_march_2013() {
357
+        DateTime expected = new DateTime(2013, 3, 18, 0, 0);
358
+        Meetup meetup = new Meetup(3, 2013);
359
+        assertThat(meetup.day(MONDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
360
+    }
361
+
362
+    @Test
363
+    public void test_third_monday_of_april_2013() {
364
+        DateTime expected = new DateTime(2013, 4, 15, 0, 0);
365
+        Meetup meetup = new Meetup(4, 2013);
366
+        assertThat(meetup.day(MONDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
367
+    }
368
+
369
+    @Test
370
+    public void test_third_tuesday_of_may_2013() {
371
+        DateTime expected = new DateTime(2013, 5, 21, 0, 0);
372
+        Meetup meetup = new Meetup(5, 2013);
373
+        assertThat(meetup.day(TUESDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
374
+    }
375
+
376
+    @Test
377
+    public void test_third_tuesday_of_june_2013() {
378
+        DateTime expected = new DateTime(2013, 6, 18, 0, 0);
379
+        Meetup meetup = new Meetup(6, 2013);
380
+        assertThat(meetup.day(TUESDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
381
+    }
382
+
383
+    @Test
384
+    public void test_third_wednesday_of_july_2013() {
385
+        DateTime expected = new DateTime(2013, 7, 17, 0, 0);
386
+        Meetup meetup = new Meetup(7, 2013);
387
+        assertThat(meetup.day(WEDNESDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
388
+    }
389
+
390
+    @Test
391
+    public void test_third_wednesday_of_august_2013() {
392
+        DateTime expected = new DateTime(2013, 8, 21, 0, 0);
393
+        Meetup meetup = new Meetup(8, 2013);
394
+        assertThat(meetup.day(WEDNESDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
395
+    }
396
+
397
+    @Test
398
+    public void test_third_thursday_of_september_2013() {
399
+        DateTime expected = new DateTime(2013, 9, 19, 0, 0);
400
+        Meetup meetup = new Meetup(9, 2013);
401
+        assertThat(meetup.day(THURSDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
402
+    }
403
+
404
+    @Test
405
+    public void test_third_thursday_of_october_2013() {
406
+        DateTime expected = new DateTime(2013, 10, 17, 0, 0);
407
+        Meetup meetup = new Meetup(10, 2013);
408
+        assertThat(meetup.day(THURSDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
409
+    }
410
+
411
+    @Test
412
+    public void test_third_friday_of_november_2013() {
413
+        DateTime expected = new DateTime(2013, 11, 15, 0, 0);
414
+        Meetup meetup = new Meetup(11, 2013);
415
+        assertThat(meetup.day(FRIDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
416
+    }
417
+
418
+    @Test
419
+    public void test_third_friday_of_december_2013() {
420
+        DateTime expected = new DateTime(2013, 12, 20, 0, 0);
421
+        Meetup meetup = new Meetup(12, 2013);
422
+        assertThat(meetup.day(FRIDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
423
+    }
424
+
425
+    @Test
426
+    public void test_third_saturday_of_january_2013() {
427
+        DateTime expected = new DateTime(2013, 1, 19, 0, 0);
428
+        Meetup meetup = new Meetup(1, 2013);
429
+        assertThat(meetup.day(SATURDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
430
+    }
431
+
432
+    @Test
433
+    public void test_third_saturday_of_february_2013() {
434
+        DateTime expected = new DateTime(2013, 2, 16, 0, 0);
435
+        Meetup meetup = new Meetup(2, 2013);
436
+        assertThat(meetup.day(SATURDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
437
+    }
438
+
439
+    @Test
440
+    public void test_third_sunday_of_march_2013() {
441
+        DateTime expected = new DateTime(2013, 3, 17, 0, 0);
442
+        Meetup meetup = new Meetup(3, 2013);
443
+        assertThat(meetup.day(SUNDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
444
+    }
445
+
446
+    @Test
447
+    public void test_third_sunday_of_april_2013() {
448
+        DateTime expected = new DateTime(2013, 4, 21, 0, 0);
449
+        Meetup meetup = new Meetup(4, 2013);
450
+        assertThat(meetup.day(SUNDAY, MeetupSchedule.THIRD)).isEqualTo(expected);
451
+    }
452
+
453
+    @Test
454
+    public void test_fourth_monday_of_march_2013() {
455
+        DateTime expected = new DateTime(2013, 3, 25, 0, 0);
456
+        Meetup meetup = new Meetup(3, 2013);
457
+        assertThat(meetup.day(MONDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
458
+    }
459
+
460
+    @Test
461
+    public void test_fourth_monday_of_april_2013() {
462
+        DateTime expected = new DateTime(2013, 4, 22, 0, 0);
463
+        Meetup meetup = new Meetup(4, 2013);
464
+        assertThat(meetup.day(MONDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
465
+    }
466
+
467
+    @Test
468
+    public void test_fourth_tuesday_of_may_2013() {
469
+        DateTime expected = new DateTime(2013, 5, 28, 0, 0);
470
+        Meetup meetup = new Meetup(5, 2013);
471
+        assertThat(meetup.day(TUESDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
472
+    }
473
+
474
+    @Test
475
+    public void test_fourth_tuesday_of_june_2013() {
476
+        DateTime expected = new DateTime(2013, 6, 25, 0, 0);
477
+        Meetup meetup = new Meetup(6, 2013);
478
+        assertThat(meetup.day(TUESDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
479
+    }
480
+
481
+    @Test
482
+    public void test_fourth_wednesday_of_july_2013() {
483
+        DateTime expected = new DateTime(2013, 7, 24, 0, 0);
484
+        Meetup meetup = new Meetup(7, 2013);
485
+        assertThat(meetup.day(WEDNESDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
486
+    }
487
+
488
+    @Test
489
+    public void test_fourth_wednesday_of_august_2013() {
490
+        DateTime expected = new DateTime(2013, 8, 28, 0, 0);
491
+        Meetup meetup = new Meetup(8, 2013);
492
+        assertThat(meetup.day(WEDNESDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
493
+    }
494
+
495
+    @Test
496
+    public void test_fourth_thursday_of_september_2013() {
497
+        DateTime expected = new DateTime(2013, 9, 26, 0, 0);
498
+        Meetup meetup = new Meetup(9, 2013);
499
+        assertThat(meetup.day(THURSDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
500
+    }
501
+
502
+    @Test
503
+    public void test_fourth_thursday_of_october_2013() {
504
+        DateTime expected = new DateTime(2013, 10, 24, 0, 0);
505
+        Meetup meetup = new Meetup(10, 2013);
506
+        assertThat(meetup.day(THURSDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
507
+    }
508
+
509
+    @Test
510
+    public void test_fourth_friday_of_november_2013() {
511
+        DateTime expected = new DateTime(2013, 11, 22, 0, 0);
512
+        Meetup meetup = new Meetup(11, 2013);
513
+        assertThat(meetup.day(FRIDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
514
+    }
515
+
516
+    @Test
517
+    public void test_fourth_friday_of_december_2013() {
518
+        DateTime expected = new DateTime(2013, 12, 27, 0, 0);
519
+        Meetup meetup = new Meetup(12, 2013);
520
+        assertThat(meetup.day(FRIDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
521
+    }
522
+
523
+    @Test
524
+    public void test_fourth_saturday_of_january_2013() {
525
+        DateTime expected = new DateTime(2013, 1, 26, 0, 0);
526
+        Meetup meetup = new Meetup(1, 2013);
527
+        assertThat(meetup.day(SATURDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
528
+    }
529
+
530
+    @Test
531
+    public void test_fourth_saturday_of_february_2013() {
532
+        DateTime expected = new DateTime(2013, 2, 23, 0, 0);
533
+        Meetup meetup = new Meetup(2, 2013);
534
+        assertThat(meetup.day(SATURDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
535
+    }
536
+
537
+    @Test
538
+    public void test_fourth_sunday_of_march_2013() {
539
+        DateTime expected = new DateTime(2013, 3, 24, 0, 0);
540
+        Meetup meetup = new Meetup(3, 2013);
541
+        assertThat(meetup.day(SUNDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
542
+    }
543
+
544
+    @Test
545
+    public void test_fourth_sunday_of_april_2013() {
546
+        DateTime expected = new DateTime(2013, 4, 28, 0, 0);
547
+        Meetup meetup = new Meetup(4, 2013);
548
+        assertThat(meetup.day(SUNDAY, MeetupSchedule.FOURTH)).isEqualTo(expected);
549
+    }
550
+
551
+    @Test
552
+    public void test_last_monday_of_march_2013() {
553
+        DateTime expected = new DateTime(2013, 3, 25, 0, 0);
554
+        Meetup meetup = new Meetup(3, 2013);
555
+        assertThat(meetup.day(MONDAY, MeetupSchedule.LAST)).isEqualTo(expected);
556
+    }
557
+
558
+    @Test
559
+    public void test_last_monday_of_april_2013() {
560
+        DateTime expected = new DateTime(2013, 4, 29, 0, 0);
561
+        Meetup meetup = new Meetup(4, 2013);
562
+        assertThat(meetup.day(MONDAY, MeetupSchedule.LAST)).isEqualTo(expected);
563
+    }
564
+
565
+    @Test
566
+    public void test_last_tuesday_of_may_2013() {
567
+        DateTime expected = new DateTime(2013, 5, 28, 0, 0);
568
+        Meetup meetup = new Meetup(5, 2013);
569
+        assertThat(meetup.day(TUESDAY, MeetupSchedule.LAST)).isEqualTo(expected);
570
+    }
571
+
572
+    @Test
573
+    public void test_last_tuesday_of_june_2013() {
574
+        DateTime expected = new DateTime(2013, 6, 25, 0, 0);
575
+        Meetup meetup = new Meetup(6, 2013);
576
+        assertThat(meetup.day(TUESDAY, MeetupSchedule.LAST)).isEqualTo(expected);
577
+    }
578
+
579
+    @Test
580
+    public void test_last_wednesday_of_july_2013() {
581
+        DateTime expected = new DateTime(2013, 7, 31, 0, 0);
582
+        Meetup meetup = new Meetup(7, 2013);
583
+        assertThat(meetup.day(WEDNESDAY, MeetupSchedule.LAST)).isEqualTo(expected);
584
+    }
585
+
586
+    @Test
587
+    public void test_last_wednesday_of_august_2013() {
588
+        DateTime expected = new DateTime(2013, 8, 28, 0, 0);
589
+        Meetup meetup = new Meetup(8, 2013);
590
+        assertThat(meetup.day(WEDNESDAY, MeetupSchedule.LAST)).isEqualTo(expected);
591
+    }
592
+
593
+    @Test
594
+    public void test_last_thursday_of_september_2013() {
595
+        DateTime expected = new DateTime(2013, 9, 26, 0, 0);
596
+        Meetup meetup = new Meetup(9, 2013);
597
+        assertThat(meetup.day(THURSDAY, MeetupSchedule.LAST)).isEqualTo(expected);
598
+    }
599
+
600
+    @Test
601
+    public void test_last_thursday_of_october_2013() {
602
+        DateTime expected = new DateTime(2013, 10, 31, 0, 0);
603
+        Meetup meetup = new Meetup(10, 2013);
604
+        assertThat(meetup.day(THURSDAY, MeetupSchedule.LAST)).isEqualTo(expected);
605
+    }
606
+
607
+    @Test
608
+    public void test_last_friday_of_november_2013() {
609
+        DateTime expected = new DateTime(2013, 11, 29, 0, 0);
610
+        Meetup meetup = new Meetup(11, 2013);
611
+        assertThat(meetup.day(FRIDAY, MeetupSchedule.LAST)).isEqualTo(expected);
612
+    }
613
+
614
+    @Test
615
+    public void test_last_friday_of_december_2013() {
616
+        DateTime expected = new DateTime(2013, 12, 27, 0, 0);
617
+        Meetup meetup = new Meetup(12, 2013);
618
+        assertThat(meetup.day(FRIDAY, MeetupSchedule.LAST)).isEqualTo(expected);
619
+    }
620
+
621
+    @Test
622
+    public void test_last_saturday_of_january_2013() {
623
+        DateTime expected = new DateTime(2013, 1, 26, 0, 0);
624
+        Meetup meetup = new Meetup(1, 2013);
625
+        assertThat(meetup.day(SATURDAY, MeetupSchedule.LAST)).isEqualTo(expected);
626
+    }
627
+
628
+    @Test
629
+    public void test_last_saturday_of_february_2013() {
630
+        DateTime expected = new DateTime(2013, 2, 23, 0, 0);
631
+        Meetup meetup = new Meetup(2, 2013);
632
+        assertThat(meetup.day(SATURDAY, MeetupSchedule.LAST)).isEqualTo(expected);
633
+    }
634
+
635
+    @Test
636
+    public void test_last_sunday_of_march_2013() {
637
+        DateTime expected = new DateTime(2013, 3, 31, 0, 0);
638
+        Meetup meetup = new Meetup(3, 2013);
639
+        assertThat(meetup.day(SUNDAY, MeetupSchedule.LAST)).isEqualTo(expected);
640
+    }
641
+
642
+    @Test
643
+    public void test_last_sunday_of_april_2013() {
644
+        DateTime expected = new DateTime(2013, 4, 28, 0, 0);
645
+        Meetup meetup = new Meetup(4, 2013);
646
+        assertThat(meetup.day(SUNDAY, MeetupSchedule.LAST)).isEqualTo(expected);
647
+    }
648
+}