package com.vaadin.data.validator;
import java.time.LocalDate;
import org.junit.Test;
public class RangeValidatorTest extends ValidatorTestBase {
@Test
public void testIntegerRangeValidIntPasses() {
assertPasses(10,
RangeValidator.of("Must be between -123 and 42", -123, 42));
}
@Test
public void testIntegerRangeInvalidIntFails() {
assertFails(123,
RangeValidator.of("Must be between -123 and 42", -123, 42));
}
@Test
public void testRangeWithoutUpperBoundLargeIntegerPasses() {
assertPasses(Integer.MAX_VALUE,
RangeValidator.of("Must be at least 18", 18, null));
}
@Test
public void testRangeWithoutUpperBoundSmallIntegerFails() {
assertFails(17, RangeValidator.of("Must be at least 18", 18, null));
}
@Test
public void testRangeWithoutLowerBoundSmallIntegerPasses() {
assertPasses(Integer.MIN_VALUE,
RangeValidator.of("Must be at most 0", null, 0));
}
@Test
public void testRangeWithoutLowerBoundLargeIntegerFails() {
assertFails(1, RangeValidator.of("Must be at most 0", null, 0));
}
@Test
public void testUnboundedRangePassesEverything() {
RangeValidator<Integer> v = RangeValidator.of("This should not happen!",
null, null);
assertPasses(Integer.MIN_VALUE, v);
assertPasses(0, v);
assertPasses(null, v);
assertPasses(Integer.MAX_VALUE, v);
}
@Test
public void testBoundsInclusiveByDefault() {
RangeValidator<Integer> v = RangeValidator
.of("Must be between -10 and 10", -10, 10);
assertPasses(-10, v);
assertPasses(10, v);
}
@Test
public void testUpperBoundExclusive() {
RangeValidator<Integer> v = RangeValidator
.of("Must be between -10 and 10", -10, 10);
v.setMaxValueIncluded(false);
assertPasses(-10, v);
assertPasses(9, v);
assertFails(10, v);
}
@Test
public void testLowerBoundExclusive() {
RangeValidator<Integer> v = RangeValidator
.of("Must be between -10 and 10", -10, 10);
v.setMinValueIncluded(false);
assertFails(-10, v);
assertPasses(-9, v);
assertPasses(10, v);
}
@Test
public void testNullLessThanEverything() {
RangeValidator<Integer> v = RangeValidator.of("Must be any integer",
Integer.MIN_VALUE, Integer.MAX_VALUE);
assertPasses(null, v);
v = RangeValidator.of("Must be very small", null, Integer.MIN_VALUE);
assertPasses(null, v);
}
@Test
public void testDateRange() {
RangeValidator<LocalDate> v = RangeValidator.of("Date must be in 2016",
LocalDate.of(2016, 1, 1), LocalDate.of(2016, 12, 31));
assertFails(LocalDate.ofEpochDay(0), v);
assertPasses(LocalDate.of(2016, 7, 31), v);
assertFails(LocalDate.ofEpochDay(1_000_000_000), v);
}
}