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 public class WeekYearTest extends AbstractLangTest {
34
35 public static Stream<Arguments> data() {
36 return Stream.of(
37 Arguments.of(new GregorianCalendar( 2005, Calendar.JANUARY, 1), "2004-W53-6"),
38 Arguments.of(new GregorianCalendar( 2005, Calendar.JANUARY, 2), "2004-W53-7"),
39 Arguments.of(new GregorianCalendar( 2005, Calendar.DECEMBER, 31), "2005-W52-6"),
40 Arguments.of(new GregorianCalendar( 2007, Calendar.JANUARY, 1), "2007-W01-1"),
41 Arguments.of(new GregorianCalendar( 2007, Calendar.DECEMBER, 30), "2007-W52-7"),
42 Arguments.of(new GregorianCalendar( 2007, Calendar.DECEMBER, 31), "2008-W01-1"),
43 Arguments.of(new GregorianCalendar( 2008, Calendar.JANUARY, 1), "2008-W01-2"),
44 Arguments.of(new GregorianCalendar( 2008, Calendar.DECEMBER, 28), "2008-W52-7"),
45 Arguments.of(new GregorianCalendar( 2008, Calendar.DECEMBER, 29), "2009-W01-1"),
46 Arguments.of(new GregorianCalendar( 2008, Calendar.DECEMBER, 30), "2009-W01-2"),
47 Arguments.of(new GregorianCalendar( 2008, Calendar.DECEMBER, 31), "2009-W01-3"),
48 Arguments.of(new GregorianCalendar( 2009, Calendar.JANUARY, 1), "2009-W01-4"),
49 Arguments.of(new GregorianCalendar( 2009, Calendar.DECEMBER, 31), "2009-W53-4"),
50 Arguments.of(new GregorianCalendar( 2010, Calendar.JANUARY, 1), "2009-W53-5"),
51 Arguments.of(new GregorianCalendar( 2010, Calendar.JANUARY, 2), "2009-W53-6"),
52 Arguments.of(new GregorianCalendar( 2010, Calendar.JANUARY, 3), "2009-W53-7")
53 );
54 }
55
56 @ParameterizedTest
57 @MethodSource("data")
58 public void testParser(final Calendar vulgar, final String isoForm) {
59 final DateParser parser = new FastDateParser("YYYY-'W'ww-u", TimeZone.getDefault(), Locale.getDefault());
60
61 final Calendar cal = Calendar.getInstance();
62 cal.setMinimalDaysInFirstWeek(4);
63 cal.setFirstDayOfWeek(Calendar.MONDAY);
64 cal.clear();
65
66 parser.parse(isoForm, new ParsePosition(0), cal);
67 assertEquals(vulgar.getTime(), cal.getTime());
68 }
69
70 @ParameterizedTest
71 @MethodSource("data")
72 public void testPrinter(final Calendar vulgar, final String isoForm) {
73 final FastDatePrinter printer = new FastDatePrinter("YYYY-'W'ww-u", TimeZone.getDefault(), Locale.getDefault());
74
75 vulgar.setMinimalDaysInFirstWeek(4);
76 vulgar.setFirstDayOfWeek(Calendar.MONDAY);
77
78 assertEquals(isoForm, printer.format(vulgar));
79 }
80 }