@@ -179,5 +179,105 @@ void main() {
179
179
// Pass
180
180
expect (validatorWithMessage ('test' ), isNull);
181
181
});
182
+
183
+ test ('FormFieldValidatorExtensions.and with nested validators' , () {
184
+ // Arrange
185
+ final FormFieldValidator <String > validator1 =
186
+ FormBuilderValidators .required ();
187
+ final FormFieldValidator <String > validator2 =
188
+ FormBuilderValidators .minLength (5 );
189
+ final FormFieldValidator <String > validator3 =
190
+ FormBuilderValidators .maxLength (10 );
191
+ final FormFieldValidator <String > combinedValidator =
192
+ validator1.and (validator2.and (validator3));
193
+
194
+ // Act & Assert
195
+ // Pass
196
+ expect (combinedValidator ('hello' ), isNull);
197
+ expect (combinedValidator ('hello123' ), isNull);
198
+
199
+ // Fail
200
+ expect (combinedValidator (null ), isNotNull);
201
+ expect (combinedValidator ('' ), isNotNull);
202
+ expect (combinedValidator ('test' ), isNotNull);
203
+ expect (combinedValidator ('hello world' ), isNotNull);
204
+ });
205
+
206
+ test ('FormFieldValidatorExtensions.or with nested validators' , () {
207
+ // Arrange
208
+ final FormFieldValidator <String > validator1 =
209
+ FormBuilderValidators .endsWith ('world' );
210
+ final FormFieldValidator <String > validator2 =
211
+ FormBuilderValidators .startsWith ('Hello' );
212
+ final FormFieldValidator <String > validator3 =
213
+ FormBuilderValidators .equal ('test' );
214
+ final FormFieldValidator <String > combinedValidator =
215
+ validator1.or (validator2.or (validator3));
216
+
217
+ // Act & Assert
218
+ // Pass
219
+ expect (combinedValidator ('Hello world' ), isNull);
220
+ expect (combinedValidator ('Hello' ), isNull);
221
+ expect (combinedValidator ('test' ), isNull);
222
+
223
+ // Fail
224
+ expect (combinedValidator ('123 hello' ), isNotNull);
225
+ expect (combinedValidator (null ), isNotNull);
226
+ expect (combinedValidator ('' ), isNotNull);
227
+ });
228
+
229
+ test ('FormFieldValidatorExtensions.transform with custom transformation' ,
230
+ () {
231
+ // Arrange
232
+ final FormFieldValidator <String > validator =
233
+ FormBuilderValidators .transform <String >(
234
+ (String ? value) => value? .toUpperCase () ?? '' ,
235
+ FormBuilderValidators .match (RegExp (r'^[A-Z]+$' )),
236
+ );
237
+
238
+ // Act & Assert
239
+ // Pass
240
+ expect (validator ('abc' ), isNull);
241
+ expect (validator ('ABC' ), isNull);
242
+
243
+ // Fail
244
+ expect (validator ('abc123' ), isNotNull);
245
+ expect (validator (null ), isNotNull);
246
+ expect (validator ('' ), isNotNull);
247
+ });
248
+
249
+ test ('FormFieldValidatorExtensions.when with custom condition' , () {
250
+ // Arrange
251
+ final FormFieldValidator <String > validator =
252
+ FormBuilderValidators .required < String > ();
253
+ final FormFieldValidator <String > conditionalValidator =
254
+ validator.when ((String ? value) => value != 'skip' );
255
+
256
+ // Act & Assert
257
+ // Pass
258
+ expect (conditionalValidator ('test' ), isNull);
259
+
260
+ // Fail
261
+ expect (conditionalValidator ('skip' ), isNull);
262
+ expect (conditionalValidator (null ), isNotNull);
263
+ expect (conditionalValidator ('' ), isNotNull);
264
+ });
265
+
266
+ test ('FormFieldValidatorExtensions.unless with custom condition' , () {
267
+ // Arrange
268
+ final FormFieldValidator <String > validator =
269
+ FormBuilderValidators .required < String > ();
270
+ final FormFieldValidator <String > conditionalValidator =
271
+ validator.unless ((String ? value) => value == 'skip' );
272
+
273
+ // Act & Assert
274
+ // Pass
275
+ expect (conditionalValidator ('skip' ), isNull);
276
+
277
+ // Fail
278
+ expect (conditionalValidator ('test' ), isNull);
279
+ expect (conditionalValidator (null ), isNotNull);
280
+ expect (conditionalValidator ('' ), isNotNull);
281
+ });
182
282
});
183
283
}
0 commit comments