2
* Copyright 2001-2005 Stephen Colebourne
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
8
* http://www.apache.org/licenses/LICENSE-2.0
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
16
package org.joda.time.format;
18
import junit.framework.TestCase;
19
import junit.framework.TestSuite;
21
import org.joda.time.DateTime;
22
import org.joda.time.DateTimeFieldType;
25
* This class is a Junit unit test for DateTimeFormatterBuilder.
27
* @author Stephen Colebourne
28
* @author Brian S O'Neill
30
public class TestDateTimeFormatterBuilder extends TestCase {
32
public static void main(String[] args) {
33
junit.textui.TestRunner.run(suite());
36
public static TestSuite suite() {
37
return new TestSuite(TestDateTimeFormatterBuilder.class);
40
public TestDateTimeFormatterBuilder(String name) {
44
protected void setUp() throws Exception {
47
protected void tearDown() throws Exception {
50
//-----------------------------------------------------------------------
51
public void test_toFormatter() {
52
DateTimeFormatterBuilder bld = new DateTimeFormatterBuilder();
56
} catch (UnsupportedOperationException ex) {}
57
bld.appendLiteral('X');
58
assertNotNull(bld.toFormatter());
61
public void test_toPrinter() {
62
DateTimeFormatterBuilder bld = new DateTimeFormatterBuilder();
66
} catch (UnsupportedOperationException ex) {}
67
bld.appendLiteral('X');
68
assertNotNull(bld.toPrinter());
71
public void test_toParser() {
72
DateTimeFormatterBuilder bld = new DateTimeFormatterBuilder();
76
} catch (UnsupportedOperationException ex) {}
77
bld.appendLiteral('X');
78
assertNotNull(bld.toParser());
81
//-----------------------------------------------------------------------
82
public void test_canBuildFormatter() {
83
DateTimeFormatterBuilder bld = new DateTimeFormatterBuilder();
84
assertEquals(false, bld.canBuildFormatter());
85
bld.appendLiteral('X');
86
assertEquals(true, bld.canBuildFormatter());
89
public void test_canBuildPrinter() {
90
DateTimeFormatterBuilder bld = new DateTimeFormatterBuilder();
91
assertEquals(false, bld.canBuildPrinter());
92
bld.appendLiteral('X');
93
assertEquals(true, bld.canBuildPrinter());
96
public void test_canBuildParser() {
97
DateTimeFormatterBuilder bld = new DateTimeFormatterBuilder();
98
assertEquals(false, bld.canBuildParser());
99
bld.appendLiteral('X');
100
assertEquals(true, bld.canBuildParser());
103
//-----------------------------------------------------------------------
104
public void test_append_Formatter() {
105
DateTimeFormatterBuilder bld = new DateTimeFormatterBuilder();
106
bld.appendLiteral('Y');
107
DateTimeFormatter f = bld.toFormatter();
109
DateTimeFormatterBuilder bld2 = new DateTimeFormatterBuilder();
110
bld2.appendLiteral('X');
112
bld2.appendLiteral('Z');
113
assertEquals("XYZ", bld2.toFormatter().print(0L));
116
//-----------------------------------------------------------------------
117
public void test_append_Printer() {
118
DateTimeFormatterBuilder bld = new DateTimeFormatterBuilder();
119
bld.appendLiteral('Y');
120
DateTimePrinter p = bld.toPrinter();
122
DateTimeFormatterBuilder bld2 = new DateTimeFormatterBuilder();
123
bld2.appendLiteral('X');
125
bld2.appendLiteral('Z');
126
assertEquals("XYZ", bld2.toFormatter().print(0L));
129
//-----------------------------------------------------------------------
130
public void test_appendFixedDecimal() {
131
DateTimeFormatterBuilder bld = new DateTimeFormatterBuilder();
132
bld.appendFixedDecimal(DateTimeFieldType.year(), 4);
133
DateTimeFormatter f = bld.toFormatter();
135
assertEquals("2007", f.print(new DateTime("2007-01-01")));
136
assertEquals("0123", f.print(new DateTime("123-01-01")));
137
assertEquals("0001", f.print(new DateTime("1-2-3")));
138
assertEquals("99999", f.print(new DateTime("99999-2-3")));
139
assertEquals("-0099", f.print(new DateTime("-99-2-3")));
140
assertEquals("0000", f.print(new DateTime("0-2-3")));
142
assertEquals(2001, f.parseDateTime("2001").getYear());
144
f.parseDateTime("-2001");
146
} catch (IllegalArgumentException e) {
149
f.parseDateTime("200");
151
} catch (IllegalArgumentException e) {
154
f.parseDateTime("20016");
156
} catch (IllegalArgumentException e) {
159
bld = new DateTimeFormatterBuilder();
160
bld.appendFixedDecimal(DateTimeFieldType.hourOfDay(), 2);
161
bld.appendLiteral(':');
162
bld.appendFixedDecimal(DateTimeFieldType.minuteOfHour(), 2);
163
bld.appendLiteral(':');
164
bld.appendFixedDecimal(DateTimeFieldType.secondOfMinute(), 2);
165
f = bld.toFormatter();
167
assertEquals("01:02:34", f.print(new DateTime("T1:2:34")));
169
DateTime dt = f.parseDateTime("01:02:34");
170
assertEquals(1, dt.getHourOfDay());
171
assertEquals(2, dt.getMinuteOfHour());
172
assertEquals(34, dt.getSecondOfMinute());
175
f.parseDateTime("0145:02:34");
177
} catch (IllegalArgumentException e) {
180
f.parseDateTime("01:0:34");
182
} catch (IllegalArgumentException e) {
186
//-----------------------------------------------------------------------
187
public void test_appendFixedSignedDecimal() {
188
DateTimeFormatterBuilder bld = new DateTimeFormatterBuilder();
189
bld.appendFixedSignedDecimal(DateTimeFieldType.year(), 4);
190
DateTimeFormatter f = bld.toFormatter();
192
assertEquals("2007", f.print(new DateTime("2007-01-01")));
193
assertEquals("0123", f.print(new DateTime("123-01-01")));
194
assertEquals("0001", f.print(new DateTime("1-2-3")));
195
assertEquals("99999", f.print(new DateTime("99999-2-3")));
196
assertEquals("-0099", f.print(new DateTime("-99-2-3")));
197
assertEquals("0000", f.print(new DateTime("0-2-3")));
199
assertEquals(2001, f.parseDateTime("2001").getYear());
200
assertEquals(-2001, f.parseDateTime("-2001").getYear());
201
assertEquals(2001, f.parseDateTime("+2001").getYear());
203
f.parseDateTime("20016");
205
} catch (IllegalArgumentException e) {