1 package ch.qos.logback.core.util;
2
3 import static org.junit.Assert.assertEquals;
4
5 import java.util.Calendar;
6 import java.util.Date;
7 import java.util.TimeZone;
8
9 import org.junit.Test;
10
11 public class TimeUtilTest {
12
13 @Test
14 public void testSecond() {
15
16 long now = 1164042317522L;
17
18 long expected = 1164042318000L;
19 long computed = TimeUtil.computeStartOfNextSecond(now);
20 assertEquals(expected - now, 478);
21 assertEquals(expected, computed);
22 }
23
24 @Test
25 public void testMinute() {
26
27 long now = 1164042317522L;
28
29 long expected = 1164042360000L;
30
31 long computed = TimeUtil.computeStartOfNextMinute(now);
32 assertEquals(expected - now, 1000 * 42 + 478);
33 assertEquals(expected, computed);
34 }
35
36 @Test
37 public void testHour() {
38
39 long now = 1164045917522L;
40 now = correctBasedOnTimeZone(now);
41
42 long expected = 1164049200000L;
43 expected = correctBasedOnTimeZone(expected);
44
45 long computed = TimeUtil.computeStartOfNextHour(now);
46 assertEquals(expected - now, 1000 * (42 + 60 * 54) + 478);
47 assertEquals(expected, computed);
48 }
49
50 @Test
51 public void testDay() {
52
53 long now = 1164045917522L;
54 now = correctBasedOnTimeZone(now);
55
56 long expected = 1164067200000L;
57 expected = correctBasedOnTimeZone(expected);
58 long computed = TimeUtil.computeStartOfNextDay(now);
59
60 assertEquals(expected - now, 1000 * (3600 * 5 + 60 * 54 + 42) + 478);
61 assertEquals(expected, computed);
62 }
63
64 @Test
65 public void testWeek() {
66
67 long now = 1164045917522L;
68 now = correctBasedOnTimeZone(now);
69
70 long expected = 1164499200000L;
71 expected = correctBasedOnTimeZone(expected);
72
73 Calendar cal = Calendar.getInstance();
74 cal.setTime(new Date(now));
75
76 int dayOffset = cal.getFirstDayOfWeek() - Calendar.SUNDAY;
77 if (dayOffset != 0) {
78 expected += 24L * 3600 * 1000 * (cal.getFirstDayOfWeek() - Calendar.SUNDAY);
79 }
80
81 long computed = TimeUtil.computeStartOfNextWeek(now);
82
83
84
85 assertEquals(expected - now,
86 1000 * (3600 * (5 + 24 * (5 + dayOffset)) + 60 * 54 + 42) + 478);
87 assertEquals(expected, computed);
88 }
89
90 @Test
91 public void testMonth() {
92
93 long now = 1164045917522L;
94 now = correctBasedOnTimeZone(now);
95
96 long expected = 1164931200000L;
97 expected = correctBasedOnTimeZone(expected);
98
99 long computed = TimeUtil.computeStartOfNextMonth(now);
100 assertEquals(expected - now,
101 1000 * (3600 * (5 + 24 * 10) + 60 * 54 + 42) + 478);
102 assertEquals(expected, computed);
103 }
104
105 private long correctBasedOnTimeZone(long gmtLong) {
106 int offset = TimeZone.getDefault().getRawOffset();
107 return gmtLong - offset;
108 }
109
110 }