2024-08-20 00:42:38 +08:00
|
|
|
package xyz.zhouxy.plusone.commons.base;
|
|
|
|
|
|
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
|
|
|
|
|
|
import java.time.Month;
|
|
|
|
|
import java.time.MonthDay;
|
|
|
|
|
|
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
|
public
|
|
|
|
|
class QuarterTests {
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
void testQ1() {
|
|
|
|
|
Quarter quarter = Quarter.of(1);
|
|
|
|
|
assertSame(Quarter.Q1, quarter);
|
2024-08-26 10:24:07 +08:00
|
|
|
assertSame(quarter, Quarter.valueOf("Q1"));
|
2024-08-20 00:42:38 +08:00
|
|
|
assertEquals(1, quarter.getValue());
|
2024-08-26 10:24:07 +08:00
|
|
|
assertEquals("Q1", quarter.name());
|
2024-08-20 00:42:38 +08:00
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
assertThrows(IllegalArgumentException.class, () -> {
|
2024-08-20 00:42:38 +08:00
|
|
|
Quarter.of(0);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// ==========
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
int startMonthValue = quarter.firstMonthValue();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("startMonthValue: {}", startMonthValue);
|
|
|
|
|
assertEquals(1, startMonthValue);
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
Month startMonth = quarter.firstMonth();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("startMonth: {}", startMonth);
|
|
|
|
|
assertEquals(Month.JANUARY, startMonth);
|
|
|
|
|
|
|
|
|
|
assertEquals(startMonthValue, startMonth.getValue());
|
|
|
|
|
|
|
|
|
|
// ==========
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
int lastMonthValue = quarter.lastMonthValue();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("lastMonthValue: {}", lastMonthValue);
|
|
|
|
|
assertEquals(3, lastMonthValue);
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
Month lastMonth = quarter.lastMonth();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("lastMonth: {}", lastMonth);
|
|
|
|
|
assertEquals(Month.MARCH, lastMonth);
|
|
|
|
|
|
|
|
|
|
assertEquals(lastMonthValue, lastMonth.getValue());
|
|
|
|
|
|
|
|
|
|
// ==========
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
MonthDay startMonthDay = quarter.firstMonthDay();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("startMonthDay: {}", startMonthDay);
|
|
|
|
|
assertEquals(startMonthDay, MonthDay.of(1, 1));
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
MonthDay lastMonthDay = quarter.lastMonthDay();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("lastMonthDay: {}", lastMonthDay);
|
|
|
|
|
assertEquals(lastMonthDay, MonthDay.of(3, 31));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
void testQ2() {
|
|
|
|
|
Quarter quarter = Quarter.of(2);
|
|
|
|
|
assertSame(Quarter.Q2, quarter);
|
2024-08-26 10:24:07 +08:00
|
|
|
assertSame(quarter, Quarter.valueOf("Q2"));
|
2024-08-20 00:42:38 +08:00
|
|
|
assertEquals(2, quarter.getValue());
|
2024-08-26 10:24:07 +08:00
|
|
|
assertEquals("Q2", quarter.name());
|
2024-08-20 00:42:38 +08:00
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
assertThrows(IllegalArgumentException.class, () -> {
|
2024-08-20 00:42:38 +08:00
|
|
|
Quarter.of(5);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// ==========
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
int startMonthValue = quarter.firstMonthValue();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("startMonthValue: {}", startMonthValue);
|
|
|
|
|
assertEquals(4, startMonthValue);
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
Month startMonth = quarter.firstMonth();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("startMonth: {}", startMonth);
|
|
|
|
|
assertEquals(Month.APRIL, startMonth);
|
|
|
|
|
|
|
|
|
|
assertEquals(startMonthValue, startMonth.getValue());
|
|
|
|
|
|
|
|
|
|
// ==========
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
int lastMonthValue = quarter.lastMonthValue();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("lastMonthValue: {}", lastMonthValue);
|
|
|
|
|
assertEquals(6, lastMonthValue);
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
Month lastMonth = quarter.lastMonth();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("lastMonth: {}", lastMonth);
|
|
|
|
|
assertEquals(Month.JUNE, lastMonth);
|
|
|
|
|
|
|
|
|
|
assertEquals(lastMonthValue, lastMonth.getValue());
|
|
|
|
|
|
|
|
|
|
// ==========
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
MonthDay startMonthDay = quarter.firstMonthDay();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("startMonthDay: {}", startMonthDay);
|
|
|
|
|
assertEquals(startMonthDay, MonthDay.of(4, 1));
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
MonthDay lastMonthDay = quarter.lastMonthDay();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("lastMonthDay: {}", lastMonthDay);
|
|
|
|
|
assertEquals(lastMonthDay, MonthDay.of(6, 30));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
void testQ3() {
|
|
|
|
|
Quarter quarter = Quarter.of(3);
|
|
|
|
|
assertSame(Quarter.Q3, quarter);
|
2024-08-26 10:24:07 +08:00
|
|
|
assertSame(quarter, Quarter.valueOf("Q3"));
|
2024-08-20 00:42:38 +08:00
|
|
|
assertEquals(3, quarter.getValue());
|
2024-08-26 10:24:07 +08:00
|
|
|
assertEquals("Q3", quarter.name());
|
2024-08-20 00:42:38 +08:00
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
assertThrows(IllegalArgumentException.class, () -> {
|
|
|
|
|
Quarter.valueOf("Abc");
|
2024-08-20 00:42:38 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// ==========
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
int startMonthValue = quarter.firstMonthValue();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("startMonthValue: {}", startMonthValue);
|
|
|
|
|
assertEquals(7, startMonthValue);
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
Month startMonth = quarter.firstMonth();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("startMonth: {}", startMonth);
|
|
|
|
|
assertEquals(Month.JULY, startMonth);
|
|
|
|
|
|
|
|
|
|
assertEquals(startMonthValue, startMonth.getValue());
|
|
|
|
|
|
|
|
|
|
// ==========
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
int lastMonthValue = quarter.lastMonthValue();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("lastMonthValue: {}", lastMonthValue);
|
|
|
|
|
assertEquals(9, lastMonthValue);
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
Month lastMonth = quarter.lastMonth();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("lastMonth: {}", lastMonth);
|
|
|
|
|
assertEquals(Month.SEPTEMBER, lastMonth);
|
|
|
|
|
|
|
|
|
|
assertEquals(lastMonthValue, lastMonth.getValue());
|
|
|
|
|
|
|
|
|
|
// ==========
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
MonthDay startMonthDay = quarter.firstMonthDay();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("startMonthDay: {}", startMonthDay);
|
|
|
|
|
assertEquals(startMonthDay, MonthDay.of(7, 1));
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
MonthDay lastMonthDay = quarter.lastMonthDay();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("lastMonthDay: {}", lastMonthDay);
|
|
|
|
|
assertEquals(lastMonthDay, MonthDay.of(9, 30));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
void testQ4() {
|
|
|
|
|
Quarter quarter = Quarter.of(4);
|
|
|
|
|
assertSame(Quarter.Q4, quarter);
|
2024-08-26 10:24:07 +08:00
|
|
|
assertSame(quarter, Quarter.valueOf("Q4"));
|
2024-08-20 00:42:38 +08:00
|
|
|
assertEquals(4, quarter.getValue());
|
2024-08-26 10:24:07 +08:00
|
|
|
assertEquals("Q4", quarter.name());
|
2024-08-20 00:42:38 +08:00
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
assertThrows(IllegalArgumentException.class, () -> {
|
|
|
|
|
Quarter.valueOf("Q5");
|
2024-08-20 00:42:38 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// ==========
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
int startMonthValue = quarter.firstMonthValue();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("startMonthValue: {}", startMonthValue);
|
|
|
|
|
assertEquals(10, startMonthValue);
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
Month startMonth = quarter.firstMonth();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("startMonth: {}", startMonth);
|
|
|
|
|
assertEquals(Month.OCTOBER, startMonth);
|
|
|
|
|
|
|
|
|
|
assertEquals(startMonthValue, startMonth.getValue());
|
|
|
|
|
|
|
|
|
|
// ==========
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
int lastMonthValue = quarter.lastMonthValue();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("lastMonthValue: {}", lastMonthValue);
|
|
|
|
|
assertEquals(12, lastMonthValue);
|
2024-08-26 10:24:07 +08:00
|
|
|
Month lastMonth = quarter.lastMonth();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("lastMonth: {}", lastMonth);
|
|
|
|
|
assertEquals(Month.DECEMBER, lastMonth);
|
|
|
|
|
|
|
|
|
|
assertEquals(lastMonthValue, lastMonth.getValue());
|
|
|
|
|
|
|
|
|
|
// ==========
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
MonthDay startMonthDay = quarter.firstMonthDay();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("startMonthDay: {}", startMonthDay);
|
|
|
|
|
assertEquals(startMonthDay, MonthDay.of(10, 1));
|
|
|
|
|
|
2024-08-26 10:24:07 +08:00
|
|
|
MonthDay lastMonthDay = quarter.lastMonthDay();
|
2024-08-20 00:42:38 +08:00
|
|
|
log.info("lastMonthDay: {}", lastMonthDay);
|
|
|
|
|
assertEquals(lastMonthDay, MonthDay.of(12, 31));
|
|
|
|
|
}
|
|
|
|
|
}
|