/** * Constructs a {@link RegexValidator} which validates a string based on a {@link Pattern} * * @param regex the regular expression which should be used to validate an input string * @return a {@link RegexValidator} which validates a string based on a {@link Pattern} */ public static RegexValidator of(String regex) { return new RegexValidator(regex, "Value \"{0}\" does not match regex {1}"); }
public static <T extends Comparable> RangeValidator<T> min(T min) { return new RangeValidator<>(min, null, true); }
@Test void testMax() { final RangeValidator<Integer> validator = RangeValidator.max(3); validator.assertValid(1); validator.assertValid(2); validator.assertValid(3); assertThatThrownBy(() -> validator.assertValid(4)).isInstanceOf(IllegalArgumentException.class); }
@Test void testMin() { final RangeValidator<Integer> validator = RangeValidator.min(1); assertThatThrownBy(() -> validator.assertValid(0)).isInstanceOf(IllegalArgumentException.class); validator.assertValid(1); validator.assertValid(2); }
@Test void testRange() { final RangeValidator<Integer> validator = RangeValidator.isInRange(1, 3); assertThatThrownBy(() -> validator.assertValid(0)).isInstanceOf(IllegalArgumentException.class); validator.assertValid(1); validator.assertValid(2); validator.assertValid(3); assertThatThrownBy(() -> validator.assertValid(4)).isInstanceOf(IllegalArgumentException.class); }
@Test void testNotInRange() { final RangeValidator<Integer> validator = RangeValidator.isNotInRange(1, 3); validator.assertValid(0); assertThatThrownBy(() -> validator.assertValid(1)).isInstanceOf(IllegalArgumentException.class); assertThatThrownBy(() -> validator.assertValid(2)).isInstanceOf(IllegalArgumentException.class); assertThatThrownBy(() -> validator.assertValid(3)).isInstanceOf(IllegalArgumentException.class); validator.assertValid(4); }
@Test void testRegexValidator() { SoftAssertions.assertSoftly(softly -> { softly.assertThatCode(() -> RegexValidator.of("foo").assertValid("foo")).doesNotThrowAnyException(); // checking for nullness is not the responsibility of the validator, but it must be null safe softly.assertThatCode(() -> RegexValidator.of("foo").assertValid(null)).doesNotThrowAnyException(); softly.assertThatCode(() -> RegexValidator.of("foo").assertValid("bar")) .isInstanceOf(IllegalArgumentException.class) .hasMessage("Value \"bar\" does not match regex foo"); softly.assertThatCode(() -> RegexValidator.of("foo", "{0} is not {1}").assertValid("bar")) .isInstanceOf(IllegalArgumentException.class) .hasMessage("bar is not foo"); }); } }
@Test void testTimeDuration() { final RangeValidator<TimeDuration> validator = RangeValidator.min(TimeDuration.of("1s")); assertThatThrownBy(() -> validator.assertValid(TimeDuration.of("0s"))).isInstanceOf(IllegalArgumentException.class); validator.assertValid(TimeDuration.of("1s")); validator.assertValid(TimeDuration.of("2s")); } }
public static <T extends Comparable> RangeValidator<T> isInRange(T min, T max) { return new RangeValidator<>(min, max, true); }
/** * Constructs a {@link RegexValidator} which validates a string based on a {@link Pattern} * * @param regex the regular expression which should be used to validate an input string * @param errorMessagePattern a error message format pattern. The placeholder {@code {0}} contains the actual value, * while the placeholder {@code {1}} represents the regex. * @return a {@link RegexValidator} which validates a string based on a {@link Pattern} */ public static RegexValidator of(String regex, String errorMessagePattern) { return new RegexValidator(regex, errorMessagePattern); }
public static <T extends Comparable> RangeValidator<T> isNotInRange(T min, T max) { return new RangeValidator<>(min, max, false); }
public static <T extends Comparable> RangeValidator<T> max(T max) { return new RangeValidator<>(null, max, true); }