package org.mongodb.morphia.query.validation;
import org.junit.Test;
import java.util.ArrayList;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
public class DoubleTypeValidatorTest {
@Test
public void shouldAllowDoubleTypeWithDoublePrimitiveValue() {
// given
ArrayList<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = DoubleTypeValidator.getInstance().apply(Double.class, 2.2, validationFailures);
// then
assertThat(validationApplied, is(true));
assertThat(validationFailures.size(), is(0));
}
@Test
public void shouldAllowDoubleTypeWithDoubleValue() {
// given
ArrayList<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = DoubleTypeValidator.getInstance().apply(Double.class, new Double(2.2), validationFailures);
// then
assertThat(validationApplied, is(true));
assertThat(validationFailures.size(), is(0));
}
@Test
public void shouldAllowValuesOfIntegerIfTypeIsDouble() {
// given
ArrayList<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = DoubleTypeValidator.getInstance().apply(Double.class, new Integer(1), validationFailures);
// then
assertThat(validationApplied, is(true));
assertThat(validationFailures.size(), is(0));
}
@Test
public void shouldAllowValuesOfIntegerIfTypeIsPrimitiveDouble() {
// given
ArrayList<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = DoubleTypeValidator.getInstance().apply(double.class, new Integer(1), validationFailures);
// then
assertThat(validationApplied, is(true));
assertThat(validationFailures.size(), is(0));
}
@Test
public void shouldAllowValuesOfLongIfTypeIsPrimitiveDouble() {
// given
ArrayList<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = DoubleTypeValidator.getInstance().apply(double.class, new Long(1), validationFailures);
// then
assertThat(validationApplied, is(true));
assertThat(validationFailures.size(), is(0));
}
@Test
public void shouldNotApplyValidationIfTypeIsNotDouble() {
// given
ArrayList<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = DoubleTypeValidator.getInstance().apply(String.class, new Long(1), validationFailures);
// then
assertThat(validationApplied, is(false));
assertThat(validationFailures.size(), is(0));
}
@Test
public void shouldOnlyValuesOfLongIfTypeIsDouble() {
// given
ArrayList<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = DoubleTypeValidator.getInstance().apply(Double.class, new Long(1), validationFailures);
// then
assertThat(validationApplied, is(true));
assertThat(validationFailures.size(), is(0));
}
@Test
public void shouldRejectValueThatIsNotApplicableToDouble() {
// given
ArrayList<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = DoubleTypeValidator.getInstance().apply(Double.class, "something not a double", validationFailures);
// then
assertThat(validationApplied, is(true));
assertThat(validationFailures.size(), is(1));
}
}