test/java/time/tck/java/time/format/TCKLocalizedFieldParser.java
Print this page
@@ -57,26 +57,25 @@
* 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.format.*;
-
+import static java.time.temporal.ChronoField.MONTH_OF_YEAR;
+import static java.time.temporal.ChronoField.YEAR;
import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.fail;
import java.text.ParsePosition;
-import java.time.format.DateTimeBuilder;
-
import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
+import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalField;
import java.time.temporal.WeekFields;
-import test.java.time.format.AbstractTestPrinterParser;
-
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
+import test.java.time.format.AbstractTestPrinterParser;
/**
* Test TCKLocalizedFieldParser.
*/
@Test(groups={"tck"})
@@ -112,16 +111,16 @@
}
ParsePosition ppos = new ParsePosition(pos);
DateTimeFormatterBuilder b
= new DateTimeFormatterBuilder().appendPattern(pattern);
DateTimeFormatter dtf = b.toFormatter(locale);
- DateTimeBuilder dtb = dtf.parseToBuilder(text, ppos);
+ TemporalAccessor parsed = dtf.parseUnresolved(text, ppos);
if (ppos.getErrorIndex() != -1) {
assertEquals(ppos.getErrorIndex(), expectedPos);
} else {
assertEquals(ppos.getIndex(), expectedPos, "Incorrect ending parse position");
- long value = dtb.getLong(field);
+ long value = parsed.getLong(field);
assertEquals(value, expectedValue, "Value incorrect for " + field);
}
}
//-----------------------------------------------------------------------
@@ -141,24 +140,27 @@
"Date: 2012-07, day-of-week: 6, week-of-month: 3", 0, 47, LocalDate.of(2012, 7, 20)},
{"'Date: 'y', day-of-week: 'e', week-of-year: 'W",
"Date: 2012, day-of-week: 6, week-of-year: 29", 0, 44, LocalDate.of(2012, 7, 20)},
};
}
+
@Test(dataProvider="LocalDatePatterns",groups={"tck"})
public void test_parse_textLocalDate(String pattern, String text, int pos, int expectedPos, LocalDate expectedValue) {
- WeekFields weekDef = WeekFields.of(locale);
ParsePosition ppos = new ParsePosition(pos);
- DateTimeFormatterBuilder b
- = new DateTimeFormatterBuilder().appendPattern(pattern);
+ DateTimeFormatterBuilder b = new DateTimeFormatterBuilder().appendPattern(pattern);
DateTimeFormatter dtf = b.toFormatter(locale);
- DateTimeBuilder dtb = dtf.parseToBuilder(text, ppos);
+ TemporalAccessor parsed = dtf.parseUnresolved(text, ppos);
if (ppos.getErrorIndex() != -1) {
assertEquals(ppos.getErrorIndex(), expectedPos);
} else {
assertEquals(ppos.getIndex(), expectedPos, "Incorrect ending parse position");
- dtb.resolve();
- LocalDate result = dtb.query(LocalDate::from);
+ assertEquals(parsed.isSupported(YEAR), true);
+ assertEquals(parsed.isSupported(WeekFields.of(locale).dayOfWeek()), true);
+ assertEquals(parsed.isSupported(WeekFields.of(locale).weekOfMonth()) ||
+ parsed.isSupported(WeekFields.of(locale).weekOfYear()), true);
+ // ensure combination resolves into a date
+ LocalDate result = LocalDate.parse(text, dtf);
assertEquals(result, expectedValue, "LocalDate incorrect for " + pattern);
}
}
}