@@ -31,17 +31,50 @@ class InstantIsoStringsTest {
31
31
Triple (" 1970-01-02T01:01:01.100000000Z" , 90061 , 100000000 ))
32
32
instants.forEach {
33
33
val (str, seconds, nanos) = it
34
- val instant = parseIso (str)
34
+ val instant = parseInstant (str)
35
35
assertEquals(seconds.toLong() * 1000 + nanos / 1000000 , instant.toEpochMilliseconds())
36
36
}
37
37
38
- assertInvalidFormat { parseIso(" 1970-01-01T23:59:60Z" )}
39
- assertInvalidFormat { parseIso(" 1970-01-01T24:00:00Z" )}
40
- assertInvalidFormat { parseIso(" 1970-01-01T23:59Z" )}
41
- assertInvalidFormat { parseIso(" x" ) }
42
- assertInvalidFormat { parseIso(" 12020-12-31T23:59:59.000000000Z" ) }
38
+ for (nonIsoString in listOf (
39
+ " " ,
40
+ " x" ,
41
+ " 1970-01-01T00:00:00Z" ,
42
+ " +1234567890-01-01T00:00:00Z" ,
43
+ " -1234567890-01-01T00:00:00Z" ,
44
+ " 003-01-01T00:00:00Z" ,
45
+ " -003-01-01T00:00:00Z" ,
46
+ " +1970-01-01T00:00:00Z" ,
47
+ " 11970-01-01T00:00:00Z" ,
48
+ " 1970-01-01T00:00:00Z" ,
49
+ " 1970/01-01T00:00:00Z" ,
50
+ " 1970-01/01T00:00:00Z" ,
51
+ " 1970-01-01 00:00:00Z" ,
52
+ " 1970-01-01T00-00:00Z" ,
53
+ " 1970-01-01T00:00-00Z" ,
54
+ " 1970-X1-01T00:00:00Z" ,
55
+ " 1970-1X-01T00:00:00Z" ,
56
+ " 1970-11-X1T00:00:00Z" ,
57
+ " 1970-11-1XT00:00:00Z" ,
58
+ " 1970-11-10T00:00:00Z" ,
59
+ " 1970-11-10TX0:00:00Z" ,
60
+ " 1970-11-10T0X:00:00Z" ,
61
+ " 1970-11-10T00:X0:00Z" ,
62
+ " 1970-11-10T00:0X:00Z" ,
63
+ " 1970-11-10T00:00:X0Z" ,
64
+ " 1970-11-10T00:00:0XZ" ,
65
+ " 1970-11-10T00:00:0٩Z" ,
66
+ " 1970-11-10T00:00:00.Z" ,
67
+ " 1970-11-10T00:00:00.1234567890Z" ,
68
+ )) {
69
+ assertInvalidFormat(nonIsoString) { parseInstant(nonIsoString) }
70
+ }
71
+ assertInvalidFormat { parseInstant(" 1970-01-01T23:59:60Z" )}
72
+ assertInvalidFormat { parseInstant(" 1970-01-01T24:00:00Z" )}
73
+ assertInvalidFormat { parseInstant(" 1970-01-01T23:59Z" )}
74
+ assertInvalidFormat { parseInstant(" x" ) }
75
+ assertInvalidFormat { parseInstant(" 12020-12-31T23:59:59.000000000Z" ) }
43
76
// this string represents an Instant that is currently larger than Instant.MAX any of the implementations:
44
- assertInvalidFormat { parseIso (" +1000000001-12-31T23:59:59.000000000Z" ) }
77
+ assertInvalidFormat { parseInstant (" +1000000001-12-31T23:59:59.000000000Z" ) }
45
78
}
46
79
47
80
@Test
@@ -54,16 +87,16 @@ class InstantIsoStringsTest {
54
87
Pair (" 2020-01-01T00:01:01+00" , " 2020-01-01T00:01:01Z" ),
55
88
)
56
89
strings.forEach { (str, strInZ) ->
57
- val instant = parseIso (str)
58
- assertEquals(parseIso (strInZ), instant, str)
90
+ val instant = parseInstant (str)
91
+ assertEquals(parseInstant (strInZ), instant, str)
59
92
assertEquals(strInZ, formatIso(instant), str)
60
93
}
61
- assertInvalidFormat { parseIso (" 2020-01-01T00:01:01+18:01" ) }
62
- assertInvalidFormat { parseIso (" 2020-01-01T00:01:01+1801" ) }
63
- assertInvalidFormat { parseIso (" 2020-01-01T00:01:01+0" ) }
64
- assertInvalidFormat { parseIso (" 2020-01-01T00:01:01+" ) }
65
- assertInvalidFormat { parseIso (" 2020-01-01T00:01:01" ) }
66
- assertInvalidFormat { parseIso (" 2020-01-01T00:01:01+000000" ) }
94
+ assertInvalidFormat { parseInstant (" 2020-01-01T00:01:01+18:01" ) }
95
+ assertInvalidFormat { parseInstant (" 2020-01-01T00:01:01+1801" ) }
96
+ assertInvalidFormat { parseInstant (" 2020-01-01T00:01:01+0" ) }
97
+ assertInvalidFormat { parseInstant (" 2020-01-01T00:01:01+" ) }
98
+ assertInvalidFormat { parseInstant (" 2020-01-01T00:01:01" ) }
99
+ assertInvalidFormat { parseInstant (" 2020-01-01T00:01:01+000000" ) }
67
100
68
101
val instants = listOf (
69
102
Instant .DISTANT_FUTURE ,
@@ -93,6 +126,10 @@ class InstantIsoStringsTest {
93
126
94
127
*/
95
128
}
129
+
130
+ private fun parseInstant (isoString : String ): Instant {
131
+ return parseIso(isoString)
132
+ }
96
133
}
97
134
98
135
0 commit comments