package org.mongodb.morphia.query.validation;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
public class LongTypeValidatorTest {
@Test
public void shouldAllowIntValueWhenTypeIsLong() {
// given
List<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = LongTypeValidator.getInstance().apply(Long.class, 1, validationFailures);
// then
assertThat(validationApplied, is(true));
assertThat(validationFailures.size(), is(0));
}
@Test
public void shouldAllowIntValueWhenTypeIsPrimitiveLong() {
// given
List<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = LongTypeValidator.getInstance().apply(long.class, 1, validationFailures);
// then
assertThat(validationApplied, is(true));
assertThat(validationFailures.size(), is(0));
}
@Test
public void shouldAllowIntegerValueWhenTypeIsLong() {
// given
List<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = LongTypeValidator.getInstance().apply(Long.class, new Integer(1), validationFailures);
// then
assertThat(validationApplied, is(true));
assertThat(validationFailures.size(), is(0));
}
@Test
public void shouldAllowIntegerValueWhenTypeIsPrimitiveLong() {
// given
List<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = LongTypeValidator.getInstance().apply(long.class, new Integer(1), validationFailures);
// then
assertThat(validationApplied, is(true));
assertThat(validationFailures.size(), is(0));
}
@Test
public void shouldNotApplyValidationIfTypeIsNotIntegerOrLong() {
// given
List<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = LongTypeValidator.getInstance().apply(String.class, new Integer(1), validationFailures);
// then
assertThat(validationApplied, is(false));
assertThat(validationFailures.size(), is(0));
}
@Test
public void shouldRejectNonIntegerValueIfTypeIsLong() {
// given
List<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = LongTypeValidator.getInstance().apply(Long.class, "some non int value", validationFailures);
// then
assertThat(validationApplied, is(true));
assertThat(validationFailures.size(), is(1));
}
@Test
public void shouldRejectNonIntegerValueIfTypeIsPrimitiveLong() {
// given
List<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
// when
boolean validationApplied = LongTypeValidator.getInstance().apply(long.class, "some non int value", validationFailures);
// then
assertThat(validationApplied, is(true));
assertThat(validationFailures.size(), is(1));
}
}