Skip to content

Commit fce23c7

Browse files
Yuxi Suncopybara-github
authored andcommitted
Upgrade and enable tests of TCK on JRE
PiperOrigin-RevId: 590015140
1 parent 9485be9 commit fce23c7

File tree

2 files changed

+143
-103
lines changed

2 files changed

+143
-103
lines changed

jre_emul/android/platform/libcore/ojluni/src/test/java/time/tck/java/time/format/TCKZoneIdPrinterParser.java

Lines changed: 142 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ public void test_print(LocalDateTime ldt, ZoneId zone, String expected) {
122122
String output = builder.toFormatter().format(zdt);
123123
assertEquals(output, expected);
124124
}
125-
126-
@Test
125+
126+
@Test
127127
@UseDataProvider("data_print")
128128
public void test_print_pattern_VV(LocalDateTime ldt, ZoneId zone, String expected) {
129129
ZonedDateTime zdt = ldt.atZone(zone);
@@ -157,152 +157,192 @@ public void test_print_pattern_V5rejected() {
157157
@DataProvider
158158
public static Object[][] data_parseSuccess() {
159159
return new Object[][] {
160-
{"Z", 1, -1, ZoneId.of("Z")},
161-
{"UTC", 3, -1, ZoneId.of("UTC")},
162-
{"UT", 2, -1, ZoneId.of("UT")},
163-
{"GMT", 3, -1, ZoneId.of("GMT")},
164-
165-
{"+00:00", 6, -1, ZoneOffset.UTC},
166-
{"UTC+00:00", 9, -1, ZoneId.of("UTC")},
167-
{"UT+00:00", 8, -1, ZoneId.of("UT")},
168-
{"GMT+00:00", 9, -1, ZoneId.of("GMT")},
169-
{"-00:00", 6, -1, ZoneOffset.UTC},
170-
{"UTC-00:00", 9, -1, ZoneId.of("UTC")},
171-
{"UT-00:00", 8, -1, ZoneId.of("UT")},
172-
{"GMT-00:00", 9, -1, ZoneId.of("GMT")},
173-
174-
{"+01:30", 6, -1, ZoneOffset.ofHoursMinutes(1, 30)},
175-
{"UTC+01:30", 9, -1, ZoneId.of("UTC+01:30")},
176-
{"UT+02:30", 8, -1, ZoneId.of("UT+02:30")},
177-
{"GMT+03:30", 9, -1, ZoneId.of("GMT+03:30")},
178-
{"-01:30", 6, -1, ZoneOffset.ofHoursMinutes(-1, -30)},
179-
{"UTC-01:30", 9, -1, ZoneId.of("UTC-01:30")},
180-
{"UT-02:30", 8, -1, ZoneId.of("UT-02:30")},
181-
{"GMT-03:30", 9, -1, ZoneId.of("GMT-03:30")},
160+
{"Z", 1, -1, ZoneId.of("Z"), true},
161+
{"UTC", 3, -1, ZoneId.of("UTC"), false},
162+
{"UT", 2, -1, ZoneId.of("UT"), false},
163+
{"GMT", 3, -1, ZoneId.of("GMT"), false},
164+
{"GMT0", 4, -1, ZoneId.of("GMT0"), false},
165+
166+
{"+00:00", 6, -1, ZoneOffset.UTC, true},
167+
{"UTC+00:00", 9, -1, ZoneId.of("UTC"), false},
168+
{"UT+00:00", 8, -1, ZoneId.of("UT"), false},
169+
{"GMT+00:00", 9, -1, ZoneId.of("GMT"), false},
170+
{"-00:00", 6, -1, ZoneOffset.UTC, true},
171+
{"UTC-00:00", 9, -1, ZoneId.of("UTC"), false},
172+
{"UT-00:00", 8, -1, ZoneId.of("UT"), false},
173+
{"GMT-00:00", 9, -1, ZoneId.of("GMT"), false},
174+
175+
{"+01:30", 6, -1, ZoneOffset.ofHoursMinutes(1, 30), true},
176+
{"UTC+01:30", 9, -1, ZoneId.of("UTC+01:30"), false},
177+
{"UT+02:30", 8, -1, ZoneId.of("UT+02:30"), false},
178+
{"GMT+03:30", 9, -1, ZoneId.of("GMT+03:30"), false},
179+
{"-01:30", 6, -1, ZoneOffset.ofHoursMinutes(-1, -30), true},
180+
{"UTC-01:30", 9, -1, ZoneId.of("UTC-01:30"), false},
181+
{"UT-02:30", 8, -1, ZoneId.of("UT-02:30"), false},
182+
{"GMT-03:30", 9, -1, ZoneId.of("GMT-03:30"), false},
182183

183184
// fallback to UTC
184-
{"UTC-01:WW", 3, -1, ZoneId.of("UTC")},
185-
{"UT-02:WW", 2, -1, ZoneId.of("UT")},
186-
{"GMT-03:WW", 3, -1, ZoneId.of("GMT")},
187-
{"Z0", 1, -1, ZoneOffset.UTC},
188-
{"UTC1", 3, -1, ZoneId.of("UTC")},
185+
{"UTC-01:WW", 3, -1, ZoneId.of("UTC"), false},
186+
{"UT-02:WW", 2, -1, ZoneId.of("UT"), false},
187+
{"GMT-03:WW", 3, -1, ZoneId.of("GMT"), false},
188+
{"Z0", 1, -1, ZoneOffset.UTC, true},
189+
{"UTC1", 3, -1, ZoneId.of("UTC"), false},
189190

190191
// Z not parsed as zero
191-
{"UTCZ", 3, -1, ZoneId.of("UTC")},
192-
{"UTZ", 2, -1, ZoneId.of("UT")},
193-
{"GMTZ", 3, -1, ZoneId.of("GMT")},
192+
{"UTCZ", 3, -1, ZoneId.of("UTC"), false},
193+
{"UTZ", 2, -1, ZoneId.of("UT"), false},
194+
{"GMTZ", 3, -1, ZoneId.of("GMT"), false},
194195

195196
// 0 not parsed
196-
{"UTC0", 3, -1, ZoneId.of("UTC")},
197-
{"UT0", 2, -1, ZoneId.of("UT")},
197+
{"UTC0", 3, -1, ZoneId.of("UTC"), false},
198+
{"UT0", 2, -1, ZoneId.of("UT"), false},
198199

199200
// fail to parse
200-
{"", 0, 0, null},
201-
{"A", 0, 0, null},
202-
{"UZ", 0, 0, null},
203-
{"GMA", 0, 0, null},
204-
{"0", 0, 0, null},
205-
{"+", 0, 0, null},
206-
{"-", 0, 0, null},
201+
{"", 0, 0, null, false},
202+
{"A", 0, 0, null, false},
203+
{"UZ", 0, 0, null, false},
204+
{"GMA", 0, 0, null, false},
205+
{"0", 0, 0, null, false},
206+
{"+", 0, 0, null, false},
207+
{"-", 0, 0, null, false},
207208

208209
// zone IDs
209-
{"Europe/London", 13, -1, ZoneId.of("Europe/London")},
210-
{"America/New_York", 16, -1, ZoneId.of("America/New_York")},
211-
{"America/Bogusville", 0, 0, null},
210+
{"Europe/London", 13, -1, ZoneId.of("Europe/London"), false},
211+
{"America/New_York", 16, -1, ZoneId.of("America/New_York"), false},
212+
{"America/Bogusville", 0, 0, null, false},
212213
};
213214
}
214215

215216
@Test
216217
@UseDataProvider("data_parseSuccess")
217-
public void test_parseSuccess_plain(String text, int expectedIndex, int expectedErrorIndex, ZoneId expected) {
218+
public void test_ZoneId_parseSuccess_plain(
219+
String text, int expectedIndex, int expectedErrorIndex, ZoneId expected, boolean isZoneOffset)
220+
{
218221
builder.appendZoneId();
219-
TemporalAccessor parsed = builder.toFormatter().parseUnresolved(text, pos);
220-
assertEquals("Incorrect error index parsing: " + text, pos.getErrorIndex(), expectedErrorIndex);
221-
assertEquals("Incorrect index parsing: " + text, pos.getIndex(), expectedIndex);
222-
if (expected != null) {
223-
assertEquals("Incorrect zoneId parsing: " + text, parsed.query(TemporalQueries.zoneId()), expected);
224-
assertEquals("Incorrect offset parsing: " + text, parsed.query(TemporalQueries.offset()), null);
225-
assertEquals("Incorrect zone parsing: " + text, parsed.query(TemporalQueries.zone()), expected);
226-
} else {
227-
assertEquals(parsed, null);
228-
}
222+
test(text, expectedIndex, expectedErrorIndex, expected, isZoneOffset);
229223
}
230224

231225
@Test
232226
@UseDataProvider("data_parseSuccess")
233-
public void test_parseSuccess_prefix(String text, int expectedIndex, int expectedErrorIndex, ZoneId expected) {
227+
public void test_ZoneId_parseSuccess_prefix(
228+
String text, int expectedIndex, int expectedErrorIndex, ZoneId expected, boolean isZoneOffset)
229+
{
234230
builder.appendZoneId();
235231
pos.setIndex(3);
236-
String prefixText = "XXX" + text;
237-
TemporalAccessor parsed = builder.toFormatter().parseUnresolved(prefixText, pos);
238-
assertEquals("Incorrect error index parsing: " + prefixText, pos.getErrorIndex(), expectedErrorIndex >= 0 ? expectedErrorIndex + 3 : expectedErrorIndex);
239-
assertEquals("Incorrect index parsing: " + prefixText, pos.getIndex(), expectedIndex + 3);
240-
if (expected != null) {
241-
assertEquals("Incorrect zoneId parsing: " + prefixText, parsed.query(TemporalQueries.zoneId()), expected);
242-
assertEquals("Incorrect offset parsing: " + prefixText, parsed.query(TemporalQueries.offset()), null);
243-
assertEquals("Incorrect zone parsing: " + prefixText, parsed.query(TemporalQueries.zone()), expected);
244-
} else {
245-
assertEquals(parsed, null);
246-
}
232+
test("XXX" + text,
233+
expectedIndex + 3,
234+
expectedErrorIndex >= 0 ? expectedErrorIndex + 3 : expectedErrorIndex,
235+
expected, isZoneOffset);
247236
}
248237

249238
@Test
250239
@UseDataProvider("data_parseSuccess")
251-
public void test_parseSuccess_suffix(String text, int expectedIndex, int expectedErrorIndex, ZoneId expected) {
240+
public void test_ZoneId_parseSuccess_suffix(
241+
String text, int expectedIndex, int expectedErrorIndex, ZoneId expected, boolean isZoneOffset)
242+
{
252243
builder.appendZoneId();
253-
String suffixText = text + "XXX";
254-
TemporalAccessor parsed = builder.toFormatter().parseUnresolved(suffixText, pos);
255-
assertEquals("Incorrect error index parsing: " + suffixText, pos.getErrorIndex(), expectedErrorIndex);
256-
assertEquals("Incorrect index parsing: " + suffixText, pos.getIndex(), expectedIndex);
257-
if (expected != null) {
258-
assertEquals("Incorrect zoneId parsing: " + suffixText, parsed.query(TemporalQueries.zoneId()), expected);
259-
assertEquals("Incorrect offset parsing: " + suffixText, parsed.query(TemporalQueries.offset()), null);
260-
assertEquals("Incorrect zone parsing: " + suffixText, parsed.query(TemporalQueries.zone()), expected);
261-
} else {
262-
assertEquals(parsed, null);
263-
}
244+
test(text + "XXX", expectedIndex, expectedErrorIndex, expected, isZoneOffset);
264245
}
265246

266247
@Test
267248
@UseDataProvider("data_parseSuccess")
268-
public void test_parseSuccess_caseSensitive(String text, int expectedIndex, int expectedErrorIndex, ZoneId expected) {
249+
public void test_ZoneId_parseSuccess_caseSensitive(
250+
String text, int expectedIndex, int expectedErrorIndex, ZoneId expected, boolean isZoneOffset)
251+
{
269252
builder.parseCaseSensitive().appendZoneId();
270-
String lcText = text.toLowerCase(Locale.ENGLISH);
271-
TemporalAccessor parsed = builder.toFormatter().parseUnresolved(lcText, pos);
253+
272254
if (text.matches("[^A-Z]*[A-Z].*")) { // if input has letters
255+
String lcText = text.toLowerCase(Locale.ENGLISH);
256+
TemporalAccessor parsed = builder.toFormatter().parseUnresolved(lcText, pos);
273257
assertEquals(pos.getErrorIndex() >= 0, true);
274258
assertEquals(pos.getIndex(), 0);
275259
assertEquals(parsed, null);
276260
} else {
277-
// case sensitive made no difference
278-
assertEquals("Incorrect index parsing: " + lcText, pos.getIndex(), expectedIndex);
279-
assertEquals("Incorrect error index parsing: " + lcText, pos.getErrorIndex(), expectedErrorIndex);
280-
if (expected != null) {
281-
assertEquals(parsed.query(TemporalQueries.zoneId()), expected);
282-
assertEquals(parsed.query(TemporalQueries.offset()), null);
283-
assertEquals(parsed.query(TemporalQueries.zone()), expected);
284-
} else {
285-
assertEquals(parsed, null);
286-
}
261+
test(text.toLowerCase(Locale.ENGLISH), expectedIndex, expectedErrorIndex, expected, isZoneOffset);
287262
}
288263
}
289264

290265
@Test
291266
@UseDataProvider("data_parseSuccess")
292-
public void test_parseSuccess_caseInsensitive(String text, int expectedIndex, int expectedErrorIndex, ZoneId expected) {
267+
public void test_ZoneId_parseSuccess_caseInsensitive(
268+
String text, int expectedIndex, int expectedErrorIndex, ZoneId expected, boolean isZoneOffset)
269+
{
293270
builder.parseCaseInsensitive().appendZoneId();
294-
String lcText = text.toLowerCase(Locale.ENGLISH);
295-
TemporalAccessor parsed = builder.toFormatter().parseUnresolved(lcText, pos);
296-
assertEquals("Incorrect error index parsing: " + lcText, pos.getErrorIndex(), expectedErrorIndex);
297-
assertEquals("Incorrect index parsing: " + lcText, pos.getIndex(), expectedIndex);
271+
test(text.toLowerCase(Locale.ENGLISH), expectedIndex, expectedErrorIndex, expected, isZoneOffset);
272+
}
273+
274+
@Test
275+
@UseDataProvider("data_parseSuccess")
276+
public void test_ZoneOrOffsetId_parseSuccess_plain(
277+
String text, int expectedIndex, int expectedErrorIndex, ZoneId expected, boolean isZoneOffset)
278+
{
279+
builder.appendZoneOrOffsetId();
280+
test(text, expectedIndex, expectedErrorIndex, expected, isZoneOffset);
281+
}
282+
283+
@Test
284+
@UseDataProvider("data_parseSuccess")
285+
public void test_ZoneOrOffsetId_parseSuccess_prefix(
286+
String text, int expectedIndex, int expectedErrorIndex, ZoneId expected, boolean isZoneOffset)
287+
{
288+
builder.appendZoneOrOffsetId();
289+
pos.setIndex(3);
290+
test("XXX" + text,
291+
expectedIndex + 3,
292+
expectedErrorIndex >= 0 ? expectedErrorIndex + 3 : expectedErrorIndex,
293+
expected, isZoneOffset);
294+
}
295+
296+
@Test
297+
@UseDataProvider("data_parseSuccess")
298+
public void test_ZoneOrOffsetId_parseSuccess_suffix(
299+
String text, int expectedIndex, int expectedErrorIndex, ZoneId expected, boolean isZoneOffset)
300+
{
301+
builder.appendZoneOrOffsetId();
302+
test(text + "XXX", expectedIndex, expectedErrorIndex, expected, isZoneOffset);
303+
}
304+
305+
@Test
306+
@UseDataProvider("data_parseSuccess")
307+
public void test_ZoneOrOffsetId_parseSuccess_caseSensitive(
308+
String text, int expectedIndex, int expectedErrorIndex, ZoneId expected, boolean isZoneOffset)
309+
{
310+
builder.parseCaseSensitive().appendZoneOrOffsetId();
311+
if (text.matches("[^A-Z]*[A-Z].*")) { // if input has letters
312+
String lcText = text.toLowerCase(Locale.ENGLISH);
313+
TemporalAccessor parsed = builder.toFormatter().parseUnresolved(lcText, pos);
314+
assertEquals(pos.getErrorIndex() >= 0, true);
315+
assertEquals(pos.getIndex(), 0);
316+
assertEquals(parsed, null);
317+
} else {
318+
test(text.toLowerCase(Locale.ENGLISH), expectedIndex, expectedErrorIndex, expected, isZoneOffset);
319+
}
320+
}
321+
322+
@Test
323+
@UseDataProvider("data_parseSuccess")
324+
public void test_ZoneOrOffsetIdparseSuccess_caseInsensitive(
325+
String text, int expectedIndex, int expectedErrorIndex, ZoneId expected, boolean isZoneOffset)
326+
{
327+
builder.parseCaseInsensitive().appendZoneOrOffsetId();
328+
test(text.toLowerCase(Locale.ENGLISH), expectedIndex, expectedErrorIndex, expected, isZoneOffset);
329+
}
330+
331+
private void test(String text, int expectedIndex, int expectedErrorIndex, ZoneId expected,
332+
boolean isZoneOffset) {
333+
TemporalAccessor parsed = builder.toFormatter().parseUnresolved(text, pos);
334+
assertEquals(pos.getErrorIndex(), expectedErrorIndex);
335+
assertEquals(pos.getIndex(), expectedIndex);
298336
if (expected != null) {
299-
ZoneId zid = parsed.query(TemporalQueries.zoneId());
300-
assertEquals("Incorrect zoneId parsing: " + lcText, parsed.query(TemporalQueries.zoneId()), expected);
301-
assertEquals("Incorrect offset parsing: " + lcText, parsed.query(TemporalQueries.offset()), null);
302-
assertEquals("Incorrect zone parsing: " + lcText, parsed.query(TemporalQueries.zone()), expected);
337+
assertEquals(parsed.query(TemporalQueries.zoneId()),
338+
expected);
339+
assertEquals(parsed.query(TemporalQueries.offset()),
340+
isZoneOffset ? expected : null);
341+
assertEquals(parsed.query(TemporalQueries.zone()),
342+
expected);
303343
} else {
304344
assertEquals(parsed, null);
305345
}
306346
}
307347

308-
}
348+
}

jre_emul/test_sources.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,6 @@ NATIVE_SOURCES = dalvik_system_JniTest.cpp
269269
# com/google/j2objc/java8/LambdaTest.java \
270270
# com/google/j2objc/java8/SuperMethodReferenceTest.java \
271271
# java/nio/file/attribute/FileTimeTest.java \
272-
# tck/java/time/format/TCKZoneIdPrinterParser.java \
273272
# test/java/time/format/TestDateTimeFormatterBuilder.java \
274273
# test/java/time/format/TestZoneOffsetParser.java \
275274
@@ -1239,6 +1238,7 @@ TEST_SOURCES := \
12391238
org/apache/harmony/tests/org/xml/sax/helpers/XMLReaderFactoryTest.java \
12401239
org/xmlpull/v1/XmlPullParserFactoryTest.java \
12411240
sun/misc/UnsafeTest.java \
1241+
tck/java/time/format/TCKZoneIdPrinterParser.java \
12421242
tck/java/time/TCKClock.java \
12431243
tck/java/time/TCKClock_Fixed.java \
12441244
tck/java/time/TCKClock_Offset.java \

0 commit comments

Comments
 (0)