test/java/time/tck/java/time/format/TCKDateTimeFormatterBuilder.java
Print this page
*** 57,85 ****
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package tck.java.time.format;
- import java.time.LocalDate;
- import java.time.ZoneOffset;
- import java.time.format.*;
-
import static java.time.temporal.ChronoField.DAY_OF_MONTH;
- import static java.time.temporal.ChronoField.DAY_OF_WEEK;
import static java.time.temporal.ChronoField.MINUTE_OF_HOUR;
import static java.time.temporal.ChronoField.MONTH_OF_YEAR;
import static java.time.temporal.ChronoField.YEAR;
import static org.testng.Assert.assertEquals;
! import java.text.ParsePosition;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
- import java.time.format.DateTimeBuilder;
- import java.time.temporal.Temporal;
-
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
--- 57,84 ----
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package tck.java.time.format;
import static java.time.temporal.ChronoField.DAY_OF_MONTH;
import static java.time.temporal.ChronoField.MINUTE_OF_HOUR;
import static java.time.temporal.ChronoField.MONTH_OF_YEAR;
import static java.time.temporal.ChronoField.YEAR;
import static org.testng.Assert.assertEquals;
! import java.time.LocalDate;
! import java.time.YearMonth;
! import java.time.ZoneOffset;
! import java.time.format.DateTimeFormatter;
! import java.time.format.DateTimeFormatterBuilder;
! import java.time.format.SignStyle;
! import java.time.format.TextStyle;
! import java.time.temporal.Temporal;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
*** 88,407 ****
@Test
public class TCKDateTimeFormatterBuilder {
private DateTimeFormatterBuilder builder;
! @BeforeMethod(groups={"tck"})
public void setUp() {
builder = new DateTimeFormatterBuilder();
}
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
public void test_toFormatter_empty() throws Exception {
DateTimeFormatter f = builder.toFormatter();
assertEquals(f.toString(), "");
}
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_parseCaseSensitive() throws Exception {
! builder.parseCaseSensitive();
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "ParseCaseSensitive(true)");
! }
!
! @Test(groups={"tck"})
! public void test_parseCaseInsensitive() throws Exception {
! builder.parseCaseInsensitive();
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "ParseCaseSensitive(false)");
! }
!
! //-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_parseStrict() throws Exception {
! builder.parseStrict();
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "ParseStrict(true)");
! }
!
! @Test(groups={"tck"})
! public void test_parseLenient() throws Exception {
! builder.parseLenient();
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "ParseStrict(false)");
! }
!
! //-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_appendValue_1arg() throws Exception {
! builder.appendValue(DAY_OF_MONTH);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(DayOfMonth)");
! }
!
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendValue_1arg_null() throws Exception {
builder.appendValue(null);
}
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_appendValue_2arg() throws Exception {
! builder.appendValue(DAY_OF_MONTH, 3);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(DayOfMonth,3)");
! }
!
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendValue_2arg_null() throws Exception {
builder.appendValue(null, 3);
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendValue_2arg_widthTooSmall() throws Exception {
builder.appendValue(DAY_OF_MONTH, 0);
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendValue_2arg_widthTooBig() throws Exception {
builder.appendValue(DAY_OF_MONTH, 20);
}
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_appendValue_3arg() throws Exception {
! builder.appendValue(DAY_OF_MONTH, 2, 3, SignStyle.NORMAL);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(DayOfMonth,2,3,NORMAL)");
! }
!
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendValue_3arg_nullField() throws Exception {
builder.appendValue(null, 2, 3, SignStyle.NORMAL);
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendValue_3arg_minWidthTooSmall() throws Exception {
builder.appendValue(DAY_OF_MONTH, 0, 2, SignStyle.NORMAL);
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendValue_3arg_minWidthTooBig() throws Exception {
builder.appendValue(DAY_OF_MONTH, 20, 2, SignStyle.NORMAL);
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendValue_3arg_maxWidthTooSmall() throws Exception {
builder.appendValue(DAY_OF_MONTH, 2, 0, SignStyle.NORMAL);
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendValue_3arg_maxWidthTooBig() throws Exception {
builder.appendValue(DAY_OF_MONTH, 2, 20, SignStyle.NORMAL);
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendValue_3arg_maxWidthMinWidth() throws Exception {
builder.appendValue(DAY_OF_MONTH, 4, 2, SignStyle.NORMAL);
}
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendValue_3arg_nullSignStyle() throws Exception {
builder.appendValue(DAY_OF_MONTH, 2, 3, null);
}
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_appendValue_subsequent2_parse3() throws Exception {
! builder.appendValue(MONTH_OF_YEAR, 1, 2, SignStyle.NORMAL).appendValue(DAY_OF_MONTH, 2);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear,1,2,NORMAL)Value(DayOfMonth,2)");
! DateTimeBuilder cal = f.parseToBuilder("123", new ParsePosition(0));
! assertEquals(cal.getFieldValueMap().get(MONTH_OF_YEAR), Long.valueOf(1));
! assertEquals(cal.getFieldValueMap().get(DAY_OF_MONTH), Long.valueOf(23));
! }
!
! @Test(groups={"tck"})
! public void test_appendValue_subsequent2_parse4() throws Exception {
! builder.appendValue(MONTH_OF_YEAR, 1, 2, SignStyle.NORMAL).appendValue(DAY_OF_MONTH, 2);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear,1,2,NORMAL)Value(DayOfMonth,2)");
! DateTimeBuilder cal = f.parseToBuilder("0123", new ParsePosition(0));
! assertEquals(cal.getFieldValueMap().get(MONTH_OF_YEAR), Long.valueOf(1));
! assertEquals(cal.getFieldValueMap().get(DAY_OF_MONTH), Long.valueOf(23));
! }
!
! @Test(groups={"tck"})
! public void test_appendValue_subsequent2_parse5() throws Exception {
! builder.appendValue(MONTH_OF_YEAR, 1, 2, SignStyle.NORMAL).appendValue(DAY_OF_MONTH, 2).appendLiteral('4');
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear,1,2,NORMAL)Value(DayOfMonth,2)'4'");
! DateTimeBuilder cal = f.parseToBuilder("01234", new ParsePosition(0));
! assertEquals(cal.getFieldValueMap().get(MONTH_OF_YEAR), Long.valueOf(1));
! assertEquals(cal.getFieldValueMap().get(DAY_OF_MONTH), Long.valueOf(23));
! }
!
! @Test(groups={"tck"})
! public void test_appendValue_subsequent3_parse6() throws Exception {
! builder
! .appendValue(YEAR, 4, 10, SignStyle.EXCEEDS_PAD)
! .appendValue(MONTH_OF_YEAR, 2)
! .appendValue(DAY_OF_MONTH, 2);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(Year,4,10,EXCEEDS_PAD)Value(MonthOfYear,2)Value(DayOfMonth,2)");
! DateTimeBuilder cal = f.parseToBuilder("20090630", new ParsePosition(0));
! assertEquals(cal.getFieldValueMap().get(YEAR), Long.valueOf(2009));
! assertEquals(cal.getFieldValueMap().get(MONTH_OF_YEAR), Long.valueOf(6));
! assertEquals(cal.getFieldValueMap().get(DAY_OF_MONTH), Long.valueOf(30));
! }
!
! //-----------------------------------------------------------------------
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendValueReduced_null() throws Exception {
builder.appendValueReduced(null, 2, 2000);
}
- @Test(groups={"tck"})
- public void test_appendValueReduced() throws Exception {
- builder.appendValueReduced(YEAR, 2, 2000);
- DateTimeFormatter f = builder.toFormatter();
- assertEquals(f.toString(), "ReducedValue(Year,2,2000)");
- DateTimeBuilder cal = f.parseToBuilder("12", new ParsePosition(0));
- assertEquals(cal.getFieldValueMap().get(YEAR), Long.valueOf(2012));
- }
-
- @Test(groups={"tck"})
- public void test_appendValueReduced_subsequent_parse() throws Exception {
- builder.appendValue(MONTH_OF_YEAR, 1, 2, SignStyle.NORMAL).appendValueReduced(YEAR, 2, 2000);
- DateTimeFormatter f = builder.toFormatter();
- assertEquals(f.toString(), "Value(MonthOfYear,1,2,NORMAL)ReducedValue(Year,2,2000)");
- DateTimeBuilder cal = f.parseToBuilder("123", new ParsePosition(0));
- assertEquals(cal.getFieldValueMap().get(MONTH_OF_YEAR), Long.valueOf(1));
- assertEquals(cal.getFieldValueMap().get(YEAR), Long.valueOf(2023));
- }
-
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_appendFraction_4arg() throws Exception {
! builder.appendFraction(MINUTE_OF_HOUR, 1, 9, false);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Fraction(MinuteOfHour,1,9)");
! }
!
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendFraction_4arg_nullRule() throws Exception {
builder.appendFraction(null, 1, 9, false);
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendFraction_4arg_invalidRuleNotFixedSet() throws Exception {
builder.appendFraction(DAY_OF_MONTH, 1, 9, false);
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendFraction_4arg_minTooSmall() throws Exception {
builder.appendFraction(MINUTE_OF_HOUR, -1, 9, false);
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendFraction_4arg_minTooBig() throws Exception {
builder.appendFraction(MINUTE_OF_HOUR, 10, 9, false);
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendFraction_4arg_maxTooSmall() throws Exception {
builder.appendFraction(MINUTE_OF_HOUR, 0, -1, false);
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendFraction_4arg_maxTooBig() throws Exception {
builder.appendFraction(MINUTE_OF_HOUR, 1, 10, false);
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendFraction_4arg_maxWidthMinWidth() throws Exception {
builder.appendFraction(MINUTE_OF_HOUR, 9, 3, false);
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_appendText_1arg() throws Exception {
! builder.appendText(MONTH_OF_YEAR);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Text(MonthOfYear)");
! }
!
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendText_1arg_null() throws Exception {
builder.appendText(null);
}
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_appendText_2arg() throws Exception {
! builder.appendText(MONTH_OF_YEAR, TextStyle.SHORT);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Text(MonthOfYear,SHORT)");
! }
!
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendText_2arg_nullRule() throws Exception {
builder.appendText(null, TextStyle.SHORT);
}
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendText_2arg_nullStyle() throws Exception {
builder.appendText(MONTH_OF_YEAR, (TextStyle) null);
}
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_appendTextMap() throws Exception {
! Map<Long, String> map = new HashMap<Long, String>();
! map.put(1L, "JNY");
! map.put(2L, "FBY");
! map.put(3L, "MCH");
! map.put(4L, "APL");
! map.put(5L, "MAY");
! map.put(6L, "JUN");
! map.put(7L, "JLY");
! map.put(8L, "AGT");
! map.put(9L, "SPT");
! map.put(10L, "OBR");
! map.put(11L, "NVR");
! map.put(12L, "DBR");
! builder.appendText(MONTH_OF_YEAR, map);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Text(MonthOfYear)"); // TODO: toString should be different?
! }
!
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendTextMap_nullRule() throws Exception {
! builder.appendText(null, new HashMap<Long, String>());
}
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendTextMap_nullStyle() throws Exception {
builder.appendText(MONTH_OF_YEAR, (Map<Long, String>) null);
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
- @Test(groups={"tck"})
- public void test_appendOffsetId() throws Exception {
- builder.appendOffsetId();
- DateTimeFormatter f = builder.toFormatter();
- assertEquals(f.toString(), "Offset('Z',+HH:MM:ss)");
- }
-
@DataProvider(name="offsetPatterns")
Object[][] data_offsetPatterns() {
return new Object[][] {
{"+HH", 2, 0, 0, "+02"},
{"+HH", -2, 0, 0, "-02"},
--- 87,243 ----
@Test
public class TCKDateTimeFormatterBuilder {
private DateTimeFormatterBuilder builder;
! @BeforeMethod
public void setUp() {
builder = new DateTimeFormatterBuilder();
}
//-----------------------------------------------------------------------
! @Test
public void test_toFormatter_empty() throws Exception {
DateTimeFormatter f = builder.toFormatter();
assertEquals(f.toString(), "");
}
//-----------------------------------------------------------------------
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendValue_1arg_null() throws Exception {
builder.appendValue(null);
}
//-----------------------------------------------------------------------
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendValue_2arg_null() throws Exception {
builder.appendValue(null, 3);
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_appendValue_2arg_widthTooSmall() throws Exception {
builder.appendValue(DAY_OF_MONTH, 0);
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_appendValue_2arg_widthTooBig() throws Exception {
builder.appendValue(DAY_OF_MONTH, 20);
}
//-----------------------------------------------------------------------
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendValue_3arg_nullField() throws Exception {
builder.appendValue(null, 2, 3, SignStyle.NORMAL);
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_appendValue_3arg_minWidthTooSmall() throws Exception {
builder.appendValue(DAY_OF_MONTH, 0, 2, SignStyle.NORMAL);
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_appendValue_3arg_minWidthTooBig() throws Exception {
builder.appendValue(DAY_OF_MONTH, 20, 2, SignStyle.NORMAL);
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_appendValue_3arg_maxWidthTooSmall() throws Exception {
builder.appendValue(DAY_OF_MONTH, 2, 0, SignStyle.NORMAL);
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_appendValue_3arg_maxWidthTooBig() throws Exception {
builder.appendValue(DAY_OF_MONTH, 2, 20, SignStyle.NORMAL);
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_appendValue_3arg_maxWidthMinWidth() throws Exception {
builder.appendValue(DAY_OF_MONTH, 4, 2, SignStyle.NORMAL);
}
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendValue_3arg_nullSignStyle() throws Exception {
builder.appendValue(DAY_OF_MONTH, 2, 3, null);
}
//-----------------------------------------------------------------------
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendValueReduced_null() throws Exception {
builder.appendValueReduced(null, 2, 2000);
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendFraction_4arg_nullRule() throws Exception {
builder.appendFraction(null, 1, 9, false);
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_appendFraction_4arg_invalidRuleNotFixedSet() throws Exception {
builder.appendFraction(DAY_OF_MONTH, 1, 9, false);
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_appendFraction_4arg_minTooSmall() throws Exception {
builder.appendFraction(MINUTE_OF_HOUR, -1, 9, false);
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_appendFraction_4arg_minTooBig() throws Exception {
builder.appendFraction(MINUTE_OF_HOUR, 10, 9, false);
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_appendFraction_4arg_maxTooSmall() throws Exception {
builder.appendFraction(MINUTE_OF_HOUR, 0, -1, false);
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_appendFraction_4arg_maxTooBig() throws Exception {
builder.appendFraction(MINUTE_OF_HOUR, 1, 10, false);
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_appendFraction_4arg_maxWidthMinWidth() throws Exception {
builder.appendFraction(MINUTE_OF_HOUR, 9, 3, false);
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendText_1arg_null() throws Exception {
builder.appendText(null);
}
//-----------------------------------------------------------------------
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendText_2arg_nullRule() throws Exception {
builder.appendText(null, TextStyle.SHORT);
}
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendText_2arg_nullStyle() throws Exception {
builder.appendText(MONTH_OF_YEAR, (TextStyle) null);
}
//-----------------------------------------------------------------------
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendTextMap_nullRule() throws Exception {
! builder.appendText(null, new HashMap<>());
}
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendTextMap_nullStyle() throws Exception {
builder.appendText(MONTH_OF_YEAR, (Map<Long, String>) null);
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
@DataProvider(name="offsetPatterns")
Object[][] data_offsetPatterns() {
return new Object[][] {
{"+HH", 2, 0, 0, "+02"},
{"+HH", -2, 0, 0, "-02"},
*** 445,469 ****
{"+HH:MM:SS", 2, 0, 45, "+02:00:45"},
{"+HH:MM:SS", 2, 30, 45, "+02:30:45"},
};
}
! @Test(dataProvider="offsetPatterns", groups={"tck"})
! public void test_appendOffset_print(String pattern, int h, int m, int s, String expected) throws Exception {
builder.appendOffset(pattern, "Z");
DateTimeFormatter f = builder.toFormatter();
ZoneOffset offset = ZoneOffset.ofHoursMinutesSeconds(h, m, s);
! assertEquals(f.print(offset), expected);
}
! @Test(dataProvider="offsetPatterns", groups={"tck"})
public void test_appendOffset_parse(String pattern, int h, int m, int s, String expected) throws Exception {
builder.appendOffset(pattern, "Z");
DateTimeFormatter f = builder.toFormatter();
- ZoneOffset offset = ZoneOffset.ofHoursMinutesSeconds(h, m, s);
ZoneOffset parsed = f.parse(expected, ZoneOffset::from);
! assertEquals(f.print(parsed), expected);
}
@DataProvider(name="badOffsetPatterns")
Object[][] data_badOffsetPatterns() {
return new Object[][] {
--- 281,304 ----
{"+HH:MM:SS", 2, 0, 45, "+02:00:45"},
{"+HH:MM:SS", 2, 30, 45, "+02:30:45"},
};
}
! @Test(dataProvider="offsetPatterns")
! public void test_appendOffset_format(String pattern, int h, int m, int s, String expected) throws Exception {
builder.appendOffset(pattern, "Z");
DateTimeFormatter f = builder.toFormatter();
ZoneOffset offset = ZoneOffset.ofHoursMinutesSeconds(h, m, s);
! assertEquals(f.format(offset), expected);
}
! @Test(dataProvider="offsetPatterns")
public void test_appendOffset_parse(String pattern, int h, int m, int s, String expected) throws Exception {
builder.appendOffset(pattern, "Z");
DateTimeFormatter f = builder.toFormatter();
ZoneOffset parsed = f.parse(expected, ZoneOffset::from);
! assertEquals(f.format(parsed), expected);
}
@DataProvider(name="badOffsetPatterns")
Object[][] data_badOffsetPatterns() {
return new Object[][] {
*** 479,784 ****
{"+HHM"},
{"+A"},
};
}
! @Test(dataProvider="badOffsetPatterns", expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendOffset_badPattern(String pattern) throws Exception {
builder.appendOffset(pattern, "Z");
}
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendOffset_3arg_nullText() throws Exception {
builder.appendOffset("+HH:MM", null);
}
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendOffset_3arg_nullPattern() throws Exception {
builder.appendOffset(null, "Z");
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_appendZoneId() throws Exception {
! builder.appendZoneId();
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "ZoneId()");
! }
!
! @Test(groups={"tck"})
! public void test_appendZoneText_1arg() throws Exception {
! builder.appendZoneText(TextStyle.FULL);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "ZoneText(FULL)");
! }
!
! @Test(expectedExceptions=NullPointerException.class, groups={"tck"})
public void test_appendZoneText_1arg_nullText() throws Exception {
builder.appendZoneText(null);
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_padNext_1arg() throws Exception {
! builder.appendValue(MONTH_OF_YEAR).padNext(2).appendValue(DAY_OF_MONTH).appendValue(DAY_OF_WEEK);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear)Pad(Value(DayOfMonth),2)Value(DayOfWeek)");
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_padNext_1arg_invalidWidth() throws Exception {
builder.padNext(0);
}
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
public void test_padNext_2arg_dash() throws Exception {
! builder.appendValue(MONTH_OF_YEAR).padNext(2, '-').appendValue(DAY_OF_MONTH).appendValue(DAY_OF_WEEK);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear)Pad(Value(DayOfMonth),2,'-')Value(DayOfWeek)");
}
! @Test(expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_padNext_2arg_invalidWidth() throws Exception {
builder.padNext(0, '-');
}
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
public void test_padOptional() throws Exception {
! builder.appendValue(MONTH_OF_YEAR).padNext(5).optionalStart().appendValue(DAY_OF_MONTH).optionalEnd().appendValue(DAY_OF_WEEK);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear)Pad([Value(DayOfMonth)],5)Value(DayOfWeek)");
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_optionalStart_noEnd() throws Exception {
! builder.appendValue(MONTH_OF_YEAR).optionalStart().appendValue(DAY_OF_MONTH).appendValue(DAY_OF_WEEK);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear)[Value(DayOfMonth)Value(DayOfWeek)]");
! }
!
! @Test(groups={"tck"})
! public void test_optionalStart2_noEnd() throws Exception {
! builder.appendValue(MONTH_OF_YEAR).optionalStart().appendValue(DAY_OF_MONTH).optionalStart().appendValue(DAY_OF_WEEK);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear)[Value(DayOfMonth)[Value(DayOfWeek)]]");
! }
!
! @Test(groups={"tck"})
! public void test_optionalStart_doubleStart() throws Exception {
! builder.appendValue(MONTH_OF_YEAR).optionalStart().optionalStart().appendValue(DAY_OF_MONTH);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear)[[Value(DayOfMonth)]]");
! }
!
! //-----------------------------------------------------------------------
! @Test(groups={"tck"})
! public void test_optionalEnd() throws Exception {
! builder.appendValue(MONTH_OF_YEAR).optionalStart().appendValue(DAY_OF_MONTH).optionalEnd().appendValue(DAY_OF_WEEK);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear)[Value(DayOfMonth)]Value(DayOfWeek)");
! }
!
! @Test(groups={"tck"})
! public void test_optionalEnd2() throws Exception {
! builder.appendValue(MONTH_OF_YEAR).optionalStart().appendValue(DAY_OF_MONTH)
! .optionalStart().appendValue(DAY_OF_WEEK).optionalEnd().appendValue(DAY_OF_MONTH).optionalEnd();
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear)[Value(DayOfMonth)[Value(DayOfWeek)]Value(DayOfMonth)]");
! }
!
! @Test(groups={"tck"})
! public void test_optionalEnd_doubleStartSingleEnd() throws Exception {
! builder.appendValue(MONTH_OF_YEAR).optionalStart().optionalStart().appendValue(DAY_OF_MONTH).optionalEnd();
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear)[[Value(DayOfMonth)]]");
! }
!
! @Test(groups={"tck"})
! public void test_optionalEnd_doubleStartDoubleEnd() throws Exception {
! builder.appendValue(MONTH_OF_YEAR).optionalStart().optionalStart().appendValue(DAY_OF_MONTH).optionalEnd().optionalEnd();
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear)[[Value(DayOfMonth)]]");
! }
!
! @Test(groups={"tck"})
! public void test_optionalStartEnd_immediateStartEnd() throws Exception {
! builder.appendValue(MONTH_OF_YEAR).optionalStart().optionalEnd().appendValue(DAY_OF_MONTH);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), "Value(MonthOfYear)Value(DayOfMonth)");
! }
!
! @Test(expectedExceptions=IllegalStateException.class, groups={"tck"})
public void test_optionalEnd_noStart() throws Exception {
builder.optionalEnd();
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
@DataProvider(name="validPatterns")
Object[][] dataValid() {
return new Object[][] {
! {"'a'", "'a'"},
! {"''", "''"},
! {"'!'", "'!'"},
! {"!", "'!'"},
!
! {"'hello_people,][)('", "'hello_people,][)('"},
! {"'hi'", "'hi'"},
! {"'yyyy'", "'yyyy'"},
! {"''''", "''"},
! {"'o''clock'", "'o''clock'"},
!
! {"G", "Value(Era)"},
! {"GG", "Value(Era,2)"},
! {"GGG", "Text(Era,SHORT)"},
! {"GGGG", "Text(Era)"},
! {"GGGGG", "Text(Era,NARROW)"},
!
! {"y", "Value(Year)"},
! {"yy", "ReducedValue(Year,2,2000)"},
! {"yyy", "Value(Year,3,19,NORMAL)"},
! {"yyyy", "Value(Year,4,19,EXCEEDS_PAD)"},
! {"yyyyy", "Value(Year,5,19,EXCEEDS_PAD)"},
!
! // {"Y", "Value(WeekBasedYear)"},
! // {"YY", "ReducedValue(WeekBasedYear,2,2000)"},
! // {"YYY", "Value(WeekBasedYear,3,19,NORMAL)"},
! // {"YYYY", "Value(WeekBasedYear,4,19,EXCEEDS_PAD)"},
! // {"YYYYY", "Value(WeekBasedYear,5,19,EXCEEDS_PAD)"},
!
! {"M", "Value(MonthOfYear)"},
! {"MM", "Value(MonthOfYear,2)"},
! {"MMM", "Text(MonthOfYear,SHORT)"},
! {"MMMM", "Text(MonthOfYear)"},
! {"MMMMM", "Text(MonthOfYear,NARROW)"},
!
! {"D", "Value(DayOfYear)"},
! {"DD", "Value(DayOfYear,2)"},
! {"DDD", "Value(DayOfYear,3)"},
!
! {"d", "Value(DayOfMonth)"},
! {"dd", "Value(DayOfMonth,2)"},
! {"ddd", "Value(DayOfMonth,3)"},
!
! {"F", "Value(AlignedWeekOfMonth)"},
! {"FF", "Value(AlignedWeekOfMonth,2)"},
! {"FFF", "Value(AlignedWeekOfMonth,3)"},
!
! {"Q", "Value(QuarterOfYear)"},
! {"QQ", "Value(QuarterOfYear,2)"},
! {"QQQ", "Text(QuarterOfYear,SHORT)"},
! {"QQQQ", "Text(QuarterOfYear)"},
! {"QQQQQ", "Text(QuarterOfYear,NARROW)"},
!
! {"E", "Value(DayOfWeek)"},
! {"EE", "Value(DayOfWeek,2)"},
! {"EEE", "Text(DayOfWeek,SHORT)"},
! {"EEEE", "Text(DayOfWeek)"},
! {"EEEEE", "Text(DayOfWeek,NARROW)"},
!
! {"a", "Text(AmPmOfDay,SHORT)"},
! {"aa", "Text(AmPmOfDay,SHORT)"},
! {"aaa", "Text(AmPmOfDay,SHORT)"},
! {"aaaa", "Text(AmPmOfDay)"},
! {"aaaaa", "Text(AmPmOfDay,NARROW)"},
!
! {"H", "Value(HourOfDay)"},
! {"HH", "Value(HourOfDay,2)"},
! {"HHH", "Value(HourOfDay,3)"},
!
! {"K", "Value(HourOfAmPm)"},
! {"KK", "Value(HourOfAmPm,2)"},
! {"KKK", "Value(HourOfAmPm,3)"},
!
! {"k", "Value(ClockHourOfDay)"},
! {"kk", "Value(ClockHourOfDay,2)"},
! {"kkk", "Value(ClockHourOfDay,3)"},
!
! {"h", "Value(ClockHourOfAmPm)"},
! {"hh", "Value(ClockHourOfAmPm,2)"},
! {"hhh", "Value(ClockHourOfAmPm,3)"},
!
! {"m", "Value(MinuteOfHour)"},
! {"mm", "Value(MinuteOfHour,2)"},
! {"mmm", "Value(MinuteOfHour,3)"},
!
! {"s", "Value(SecondOfMinute)"},
! {"ss", "Value(SecondOfMinute,2)"},
! {"sss", "Value(SecondOfMinute,3)"},
!
! {"S", "Fraction(NanoOfSecond,1,1)"},
! {"SS", "Fraction(NanoOfSecond,2,2)"},
! {"SSS", "Fraction(NanoOfSecond,3,3)"},
! {"SSSSSSSSS", "Fraction(NanoOfSecond,9,9)"},
!
! {"A", "Value(MilliOfDay)"},
! {"AA", "Value(MilliOfDay,2)"},
! {"AAA", "Value(MilliOfDay,3)"},
!
! {"n", "Value(NanoOfSecond)"},
! {"nn", "Value(NanoOfSecond,2)"},
! {"nnn", "Value(NanoOfSecond,3)"},
!
! {"N", "Value(NanoOfDay)"},
! {"NN", "Value(NanoOfDay,2)"},
! {"NNN", "Value(NanoOfDay,3)"},
!
! {"z", "ZoneText(SHORT)"},
! {"zz", "ZoneText(SHORT)"},
! {"zzz", "ZoneText(SHORT)"},
! {"zzzz", "ZoneText(FULL)"},
! {"zzzzz", "ZoneText(FULL)"},
!
! {"I", "ZoneId()"},
! {"II", "ZoneId()"},
! {"III", "ZoneId()"},
! {"IIII", "ZoneId()"},
! {"IIIII", "ZoneId()"},
!
! {"Z", "Offset('+0000',+HHMM)"}, // SimpleDateFormat compatible
! {"ZZ", "Offset('+0000',+HHMM)"},
! {"ZZZ", "Offset('+00:00',+HH:MM)"},
!
! {"X", "Offset('Z',+HH)"},
! {"XX", "Offset('Z',+HHMM)"},
! {"XXX", "Offset('Z',+HH:MM)"},
! {"XXXX", "Offset('Z',+HHMMss)"},
! {"XXXXX", "Offset('Z',+HH:MM:ss)"},
!
! {"ppH", "Pad(Value(HourOfDay),2)"},
! {"pppDD", "Pad(Value(DayOfYear,2),3)"},
!
! {"yyyy[-MM[-dd", "Value(Year,4,19,EXCEEDS_PAD)['-'Value(MonthOfYear,2)['-'Value(DayOfMonth,2)]]"},
! {"yyyy[-MM[-dd]]", "Value(Year,4,19,EXCEEDS_PAD)['-'Value(MonthOfYear,2)['-'Value(DayOfMonth,2)]]"},
! {"yyyy[-MM[]-dd]", "Value(Year,4,19,EXCEEDS_PAD)['-'Value(MonthOfYear,2)'-'Value(DayOfMonth,2)]"},
!
! {"yyyy-MM-dd'T'HH:mm:ss.SSS", "Value(Year,4,19,EXCEEDS_PAD)'-'Value(MonthOfYear,2)'-'Value(DayOfMonth,2)" +
! "'T'Value(HourOfDay,2)':'Value(MinuteOfHour,2)':'Value(SecondOfMinute,2)'.'Fraction(NanoOfSecond,3,3)"},
!
! {"e", "WeekBased(e1)"},
! {"w", "WeekBased(w1)"},
! {"W", "WeekBased(W1)"},
! {"WW", "WeekBased(W2)"},
};
}
! @Test(dataProvider="validPatterns", groups={"implementation"})
! public void test_appendPattern_valid(String input, String expected) throws Exception {
! builder.appendPattern(input);
! DateTimeFormatter f = builder.toFormatter();
! assertEquals(f.toString(), expected);
}
//-----------------------------------------------------------------------
@DataProvider(name="invalidPatterns")
Object[][] dataInvalid() {
--- 314,539 ----
{"+HHM"},
{"+A"},
};
}
! @Test(dataProvider="badOffsetPatterns", expectedExceptions=IllegalArgumentException.class)
public void test_appendOffset_badPattern(String pattern) throws Exception {
builder.appendOffset(pattern, "Z");
}
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendOffset_3arg_nullText() throws Exception {
builder.appendOffset("+HH:MM", null);
}
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendOffset_3arg_nullPattern() throws Exception {
builder.appendOffset(null, "Z");
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
! @Test(expectedExceptions=NullPointerException.class)
public void test_appendZoneText_1arg_nullText() throws Exception {
builder.appendZoneText(null);
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
! @Test
! public void test_padNext_1arg() {
! builder.appendValue(MONTH_OF_YEAR).appendLiteral(':').padNext(2).appendValue(DAY_OF_MONTH);
! assertEquals(builder.toFormatter().format(LocalDate.of(2013, 2, 1)), "2: 1");
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_padNext_1arg_invalidWidth() throws Exception {
builder.padNext(0);
}
//-----------------------------------------------------------------------
! @Test
public void test_padNext_2arg_dash() throws Exception {
! builder.appendValue(MONTH_OF_YEAR).appendLiteral(':').padNext(2, '-').appendValue(DAY_OF_MONTH);
! assertEquals(builder.toFormatter().format(LocalDate.of(2013, 2, 1)), "2:-1");
}
! @Test(expectedExceptions=IllegalArgumentException.class)
public void test_padNext_2arg_invalidWidth() throws Exception {
builder.padNext(0, '-');
}
//-----------------------------------------------------------------------
! @Test
public void test_padOptional() throws Exception {
! builder.appendValue(MONTH_OF_YEAR).appendLiteral(':')
! .padNext(5).optionalStart().appendValue(DAY_OF_MONTH).optionalEnd()
! .appendLiteral(':').appendValue(YEAR);
! assertEquals(builder.toFormatter().format(LocalDate.of(2013, 2, 1)), "2: 1:2013");
! assertEquals(builder.toFormatter().format(YearMonth.of(2013, 2)), "2: :2013");
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
! @Test(expectedExceptions=IllegalStateException.class)
public void test_optionalEnd_noStart() throws Exception {
builder.optionalEnd();
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
@DataProvider(name="validPatterns")
Object[][] dataValid() {
return new Object[][] {
! {"'a'"},
! {"''"},
! {"'!'"},
! {"!"},
!
! {"'hello_people,][)('"},
! {"'hi'"},
! {"'yyyy'"},
! {"''''"},
! {"'o''clock'"},
!
! {"G"},
! {"GG"},
! {"GGG"},
! {"GGGG"},
! {"GGGGG"},
!
! {"y"},
! {"yy"},
! {"yyy"},
! {"yyyy"},
! {"yyyyy"},
!
! {"M"},
! {"MM"},
! {"MMM"},
! {"MMMM"},
! {"MMMMM"},
!
! {"D"},
! {"DD"},
! {"DDD"},
!
! {"d"},
! {"dd"},
! {"ddd"},
!
! {"F"},
! {"FF"},
! {"FFF"},
!
! {"Q"},
! {"QQ"},
! {"QQQ"},
! {"QQQQ"},
! {"QQQQQ"},
!
! {"E"},
! {"EE"},
! {"EEE"},
! {"EEEE"},
! {"EEEEE"},
!
! {"a"},
! {"aa"},
! {"aaa"},
! {"aaaa"},
! {"aaaaa"},
!
! {"H"},
! {"HH"},
! {"HHH"},
!
! {"K"},
! {"KK"},
! {"KKK"},
!
! {"k"},
! {"kk"},
! {"kkk"},
!
! {"h"},
! {"hh"},
! {"hhh"},
!
! {"m"},
! {"mm"},
! {"mmm"},
!
! {"s"},
! {"ss"},
! {"sss"},
!
! {"S"},
! {"SS"},
! {"SSS"},
! {"SSSSSSSSS"},
!
! {"A"},
! {"AA"},
! {"AAA"},
!
! {"n"},
! {"nn"},
! {"nnn"},
!
! {"N"},
! {"NN"},
! {"NNN"},
!
! {"z"},
! {"zz"},
! {"zzz"},
! {"zzzz"},
!
! {"VV"},
!
! {"Z"},
! {"ZZ"},
! {"ZZZ"},
!
! {"X"},
! {"XX"},
! {"XXX"},
! {"XXXX"},
! {"XXXXX"},
!
! {"x"},
! {"xx"},
! {"xxx"},
! {"xxxx"},
! {"xxxxx"},
!
! {"ppH"},
! {"pppDD"},
!
! {"yyyy[-MM[-dd"},
! {"yyyy[-MM[-dd]]"},
! {"yyyy[-MM[]-dd]"},
!
! {"yyyy-MM-dd'T'HH:mm:ss.SSS"},
!
! {"e"},
! {"w"},
! {"W"},
! {"WW"},
};
}
! @Test(dataProvider="validPatterns")
! public void test_appendPattern_valid(String input) throws Exception {
! builder.appendPattern(input); // test is for no error here
}
//-----------------------------------------------------------------------
@DataProvider(name="invalidPatterns")
Object[][] dataInvalid() {
*** 799,808 ****
--- 554,564 ----
{"QQQQQQ"},
{"EEEEEE"},
{"aaaaaa"},
{"ZZZZ"},
{"XXXXXX"},
+ {"zzzzz"},
{"RO"},
{"p"},
{"pp"},
*** 819,835 ****
{"ee"},
{"WWW"},
};
}
! @Test(dataProvider="invalidPatterns", expectedExceptions=IllegalArgumentException.class, groups={"tck"})
public void test_appendPattern_invalid(String input) throws Exception {
! try {
! builder.appendPattern(input);
! } catch (IllegalArgumentException ex) {
! throw ex;
! }
}
//-----------------------------------------------------------------------
@DataProvider(name="patternPrint")
Object[][] data_patternPrint() {
--- 575,587 ----
{"ee"},
{"WWW"},
};
}
! @Test(dataProvider="invalidPatterns", expectedExceptions=IllegalArgumentException.class)
public void test_appendPattern_invalid(String input) throws Exception {
! builder.appendPattern(input); // test is for error here
}
//-----------------------------------------------------------------------
@DataProvider(name="patternPrint")
Object[][] data_patternPrint() {
*** 840,853 ****
// {"QQQQ", date(2012, 2, 10), "Q1"},
// {"QQQQQ", date(2012, 2, 10), "Q1"},
};
}
! @Test(dataProvider="patternPrint", groups={"tck"})
public void test_appendPattern_patternPrint(String input, Temporal temporal, String expected) throws Exception {
DateTimeFormatter f = builder.appendPattern(input).toFormatter(Locale.UK);
! String test = f.print(temporal);
assertEquals(test, expected);
}
private static Temporal date(int y, int m, int d) {
return LocalDate.of(y, m, d);
--- 592,605 ----
// {"QQQQ", date(2012, 2, 10), "Q1"},
// {"QQQQQ", date(2012, 2, 10), "Q1"},
};
}
! @Test(dataProvider="patternPrint")
public void test_appendPattern_patternPrint(String input, Temporal temporal, String expected) throws Exception {
DateTimeFormatter f = builder.appendPattern(input).toFormatter(Locale.UK);
! String test = f.format(temporal);
assertEquals(test, expected);
}
private static Temporal date(int y, int m, int d) {
return LocalDate.of(y, m, d);