package com.vaadin.v7.tests.data.validator;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;
import org.junit.Before;
import org.junit.Test;
import com.vaadin.v7.data.validator.DateRangeValidator;
import com.vaadin.v7.shared.ui.datefield.Resolution;
public class DateRangeValidatorTest {
Calendar startDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"),
Locale.ENGLISH);
Calendar endDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"),
Locale.ENGLISH);
private DateRangeValidator cleanValidator;
private DateRangeValidator minValidator;
private DateRangeValidator maxValidator;
private DateRangeValidator minMaxValidator;
@Before
public void setUp() {
startDate.set(2000, Calendar.JANUARY, 1, 12, 0, 0);
endDate.set(2000, Calendar.FEBRUARY, 20, 12, 0, 0);
cleanValidator = new DateRangeValidator("Given date outside range",
null, null, Resolution.DAY);
minValidator = new DateRangeValidator("Given date before startDate",
startDate.getTime(), null, Resolution.DAY);
maxValidator = new DateRangeValidator("Given date after endDate", null,
endDate.getTime(), Resolution.DAY);
minMaxValidator = new DateRangeValidator("Given date outside range",
startDate.getTime(), endDate.getTime(), Resolution.DAY);
}
@Test
public void testNullValue() {
assertTrue("Didn't accept null", cleanValidator.isValid(null));
assertTrue("Didn't accept null", minValidator.isValid(null));
assertTrue("Didn't accept null", maxValidator.isValid(null));
assertTrue("Didn't accept null", minMaxValidator.isValid(null));
}
@Test
public void testMinValue() {
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"),
Locale.ENGLISH);
cal.setTime(startDate.getTime());
cal.add(Calendar.SECOND, 1);
assertTrue("Validator without ranges didn't accept value",
cleanValidator.isValid(cal.getTime()));
assertTrue("Didn't accept valid value",
minValidator.isValid(cal.getTime()));
cal.add(Calendar.SECOND, -3);
assertFalse("Accepted too small value",
minValidator.isValid(cal.getTime()));
}
@Test
public void testMaxValue() {
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"),
Locale.ENGLISH);
cal.setTime(endDate.getTime());
cal.add(Calendar.SECOND, -1);
assertTrue("Validator without ranges didn't accept value",
cleanValidator.isValid(cal.getTime()));
assertTrue("Didn't accept valid value",
maxValidator.isValid(cal.getTime()));
cal.add(Calendar.SECOND, 2);
assertFalse("Accepted too large value",
maxValidator.isValid(cal.getTime()));
}
@Test
public void testMinMaxValue() {
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"),
Locale.ENGLISH);
cal.setTime(endDate.getTime());
assertTrue("Didn't accept valid value",
minMaxValidator.isValid(cal.getTime()));
cal.add(Calendar.SECOND, 1);
assertFalse("Accepted too large value",
minMaxValidator.isValid(cal.getTime()));
cal.setTime(startDate.getTime());
assertTrue("Didn't accept valid value",
minMaxValidator.isValid(cal.getTime()));
cal.add(Calendar.SECOND, -1);
assertFalse("Accepted too small value",
minMaxValidator.isValid(cal.getTime()));
}
}