package org.castor.jdo.jpa.info; import static org.junit.Assert.assertTrue; import java.util.Set; import org.castor.core.annotationprocessing.AnnotationProcessor; import org.castor.jdo.jpa.processors.fieldprocessors.JPAColumnProcessor; import org.castor.jdo.jpa.processors.fieldprocessors.JPAGeneratedValueProcessor; import org.castor.jdo.jpa.processors.fieldprocessors.JPAIdProcessor; import org.castor.jdo.jpa.processors.fieldprocessors.JPAJoinColumnProcessor; import org.castor.jdo.jpa.processors.fieldprocessors.JPAJoinTableProcessor; import org.castor.jdo.jpa.processors.fieldprocessors.JPAManyToManyProcessor; import org.castor.jdo.jpa.processors.fieldprocessors.JPAManyToOneProcessor; import org.castor.jdo.jpa.processors.fieldprocessors.JPAOneToManyProcessor; import org.castor.jdo.jpa.processors.fieldprocessors.JPAOneToOneProcessor; import org.castor.jdo.jpa.processors.fieldprocessors.JPASequenceGeneratorFieldProcessor; import org.castor.jdo.jpa.processors.fieldprocessors.JPATableGeneratorFieldProcessor; import org.castor.jdo.jpa.processors.fieldprocessors.JPATransientProcessor; import org.junit.Before; import org.junit.Test; public class JPAFieldAnnotationProcessingServiceTest { JPAFieldAnnotationProcessingService processingService; @Before public void setUp() throws Exception { processingService = new JPAFieldAnnotationProcessingService(); } @Test public void basicProcessorIsRegistered() throws Exception { assertThatProcessorTypeIsRegisteredWithService(JPASequenceGeneratorFieldProcessor.class); } @Test public void columnProcessorIsRegistered() throws Exception { assertThatProcessorTypeIsRegisteredWithService(JPAColumnProcessor.class); } @Test public void idProcessorIsRegistered() throws Exception { assertThatProcessorTypeIsRegisteredWithService(JPAIdProcessor.class); } @Test public void joinColumnProcessorIsRegistered() throws Exception { assertThatProcessorTypeIsRegisteredWithService(JPAJoinColumnProcessor.class); } @Test public void joinTableProcessorIsRegistered() throws Exception { assertThatProcessorTypeIsRegisteredWithService(JPAJoinTableProcessor.class); } @Test public void manyToManyProcessorIsRegistered() throws Exception { assertThatProcessorTypeIsRegisteredWithService(JPAManyToManyProcessor.class); } @Test public void oneToManyProcessorIsRegistered() throws Exception { assertThatProcessorTypeIsRegisteredWithService(JPAOneToManyProcessor.class); } @Test public void manyToOneProcessorIsRegistered() throws Exception { assertThatProcessorTypeIsRegisteredWithService(JPAManyToOneProcessor.class); } @Test public void oneToOneProcessorIsRegistered() throws Exception { assertThatProcessorTypeIsRegisteredWithService(JPAOneToOneProcessor.class); } @Test public void transientProcessorIsRegistered() throws Exception { assertThatProcessorTypeIsRegisteredWithService(JPATransientProcessor.class); } @Test public void sequenceGeneratorProcessorIsRegistered() throws Exception { assertThatProcessorTypeIsRegisteredWithService(JPASequenceGeneratorFieldProcessor.class); } @Test public void generatedValueProcessorIsRegistered() throws Exception { assertThatProcessorTypeIsRegisteredWithService(JPAGeneratedValueProcessor.class); } @Test public void tableGeneratorProcessorIsRegistered() throws Exception { assertThatProcessorTypeIsRegisteredWithService(JPATableGeneratorFieldProcessor.class); } public void assertThatProcessorTypeIsRegisteredWithService( Class<? extends AnnotationProcessor> processorType) throws Exception { boolean containsProcessor = false; Set<AnnotationProcessor> processorSet = processingService .getAllAnnotationProcessors(); for (AnnotationProcessor processor : processorSet) { if (processor.getClass() == processorType) { containsProcessor = true; } } assertTrue(containsProcessor); } }