fix Range

This commit is contained in:
Looly
2021-06-29 21:15:19 +08:00
parent 3ca4063ea5
commit 721fd16f4d
4 changed files with 89 additions and 76 deletions

View File

@@ -19,7 +19,6 @@ import java.util.Date;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.TimeZone;
@@ -681,47 +680,6 @@ public class DateUtilTest {
Assert.assertEquals(Week.WEDNESDAY, week);
}
@Test
public void rangeTest() {
DateTime start = DateUtil.parse("2017-01-01");
DateTime end = DateUtil.parse("2017-01-03");
// 测试包含开始和结束情况下步进为1的情况
DateRange range = DateUtil.range(start, end, DateField.DAY_OF_YEAR);
Assert.assertEquals(range.next(), DateUtil.parse("2017-01-01"));
Assert.assertEquals(range.next(), DateUtil.parse("2017-01-02"));
Assert.assertEquals(range.next(), DateUtil.parse("2017-01-03"));
try {
range.next();
Assert.fail("已超过边界,下一个元素不应该存在!");
} catch (NoSuchElementException ignored) {
}
// 测试多步进的情况
range = new DateRange(start, end, DateField.DAY_OF_YEAR, 2);
Assert.assertEquals(range.next(), DateUtil.parse("2017-01-01"));
Assert.assertEquals(range.next(), DateUtil.parse("2017-01-03"));
// 测试不包含开始结束时间的情况
range = new DateRange(start, end, DateField.DAY_OF_YEAR, 1, false, false);
Assert.assertEquals(range.next(), DateUtil.parse("2017-01-02"));
try {
range.next();
Assert.fail("不包含结束时间情况下,下一个元素不应该存在!");
} catch (NoSuchElementException ignored) {
}
}
@Test
public void rangeToListTest() {
DateTime start = DateUtil.parse("2017-01-01");
DateTime end = DateUtil.parse("2017-01-31");
List<DateTime> rangeToList = DateUtil.rangeToList(start, end, DateField.DAY_OF_YEAR);
Assert.assertEquals(rangeToList.get(0), DateUtil.parse("2017-01-01"));
Assert.assertEquals(rangeToList.get(1), DateUtil.parse("2017-01-02"));
}
@Test
public void compareTest() {
Date date1 = DateUtil.parse("2021-04-13 23:59:59.999");

View File

@@ -7,6 +7,9 @@ import cn.hutool.core.date.DateUtil;
import org.junit.Assert;
import org.junit.Test;
import java.util.List;
import java.util.NoSuchElementException;
/**
* {@link Range} 单元测试
* @author Looly
@@ -57,4 +60,53 @@ public class RangeTest {
Assert.assertEquals(Integer.valueOf(1), range.next());
Assert.assertFalse(range.hasNext());
}
@Test
public void rangeByStepTest() {
DateTime start = DateUtil.parse("2017-01-01");
DateTime end = DateUtil.parse("2017-01-03");
// 测试包含开始和结束情况下步进为1的情况
DateRange range = DateUtil.range(start, end, DateField.DAY_OF_YEAR);
Assert.assertEquals(range.next(), DateUtil.parse("2017-01-01"));
Assert.assertEquals(range.next(), DateUtil.parse("2017-01-02"));
Assert.assertEquals(range.next(), DateUtil.parse("2017-01-03"));
try {
range.next();
Assert.fail("已超过边界,下一个元素不应该存在!");
} catch (NoSuchElementException ignored) {
}
// 测试多步进的情况
range = new DateRange(start, end, DateField.DAY_OF_YEAR, 2);
Assert.assertEquals(DateUtil.parse("2017-01-01"), range.next());
Assert.assertEquals(DateUtil.parse("2017-01-03"), range.next());
}
@Test
public void rangeDayOfYearTest(){
DateTime start = DateUtil.parse("2017-01-01");
DateTime end = DateUtil.parse("2017-01-05");
// 测试不包含开始结束时间的情况
DateRange range = new DateRange(start, end, DateField.DAY_OF_YEAR, 1, false, false);
Assert.assertEquals(DateUtil.parse("2017-01-02"), range.next());
Assert.assertEquals(DateUtil.parse("2017-01-03"), range.next());
Assert.assertEquals(DateUtil.parse("2017-01-04"), range.next());
try {
range.next();
Assert.fail("不包含结束时间情况下,下一个元素不应该存在!");
} catch (NoSuchElementException ignored) {
}
}
@Test
public void rangeToListTest() {
DateTime start = DateUtil.parse("2017-01-01");
DateTime end = DateUtil.parse("2017-01-31");
List<DateTime> rangeToList = DateUtil.rangeToList(start, end, DateField.DAY_OF_YEAR);
Assert.assertEquals(DateUtil.parse("2017-01-01"), rangeToList.get(0));
Assert.assertEquals(DateUtil.parse("2017-01-02"), rangeToList.get(1));
}
}