📄 segmentedtimelinetests2.java
字号:
/**
* Test 6 checks that 9am on Sunday 28 March 2004 converts to the timeline
* value and back again correctly. Note that Saturday and Sunday are
* excluded from the timeline, so we expect the value to map to 9am on
* Monday 29 March 2004. This is during daylight saving.
*/
public void test6() {
Calendar cal = Calendar.getInstance(Locale.UK);
cal.set(Calendar.YEAR, 2004);
cal.set(Calendar.MONTH, Calendar.MARCH);
cal.set(Calendar.DAY_OF_MONTH, 28);
cal.set(Calendar.HOUR_OF_DAY, 9);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date date = cal.getTime();
SegmentedTimeline timeline = getTimeline();
long value = timeline.toTimelineValue(date);
long ms = timeline.toMillisecond(value);
Calendar cal2 = Calendar.getInstance(Locale.UK);
cal2.setTime(new Date(ms));
Date reverted = cal2.getTime();
Calendar expectedReverted = Calendar.getInstance(Locale.UK);
expectedReverted.set(Calendar.YEAR, 2004);
expectedReverted.set(Calendar.MONTH, Calendar.MARCH);
expectedReverted.set(Calendar.DAY_OF_MONTH, 29);
expectedReverted.set(Calendar.HOUR_OF_DAY, 9);
expectedReverted.set(Calendar.MINUTE, 0);
expectedReverted.set(Calendar.SECOND, 0);
expectedReverted.set(Calendar.MILLISECOND, 0);
assertTrue(
"test6", value == (900000 * 34 * 2)
&& expectedReverted.getTime().getTime() == reverted.getTime()
);
}
/**
* Test 7 checks 9am Monday 29 March 2004 converts to a timeline value and
* back again correctly. This is during Daylight Saving.
*/
public void test7() {
Calendar cal = Calendar.getInstance(Locale.UK);
cal.set(Calendar.YEAR, 2004);
cal.set(Calendar.MONTH, Calendar.MARCH);
cal.set(Calendar.DAY_OF_MONTH, 29);
cal.set(Calendar.HOUR_OF_DAY, 9);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date date = cal.getTime();
SegmentedTimeline timeline = getTimeline();
long value = timeline.toTimelineValue(date);
long ms = timeline.toMillisecond(value);
Calendar cal2 = Calendar.getInstance(Locale.UK);
cal2.setTime(new Date(ms));
Date reverted = cal2.getTime();
Calendar expectedReverted = Calendar.getInstance();
expectedReverted.set(Calendar.YEAR, 2004);
expectedReverted.set(Calendar.MONTH, Calendar.MARCH);
expectedReverted.set(Calendar.DAY_OF_MONTH, 29);
expectedReverted.set(Calendar.HOUR_OF_DAY, 9);
expectedReverted.set(Calendar.MINUTE, 0);
expectedReverted.set(Calendar.SECOND, 0);
expectedReverted.set(Calendar.MILLISECOND, 0);
assertTrue(
"test7", value == (900000 * 34 * 2)
&& expectedReverted.getTime().getTime() == reverted.getTime()
);
}
/**
* Test 8.
*/
public void test8() {
Calendar cal = Calendar.getInstance(Locale.UK);
cal.set(Calendar.YEAR, 2004);
cal.set(Calendar.MONTH, Calendar.MARCH);
cal.set(Calendar.DAY_OF_MONTH, 29);
cal.set(Calendar.HOUR_OF_DAY, 10);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date date = cal.getTime();
SegmentedTimeline timeline = getTimeline();
// Add exception in included segments
cal.set(Calendar.YEAR, 2004);
cal.set(Calendar.MONTH, Calendar.MARCH);
cal.set(Calendar.DAY_OF_MONTH, 29);
cal.set(Calendar.HOUR_OF_DAY, 9);
cal.set(Calendar.MINUTE, 15);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
timeline.addException(cal.getTime());
long value = timeline.toTimelineValue(date);
long ms = timeline.toMillisecond(value);
Calendar cal2 = Calendar.getInstance(Locale.UK);
cal2.setTime(new Date(ms));
Date reverted = cal2.getTime();
Calendar expectedReverted = Calendar.getInstance();
expectedReverted.set(Calendar.YEAR, 2004);
expectedReverted.set(Calendar.MONTH, Calendar.MARCH);
expectedReverted.set(Calendar.DAY_OF_MONTH, 29);
expectedReverted.set(Calendar.HOUR_OF_DAY, 10);
expectedReverted.set(Calendar.MINUTE, 0);
expectedReverted.set(Calendar.SECOND, 0);
expectedReverted.set(Calendar.MILLISECOND, 0);
assertTrue(
"test8", value == (900000 * 34 * 2 + 900000 * (4 - 1))
&& expectedReverted.getTime().getTime() == reverted.getTime()
);
}
/**
* Creates a timeline from 9am on Thursday 25 March 2004 to 5pm on
* Tuesday 30 March 2004, for the UK locale.
*
* @return A timeline.
*/
private SegmentedTimeline getTimeline() {
Calendar cal = Calendar.getInstance(Locale.UK);
cal.set(Calendar.YEAR, 2004);
cal.set(Calendar.MONTH, Calendar.MARCH);
cal.set(Calendar.DAY_OF_MONTH, 25);
cal.set(Calendar.HOUR_OF_DAY, 9);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date from = cal.getTime();
cal = Calendar.getInstance(Locale.UK);
cal.set(Calendar.YEAR, 2004);
cal.set(Calendar.MONTH, Calendar.MARCH);
cal.set(Calendar.DAY_OF_MONTH, 30);
cal.set(Calendar.HOUR_OF_DAY, 17);
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date to = cal.getTime();
return getTimeline(from, to);
}
/**
* Returns a segmented timeline for 15 minute segments, Monday to Friday
* only, between 9am and 5pm. The UK locale is used.
*
* @param start the start date.
* @param end the end date.
*
* @return The timeline.
*/
private SegmentedTimeline getTimeline(Date start, Date end) {
Calendar cal = Calendar.getInstance(Locale.UK);
cal.set(Calendar.YEAR, 1970);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 9);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date open = cal.getTime();
cal = Calendar.getInstance(Locale.UK);
cal.set(Calendar.YEAR, 1970);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 17);
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date close = cal.getTime();
SegmentedTimeline result = null;
// Create a segmented time line (segment size : 15 minutes)
long quarterHourCount = (close.getTime() - open.getTime())
/ SegmentedTimeline.FIFTEEN_MINUTE_SEGMENT_SIZE;
long totalQuarterHourCount = SegmentedTimeline.DAY_SEGMENT_SIZE
/ SegmentedTimeline.FIFTEEN_MINUTE_SEGMENT_SIZE;
result = new SegmentedTimeline(
SegmentedTimeline.FIFTEEN_MINUTE_SEGMENT_SIZE,
(int) quarterHourCount,
(int) (totalQuarterHourCount - quarterHourCount)
);
result.setAdjustForDaylightSaving(true);
// Set start time
result.setStartTime(start.getTime());
// Saturday and Sundays are non business hours
result.setBaseTimeline(
SegmentedTimeline.newMondayThroughFridayTimeline()
);
/* PUT exclusions in test */
if (start != null && end != null) {
result.addBaseTimelineExclusions(start.getTime(), end.getTime());
}
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -