1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.lang3.time;
19
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21
22 import java.time.LocalDate;
23 import java.time.LocalDateTime;
24 import java.time.Month;
25 import java.time.OffsetDateTime;
26 import java.time.ZoneId;
27 import java.time.ZonedDateTime;
28 import java.util.Calendar;
29 import java.util.GregorianCalendar;
30 import java.util.Locale;
31 import java.util.TimeZone;
32
33 import org.apache.commons.lang3.AbstractLangTest;
34 import org.junit.jupiter.api.Test;
35 import org.junit.jupiter.params.ParameterizedTest;
36 import org.junit.jupiter.params.provider.MethodSource;
37
38 class CalendarUtilsTest extends AbstractLangTest {
39
40 @Test
41 void testGetDayOfMonth() {
42 assertEquals(Calendar.getInstance().get(Calendar.DAY_OF_MONTH), CalendarUtils.getInstance().getDayOfMonth());
43 }
44
45 @Test
46 void testGetDayOfYear() {
47 assertEquals(Calendar.getInstance().get(Calendar.DAY_OF_YEAR), CalendarUtils.getInstance().getDayOfYear());
48 }
49
50 @Test
51 void testGetMonth() {
52 assertEquals(Calendar.getInstance().get(Calendar.MONTH), CalendarUtils.getInstance().getMonth());
53 }
54
55 @Test
56 void testGetStandaloneLongMonthNames() {
57 final String[] monthNames = CalendarUtils.getInstance(Locale.GERMAN).getStandaloneLongMonthNames();
58 assertEquals(12, monthNames.length);
59 assertEquals("Januar", monthNames[0]);
60 assertEquals("Februar", monthNames[1]);
61 assertEquals("M\u00e4rz", monthNames[2]);
62 assertEquals("April", monthNames[3]);
63 assertEquals("Mai", monthNames[4]);
64 assertEquals("Juni", monthNames[5]);
65 assertEquals("Juli", monthNames[6]);
66 assertEquals("August", monthNames[7]);
67 assertEquals("September", monthNames[8]);
68 assertEquals("Oktober", monthNames[9]);
69 assertEquals("November", monthNames[10]);
70 assertEquals("Dezember", monthNames[11]);
71 }
72
73 @Test
74 void testGetStandaloneShortMonthNames() {
75 final String[] monthNames = CalendarUtils.getInstance(Locale.GERMAN).getStandaloneShortMonthNames();
76 assertEquals(12, monthNames.length);
77 assertEquals("Jan", monthNames[0]);
78 assertEquals("Feb", monthNames[1]);
79 assertEquals("M\u00e4r", monthNames[2]);
80 assertEquals("Apr", monthNames[3]);
81 assertEquals("Mai", monthNames[4]);
82 assertEquals("Jun", monthNames[5]);
83 assertEquals("Jul", monthNames[6]);
84 assertEquals("Aug", monthNames[7]);
85 assertEquals("Sep", monthNames[8]);
86 assertEquals("Okt", monthNames[9]);
87 assertEquals("Nov", monthNames[10]);
88 assertEquals("Dez", monthNames[11]);
89 }
90
91 @Test
92 void testGetYear() {
93 assertEquals(Calendar.getInstance().get(Calendar.YEAR), CalendarUtils.INSTANCE.getYear());
94 }
95
96
97
98
99 @Test
100 void testToLocalDate() {
101 final Calendar calendar = new GregorianCalendar(TimeZones.getTimeZone(TimeZones.GMT_ID));
102 calendar.setTimeInMillis(-27078001200000L);
103 assertEquals("1111-12-08T05:00:00Z", calendar.toInstant().toString());
104 assertEquals(LocalDate.of(1111, Month.DECEMBER, 8), new CalendarUtils(calendar).toLocalDate());
105 calendar.setTimeInMillis(1614700215000L);
106 assertEquals(LocalDate.of(2021, Month.MARCH, 2), new CalendarUtils(calendar).toLocalDate());
107 }
108
109 @ParameterizedTest
110 @MethodSource(TimeZonesTest.TIME_ZONE_GET_AVAILABLE_IDS)
111 void testToLocalDateTime(final String timeZoneId) {
112 final TimeZone timeZone = TimeZones.getTimeZone(timeZoneId);
113 final ZoneId zoneId = timeZone.toZoneId();
114 final Calendar calendar = new GregorianCalendar(timeZone);
115 calendar.setTimeInMillis(0);
116 assertEquals(LocalDateTime.ofInstant(calendar.toInstant(), calendar.getTimeZone().toZoneId()), new CalendarUtils(calendar).toLocalDateTime());
117 final ZonedDateTime zdt1 = ZonedDateTime.of(1, 2, 3, 4, 5, 6, 0, zoneId);
118 calendar.setTimeInMillis(zdt1.toInstant().toEpochMilli());
119 assertEquals(LocalDateTime.ofInstant(zdt1.toInstant(), calendar.getTimeZone().toZoneId()), new CalendarUtils(calendar).toLocalDateTime());
120 }
121
122 @ParameterizedTest
123 @MethodSource(TimeZonesTest.TIME_ZONE_GET_AVAILABLE_IDS)
124 void testToOffsetDateTime(final String timeZoneId) {
125 final TimeZone timeZone = TimeZones.getTimeZone(timeZoneId);
126 final ZoneId zoneId = timeZone.toZoneId();
127 final Calendar calendar = new GregorianCalendar(timeZone);
128 calendar.setTimeInMillis(0);
129 assertEquals(OffsetDateTime.ofInstant(calendar.toInstant(), calendar.getTimeZone().toZoneId()), new CalendarUtils(calendar).toOffsetDateTime());
130 final ZonedDateTime zdt1 = ZonedDateTime.of(1, 2, 3, 4, 5, 6, 0, zoneId);
131 calendar.setTimeInMillis(zdt1.toInstant().toEpochMilli());
132 assertEquals(OffsetDateTime.ofInstant(zdt1.toInstant(), calendar.getTimeZone().toZoneId()), new CalendarUtils(calendar).toOffsetDateTime());
133 }
134
135 @ParameterizedTest
136 @MethodSource(TimeZonesTest.TIME_ZONE_GET_AVAILABLE_IDS)
137 void testToZonedDateTime(final String timeZoneId) {
138 final TimeZone timeZone = TimeZones.getTimeZone(timeZoneId);
139 final ZoneId zoneId = timeZone.toZoneId();
140 final Calendar calendar = new GregorianCalendar(timeZone);
141 calendar.setTimeInMillis(0);
142 assertEquals(ZonedDateTime.ofInstant(calendar.toInstant(), calendar.getTimeZone().toZoneId()), new CalendarUtils(calendar).toZonedDateTime());
143 final ZonedDateTime zdt1 = ZonedDateTime.of(1, 2, 3, 4, 5, 6, 0, zoneId);
144 calendar.setTimeInMillis(zdt1.toInstant().toEpochMilli());
145 assertEquals(ZonedDateTime.ofInstant(zdt1.toInstant(), calendar.getTimeZone().toZoneId()), new CalendarUtils(calendar).toZonedDateTime());
146 }
147 }