/** * @param validator * @return a new instance of a validator that negates the given one */ public static Validator<String> not(Validator<String> validator) { return v -> !validator.isValid(v); }
/** * @param validator * @return a new instance of the a validator that considers empty string as valid, it delegates otherwise */ public static Validator<String> validEmpty(Validator<String> validator) { return v -> { if (isNotEmpty(v)) { return validator.isValid(v); } return true; }; }
/** * @param validator * @return a new instance of a validator that returns true if all the given validators return true */ public static Validator<String> and(Validator<String>... validators) { return v -> Arrays.stream(validators).allMatch(validator -> validator.isValid(v)); } }
public void validate(T value) { LOG.trace("Validating {}", value); if (validator.isValid(value)) { validationState.set(ValidationState.VALID); } else { validationState.set(ValidationState.INVALID); } }
@Test public void testPositive() throws IOException { Path test = Files.createTempFile("tmp", "test"); Assert.assertTrue(victim.isValid(test.toAbsolutePath().toString())); Files.delete(test); }
@Test public void testPositive() throws IOException { Path test = Files.createTempDirectory("tmp"); Assert.assertTrue(victim.isValid(test.toAbsolutePath().toString())); Files.delete(test); }
@Test public void existingAllNoExtension() throws IOException { Validator<String> victim = Validators.existingFileType(FileType.ALL); Path test = Files.createTempFile("tmp", ""); Assert.assertTrue(victim.isValid(test.toAbsolutePath().toString())); Files.delete(test); }
@Test public void existingAll() throws IOException { Validator<String> victim = Validators.existingFileType(FileType.ALL); Path test = Files.createTempFile("tmp", ".norris"); Assert.assertTrue(victim.isValid(test.toAbsolutePath().toString())); Files.delete(test); }
@Test public void existingHtml() throws IOException { Validator<String> victim = Validators.existingFileType(FileType.HTML); Path test = Files.createTempFile("tmp", ".htm"); Assert.assertTrue(victim.isValid(test.toAbsolutePath().toString())); Files.delete(test); }
@Test public void existingPdfInsensitive() throws IOException { Validator<String> victim = Validators.existingFileType(FileType.PDF); Path test = Files.createTempFile("tmp", ".PdF"); Assert.assertTrue(victim.isValid(test.toAbsolutePath().toString())); Files.delete(test); }
@Test public void empty() { assertFalse(victim.isValid("")); } }
@Test public void andValidator() { Validator<String> first = Validators.nonBlank(); Validator<String> second = Validators.positiveInteger(); assertTrue(first.isValid("dads")); assertFalse(first.isValid(" ")); assertTrue(second.isValid("10")); assertFalse(second.isValid("-10")); assertFalse(and(first, second).isValid(" ")); assertFalse(and(first, second).isValid("dads")); assertTrue(and(first, second).isValid("10")); assertFalse(and(first, second).isValid("-10")); } }
@Test public void invalid() { assertFalse(victim.isValid("dsdsa")); }
@Test public void testNegative() { assertFalse(victim.isValid("-123")); }