package org.openrdf.repository.object.config; import java.util.Collection; import junit.framework.Test; import org.openrdf.annotations.Iri; import org.openrdf.model.ValueFactory; import org.openrdf.model.impl.URIImpl; import org.openrdf.model.impl.ValueFactoryImpl; import org.openrdf.repository.object.base.RepositoryTestCase; import org.openrdf.repository.object.managers.RoleMapper; public class RoleMapperTest extends RepositoryTestCase { public static Test suite() throws Exception { return RepositoryTestCase.suite(RoleMapperTest.class); } private RoleMapper mapper; private ValueFactory vf; @Iri("urn:test:Display") public interface Display {} @Iri("urn:test:SubDisplay") public interface SubDisplay extends Display {} public static class DisplaySupport {} public void testSubclasses1() throws Exception { mapper.addConcept(Display.class); mapper.addConcept(SubDisplay.class); mapper.addBehaviour(DisplaySupport.class, new URIImpl("urn:test:Display")); assertTrue(findRoles("urn:test:Display").contains(Display.class)); assertTrue(findRoles("urn:test:Display").contains(DisplaySupport.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(Display.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(SubDisplay.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(DisplaySupport.class)); } public void testSubclasses2() throws Exception { mapper.addBehaviour(DisplaySupport.class, new URIImpl("urn:test:Display")); mapper.addConcept(Display.class); mapper.addConcept(SubDisplay.class); assertTrue(findRoles("urn:test:Display").contains(Display.class)); assertTrue(findRoles("urn:test:Display").contains(DisplaySupport.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(Display.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(SubDisplay.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(DisplaySupport.class)); } public void testSubclasses3() throws Exception { mapper.addConcept(Display.class); mapper.addBehaviour(DisplaySupport.class, new URIImpl("urn:test:Display")); mapper.addConcept(SubDisplay.class); assertTrue(findRoles("urn:test:Display").contains(Display.class)); assertTrue(findRoles("urn:test:Display").contains(DisplaySupport.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(Display.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(SubDisplay.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(DisplaySupport.class)); } public void testSubclasses4() throws Exception { mapper.addConcept(SubDisplay.class); mapper.addConcept(Display.class); mapper.addBehaviour(DisplaySupport.class, new URIImpl("urn:test:Display")); assertTrue(findRoles("urn:test:Display").contains(Display.class)); assertTrue(findRoles("urn:test:Display").contains(DisplaySupport.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(Display.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(SubDisplay.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(DisplaySupport.class)); } public void testSubclasses5() throws Exception { mapper.addBehaviour(DisplaySupport.class, new URIImpl("urn:test:Display")); mapper.addConcept(SubDisplay.class); mapper.addConcept(Display.class); assertTrue(findRoles("urn:test:Display").contains(Display.class)); assertTrue(findRoles("urn:test:Display").contains(DisplaySupport.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(Display.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(SubDisplay.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(DisplaySupport.class)); } public void testSubclasses6() throws Exception { mapper.addConcept(SubDisplay.class); mapper.addBehaviour(DisplaySupport.class, new URIImpl("urn:test:Display")); mapper.addConcept(Display.class); assertTrue(findRoles("urn:test:Display").contains(Display.class)); assertTrue(findRoles("urn:test:Display").contains(DisplaySupport.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(Display.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(SubDisplay.class)); assertTrue(findRoles("urn:test:SubDisplay").contains(DisplaySupport.class)); } private Collection<Class<?>> findRoles(String uri) { return mapper.findRoles(vf.createURI(uri)); } @Override protected void setUp() throws Exception { super.setUp(); vf = ValueFactoryImpl.getInstance(); ObjectRepositoryFactory factory = new ObjectRepositoryFactory(); mapper = factory.createRoleMapper(vf); } }