22
22
*/
23
23
package jdk .jpackage .internal ;
24
24
25
+ import java .text .MessageFormat ;
25
26
import java .util .ArrayList ;
26
27
import java .util .List ;
28
+ import java .util .Objects ;
27
29
import java .util .function .Function ;
28
30
import java .util .stream .Stream ;
29
31
import static org .junit .jupiter .api .Assertions .assertEquals ;
@@ -112,28 +114,57 @@ private static List<TestConfig> testValid() {
112
114
return data ;
113
115
}
114
116
117
+ record InvalidVersionTestSpec (String version , String invalidComponent ) {
118
+ public InvalidVersionTestSpec {
119
+ Objects .requireNonNull (version );
120
+ Objects .requireNonNull (invalidComponent );
121
+ }
122
+
123
+ InvalidVersionTestSpec (String version ) {
124
+ this (version , "" );
125
+ }
126
+
127
+ void run () {
128
+ final String expectedErrorMsg ;
129
+ if (invalidComponent .isEmpty ()) {
130
+ expectedErrorMsg = MessageFormat .format (I18N .getString ("error.version-string-zero-length-component" ), version );
131
+ } else {
132
+ expectedErrorMsg = MessageFormat .format (I18N .getString ("error.version-string-invalid-component" ), version , invalidComponent );
133
+ }
134
+
135
+ final var ex = assertThrowsExactly (IllegalArgumentException .class , () -> new DottedVersion (version ));
136
+
137
+ assertEquals (expectedErrorMsg , ex .getMessage ());
138
+ }
139
+ }
140
+
115
141
@ ParameterizedTest
116
142
@ MethodSource
117
- public void testInvalid (String str ) {
118
- assertThrowsExactly ( IllegalArgumentException . class , () -> new DottedVersion ( str ) );
143
+ public void testInvalid (InvalidVersionTestSpec testSpec ) {
144
+ testSpec . run ( );
119
145
}
120
146
121
- private static Stream <String > testInvalid () {
147
+ private static Stream <InvalidVersionTestSpec > testInvalid () {
122
148
return Stream .of (
123
- "1.-1" ,
124
- "5." ,
125
- "4.2." ,
126
- "3..2" ,
127
- "2.a" ,
128
- "0a" ,
129
- "." ,
130
- " " ,
131
- " 1" ,
132
- "1. 2" ,
133
- "+1" ,
134
- "-1" ,
135
- "-0" ,
136
- "+0"
149
+ new InvalidVersionTestSpec ("1.-1" , "-1" ),
150
+ new InvalidVersionTestSpec ("5." ),
151
+ new InvalidVersionTestSpec ("4.2." ),
152
+ new InvalidVersionTestSpec ("3..2" , ".2" ),
153
+ new InvalidVersionTestSpec ("3...2" , "..2" ),
154
+ new InvalidVersionTestSpec ("2.a" , "a" ),
155
+ new InvalidVersionTestSpec ("0a" , "a" ),
156
+ new InvalidVersionTestSpec ("1.0a" , "0a" ),
157
+ new InvalidVersionTestSpec ("." , "." ),
158
+ new InvalidVersionTestSpec (".." , ".." ),
159
+ new InvalidVersionTestSpec (".a.b" , ".a.b" ),
160
+ new InvalidVersionTestSpec (".1.2" , ".1.2" ),
161
+ new InvalidVersionTestSpec (" " , " " ),
162
+ new InvalidVersionTestSpec (" 1" , " 1" ),
163
+ new InvalidVersionTestSpec ("1. 2" , " 2" ),
164
+ new InvalidVersionTestSpec ("+1" , "+1" ),
165
+ new InvalidVersionTestSpec ("-1" , "-1" ),
166
+ new InvalidVersionTestSpec ("-0" , "-0" ),
167
+ new InvalidVersionTestSpec ("+0" , "+0" )
137
168
);
138
169
}
139
170
@@ -145,7 +176,8 @@ public void testNull(Type type) {
145
176
146
177
@ Test
147
178
public void testEmptyGreedy () {
148
- assertThrowsExactly (IllegalArgumentException .class , () -> DottedVersion .greedy ("" ), "Version may not be empty string" );
179
+ final var ex = assertThrowsExactly (IllegalArgumentException .class , () -> DottedVersion .greedy ("" ));
180
+ assertEquals (I18N .getString ("error.version-string-empty" ), ex .getMessage ());
149
181
}
150
182
151
183
@ Test
0 commit comments