1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.lang3.time;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20
21 import java.text.ParsePosition;
22 import java.util.Calendar;
23 import java.util.GregorianCalendar;
24 import java.util.Locale;
25 import java.util.TimeZone;
26 import java.util.stream.Stream;
27
28 import org.apache.commons.lang3.AbstractLangTest;
29 import org.junit.jupiter.params.ParameterizedTest;
30 import org.junit.jupiter.params.provider.Arguments;
31 import org.junit.jupiter.params.provider.MethodSource;
32
33 class WeekYearTest extends AbstractLangTest {
34
35 public static Stream<Arguments> data() {
36
37 return Stream.of(
38 Arguments.of(new GregorianCalendar(2005, Calendar.JANUARY, 1), "2004-W53-6"),
39 Arguments.of(new GregorianCalendar(2005, Calendar.JANUARY, 2), "2004-W53-7"),
40 Arguments.of(new GregorianCalendar(2005, Calendar.DECEMBER, 31), "2005-W52-6"),
41 Arguments.of(new GregorianCalendar(2007, Calendar.JANUARY, 1), "2007-W01-1"),
42 Arguments.of(new GregorianCalendar(2007, Calendar.DECEMBER, 30), "2007-W52-7"),
43 Arguments.of(new GregorianCalendar(2007, Calendar.DECEMBER, 31), "2008-W01-1"),
44 Arguments.of(new GregorianCalendar(2008, Calendar.JANUARY, 1), "2008-W01-2"),
45 Arguments.of(new GregorianCalendar(2008, Calendar.DECEMBER, 28), "2008-W52-7"),
46 Arguments.of(new GregorianCalendar(2008, Calendar.DECEMBER, 29), "2009-W01-1"),
47 Arguments.of(new GregorianCalendar(2008, Calendar.DECEMBER, 30), "2009-W01-2"),
48 Arguments.of(new GregorianCalendar(2008, Calendar.DECEMBER, 31), "2009-W01-3"),
49 Arguments.of(new GregorianCalendar(2009, Calendar.JANUARY, 1), "2009-W01-4"),
50 Arguments.of(new GregorianCalendar(2009, Calendar.DECEMBER, 31), "2009-W53-4"),
51 Arguments.of(new GregorianCalendar(2010, Calendar.JANUARY, 1), "2009-W53-5"),
52 Arguments.of(new GregorianCalendar(2010, Calendar.JANUARY, 2), "2009-W53-6"),
53 Arguments.of(new GregorianCalendar(2010, Calendar.JANUARY, 3), "2009-W53-7")
54 );
55
56 }
57
58 @ParameterizedTest
59 @MethodSource("data")
60 void testParser(final Calendar vulgar, final String isoForm) {
61 final DateParser parser = new FastDateParser("YYYY-'W'ww-u", TimeZone.getDefault(), Locale.getDefault());
62
63 final Calendar cal = Calendar.getInstance();
64 cal.setMinimalDaysInFirstWeek(4);
65 cal.setFirstDayOfWeek(Calendar.MONDAY);
66 cal.clear();
67
68 parser.parse(isoForm, new ParsePosition(0), cal);
69 assertEquals(vulgar.getTime(), cal.getTime());
70 }
71
72 @ParameterizedTest
73 @MethodSource("data")
74 void testPrinter(final Calendar vulgar, final String isoForm) {
75 final FastDatePrinter printer = new FastDatePrinter("YYYY-'W'ww-u", TimeZone.getDefault(), Locale.getDefault());
76
77 vulgar.setMinimalDaysInFirstWeek(4);
78 vulgar.setFirstDayOfWeek(Calendar.MONDAY);
79
80 assertEquals(isoForm, printer.format(vulgar));
81 }
82 }