Skip to content

Commit dd57a89

Browse files
authored
issue-478 : Time format validation supports milliseconds (#480)
* issue-478 : Time format validation supports milliseconds * issue-478 : Test cases for time format validation
1 parent 2dee3ae commit dd57a89

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

src/main/java/com/networknt/schema/JsonMetaSchema.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ static PatternFormat pattern(String name, String regex) {
4040

4141
// this section contains formats that is common for all specification versions.
4242
static {
43-
COMMON_BUILTIN_FORMATS.add(pattern("time", "^\\d{2}:\\d{2}:\\d{2}$"));
43+
COMMON_BUILTIN_FORMATS.add(pattern("time", "^\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?$"));
4444
COMMON_BUILTIN_FORMATS.add(pattern("ip-address",
4545
"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"));
4646
COMMON_BUILTIN_FORMATS.add(pattern("ipv4",
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.networknt.schema;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.*;
6+
7+
class JsonMetaSchemaTest {
8+
9+
@Test
10+
void timeFormatValidation() {
11+
Format timeFormat = null;
12+
for (Format commonBuiltinFormat : JsonMetaSchema.COMMON_BUILTIN_FORMATS) {
13+
if ("time".equals(commonBuiltinFormat.getName())) {
14+
timeFormat = commonBuiltinFormat;
15+
}
16+
}
17+
if (timeFormat == null) {
18+
throw new IllegalArgumentException("time format not found");
19+
}
20+
21+
assertTrue(timeFormat.matches("14:16:23"));
22+
assertTrue(timeFormat.matches("14:16:23.123456"));
23+
assertFalse(timeFormat.matches("14:16:23."));
24+
25+
}
26+
27+
}

0 commit comments

Comments
 (0)