package org.mongodb.morphia.query.validation; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; public class DefaultTypeValidatorTest { @Test public void shouldAllowTypesThatAreSuperclasses() { // given List<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>(); // when boolean validationApplied = DefaultTypeValidator.getInstance().apply(Map.class, new HashMap(), validationFailures); // then assertThat(validationApplied, is(true)); assertThat(validationFailures.size(), is(0)); } @Test public void shouldAllowTypesThatMatchTheClassOfTheValue() { // given List<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>(); // expect assertThat(DefaultTypeValidator.getInstance().apply(String.class, "some String", validationFailures), is(true)); } @Test public void shouldAllowTypesThatTheRealTypeOfTheValue() { // given List<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>(); // given List<Integer> valueAsList = Arrays.asList(1); assertThat(DefaultTypeValidator.getInstance().apply(ArrayList.class, valueAsList, validationFailures), is(true)); } @Test public void shouldRejectTypesAndValuesThatDoNotMatch() { // given List<ValidationFailure> validationFailures = new ArrayList<ValidationFailure>(); // when boolean validationApplied = DefaultTypeValidator.getInstance().apply(String.class, 1, validationFailures); // then assertThat(validationApplied, is(true)); assertThat(validationFailures.size(), is(1)); } }