package com.querydsl.core.types.dsl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import java.util.Collection; import java.util.Map; import org.junit.Test; public class PathBuilderValidatorTest { public static class Customer { String name; Collection<Integer> collection; Map<String, Integer> map; } public static class ExtendedCustomer extends Customer { } public static class Project { public String getName() { return ""; } public Collection<Integer> getCollection() { return null; } public Map<String, Integer> getMap() { return null; } } public static class ExtendedProject extends Project { public boolean isStarted() { return true; } } @Test public void defaults() { assertEquals(String.class, PathBuilderValidator.DEFAULT.validate(Customer.class, "name", String.class)); assertEquals(String.class, PathBuilderValidator.DEFAULT.validate(ExtendedCustomer.class, "name", String.class)); assertEquals(String.class, PathBuilderValidator.DEFAULT.validate(Project.class, "name", String.class)); assertEquals(String.class, PathBuilderValidator.DEFAULT.validate(ExtendedProject.class, "name", String.class)); } @Test public void fields() { assertEquals(String.class, PathBuilderValidator.FIELDS.validate(Customer.class, "name", String.class)); assertEquals(String.class, PathBuilderValidator.FIELDS.validate(ExtendedCustomer.class, "name", String.class)); assertEquals(Integer.class, PathBuilderValidator.FIELDS.validate(Customer.class, "collection", Collection.class)); assertEquals(Integer.class, PathBuilderValidator.FIELDS.validate(Customer.class, "map", Map.class)); assertNull(PathBuilderValidator.FIELDS.validate(Project.class, "name", String.class)); assertNull(PathBuilderValidator.FIELDS.validate(ExtendedProject.class, "name", String.class)); } @Test public void properties() { assertNull(PathBuilderValidator.PROPERTIES.validate(Customer.class, "name", String.class)); assertNull(PathBuilderValidator.PROPERTIES.validate(ExtendedCustomer.class, "name", String.class)); assertEquals(String.class, PathBuilderValidator.PROPERTIES.validate(Project.class, "name", String.class)); assertEquals(String.class, PathBuilderValidator.PROPERTIES.validate(ExtendedProject.class, "name", String.class)); assertEquals(Boolean.class, PathBuilderValidator.PROPERTIES.validate(ExtendedProject.class, "started", Boolean.class)); assertEquals(Integer.class, PathBuilderValidator.PROPERTIES.validate(Project.class, "collection", Collection.class)); assertEquals(Integer.class, PathBuilderValidator.PROPERTIES.validate(Project.class, "map", Map.class)); } }