1
2
3
4
5
6
7
8
9
10
11 package org.eclipse.jgit.util;
12
13 import java.text.ParseException;
14 import java.text.SimpleDateFormat;
15 import java.util.Calendar;
16 import java.util.Date;
17 import java.util.GregorianCalendar;
18
19 import org.eclipse.jgit.junit.MockSystemReader;
20 import org.junit.After;
21 import org.junit.Assert;
22 import org.junit.Before;
23 import org.junit.Test;
24
25 public class GitDateParserTest {
26 @Before
27 public void setUp() {
28 MockSystemReader mockSystemReader = new MockSystemReader();
29 SystemReader.setInstance(mockSystemReader);
30 }
31
32 @After
33 public void tearDown() {
34 SystemReader.setInstance(null);
35 }
36
37 @Test
38 public void yesterday() throws ParseException {
39 GregorianCalendar cal = new GregorianCalendar(SystemReader
40 .getInstance().getTimeZone(), SystemReader.getInstance()
41 .getLocale());
42 Date parse = GitDateParser.parse("yesterday", cal, SystemReader
43 .getInstance().getLocale());
44 cal.add(Calendar.DATE, -1);
45 cal.set(Calendar.HOUR_OF_DAY, 0);
46 cal.set(Calendar.MINUTE, 0);
47 cal.set(Calendar.SECOND, 0);
48 cal.set(Calendar.MILLISECOND, 0);
49 cal.set(Calendar.MILLISECOND, 0);
50 Assert.assertEquals(cal.getTime(), parse);
51 }
52
53 @Test
54 public void never() throws ParseException {
55 GregorianCalendar cal = new GregorianCalendar(SystemReader
56 .getInstance().getTimeZone(), SystemReader.getInstance()
57 .getLocale());
58 Date parse = GitDateParser.parse("never", cal, SystemReader
59 .getInstance().getLocale());
60 Assert.assertEquals(GitDateParser.NEVER, parse);
61 parse = GitDateParser.parse("never", null);
62 Assert.assertEquals(GitDateParser.NEVER, parse);
63 }
64
65 @Test
66 public void now() throws ParseException {
67 String dateStr = "2007-02-21 15:35:00 +0100";
68 Date refDate = SystemReader.getInstance()
69 .getSimpleDateFormat("yyyy-MM-dd HH:mm:ss Z").parse(dateStr);
70
71 GregorianCalendar cal = new GregorianCalendar(SystemReader
72 .getInstance().getTimeZone(), SystemReader.getInstance()
73 .getLocale());
74 cal.setTime(refDate);
75
76 Date parse = GitDateParser.parse("now", cal, SystemReader.getInstance()
77 .getLocale());
78 Assert.assertEquals(refDate, parse);
79 long t1 = SystemReader.getInstance().getCurrentTime();
80 parse = GitDateParser.parse("now", null);
81 long t2 = SystemReader.getInstance().getCurrentTime();
82 Assert.assertTrue(t2 >= parse.getTime() && parse.getTime() >= t1);
83 }
84
85 @Test
86 public void weeksAgo() throws ParseException {
87 String dateStr = "2007-02-21 15:35:00 +0100";
88 SimpleDateFormat df = SystemReader.getInstance()
89 .getSimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
90 Date refDate = df.parse(dateStr);
91 GregorianCalendar cal = new GregorianCalendar(SystemReader
92 .getInstance().getTimeZone(), SystemReader.getInstance()
93 .getLocale());
94 cal.setTime(refDate);
95
96 Date parse = GitDateParser.parse("2 weeks ago", cal, SystemReader
97 .getInstance().getLocale());
98 Assert.assertEquals(df.parse("2007-02-07 15:35:00 +0100"), parse);
99 }
100
101 @Test
102 public void daysAndWeeksAgo() throws ParseException {
103 String dateStr = "2007-02-21 15:35:00 +0100";
104 SimpleDateFormat df = SystemReader.getInstance().getSimpleDateFormat(
105 "yyyy-MM-dd HH:mm:ss Z");
106 Date refDate = df.parse(dateStr);
107 GregorianCalendar cal = new GregorianCalendar(SystemReader
108 .getInstance().getTimeZone(), SystemReader.getInstance()
109 .getLocale());
110 cal.setTime(refDate);
111
112 Date parse = GitDateParser.parse("2 weeks ago", cal, SystemReader.getInstance()
113 .getLocale());
114 Assert.assertEquals(df.parse("2007-02-07 15:35:00 +0100"), parse);
115 parse = GitDateParser.parse("3 days 2 weeks ago", cal);
116 Assert.assertEquals(df.parse("2007-02-04 15:35:00 +0100"), parse);
117 parse = GitDateParser.parse("3.day.2.week.ago", cal);
118 Assert.assertEquals(df.parse("2007-02-04 15:35:00 +0100"), parse);
119 }
120
121 @Test
122 public void iso() throws ParseException {
123 String dateStr = "2007-02-21 15:35:00 +0100";
124 Date exp = SystemReader.getInstance()
125 .getSimpleDateFormat("yyyy-MM-dd HH:mm:ss Z").parse(dateStr);
126 Date parse = GitDateParser.parse(dateStr, null, SystemReader
127 .getInstance().getLocale());
128 Assert.assertEquals(exp, parse);
129 }
130
131 @Test
132 public void rfc() throws ParseException {
133 String dateStr = "Wed, 21 Feb 2007 15:35:00 +0100";
134 Date exp = SystemReader.getInstance()
135 .getSimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z")
136 .parse(dateStr);
137 Date parse = GitDateParser.parse(dateStr, null, SystemReader
138 .getInstance().getLocale());
139 Assert.assertEquals(exp, parse);
140 }
141
142 @Test
143 public void shortFmt() throws ParseException {
144 String dateStr = "2007-02-21";
145 Date exp = SystemReader.getInstance().getSimpleDateFormat("yyyy-MM-dd")
146 .parse(dateStr);
147 Date parse = GitDateParser.parse(dateStr, null, SystemReader
148 .getInstance().getLocale());
149 Assert.assertEquals(exp, parse);
150 }
151
152 @Test
153 public void shortWithDots() throws ParseException {
154 String dateStr = "2007.02.21";
155 Date exp = SystemReader.getInstance().getSimpleDateFormat("yyyy.MM.dd")
156 .parse(dateStr);
157 Date parse = GitDateParser.parse(dateStr, null, SystemReader
158 .getInstance().getLocale());
159 Assert.assertEquals(exp, parse);
160 }
161
162 @Test
163 public void shortWithSlash() throws ParseException {
164 String dateStr = "02/21/2007";
165 Date exp = SystemReader.getInstance().getSimpleDateFormat("MM/dd/yyyy")
166 .parse(dateStr);
167 Date parse = GitDateParser.parse(dateStr, null, SystemReader
168 .getInstance().getLocale());
169 Assert.assertEquals(exp, parse);
170 }
171
172 @Test
173 public void shortWithDotsReverse() throws ParseException {
174 String dateStr = "21.02.2007";
175 Date exp = SystemReader.getInstance().getSimpleDateFormat("dd.MM.yyyy")
176 .parse(dateStr);
177 Date parse = GitDateParser.parse(dateStr, null, SystemReader
178 .getInstance().getLocale());
179 Assert.assertEquals(exp, parse);
180 }
181
182 @Test
183 public void defaultFmt() throws ParseException {
184 String dateStr = "Wed Feb 21 15:35:00 2007 +0100";
185 Date exp = SystemReader.getInstance()
186 .getSimpleDateFormat("EEE MMM dd HH:mm:ss yyyy Z")
187 .parse(dateStr);
188 Date parse = GitDateParser.parse(dateStr, null, SystemReader
189 .getInstance().getLocale());
190 Assert.assertEquals(exp, parse);
191 }
192
193 @Test
194 public void local() throws ParseException {
195 String dateStr = "Wed Feb 21 15:35:00 2007";
196 Date exp = SystemReader.getInstance()
197 .getSimpleDateFormat("EEE MMM dd HH:mm:ss yyyy").parse(dateStr);
198 Date parse = GitDateParser.parse(dateStr, null, SystemReader
199 .getInstance().getLocale());
200 Assert.assertEquals(exp, parse);
201 }
202 }