package net.karneim.pojobuilder.processor.with.generationgap;
import net.karneim.pojobuilder.processor.AnnotationProcessor;
import net.karneim.pojobuilder.processor.with.ProcessorTestSupport;
import org.junit.Test;
import static net.karneim.pojobuilder.PbAssertions.assertThat;
import static net.karneim.pojobuilder.testenv.JavaProject.Compilation;
/**
* @feature The {@link AnnotationProcessor} generates builder classes.
*/
public class AnnotationProcessor_GenerationGap_Test extends ProcessorTestSupport {
/**
* @throws Exception
* @scenario Should generate AbstractOrderBuilder and OrderBuilder
*/
@Test
public void testShouldGenerateAbstractPlayerBuilderAndPlayerBuilder() {
// Given:
sourceFor(Order.class);
// When:
prj.compile();
// Then:
assertThat(prj)
.generatedSameSourceAs("net.karneim.pojobuilder.processor.with.generationgap.AbstractOrderBuilder")
.generatedSameSourceAs("net.karneim.pojobuilder.processor.with.generationgap.OrderBuilder")
.reported(Compilation.Success);
}
/**
* @throws Exception
* @scenario Should generate {@link AbstractPlayerBuilder} but not {@link PlayerBuilder} since it already exists.
*/
@Test
public void testShouldGenerateOnlyAbstractPlayerBuilderButNotPlayerBuilder() {
// Given:
sourceFor(Player.class);
// When:
prj.compile();
// Then:
assertThat(prj)
.generatedSameSourceAs(AbstractPlayerBuilder.class)
.compiled(AbstractPlayerBuilder.class)
.didNotGenerateSourceFor(PlayerBuilder.class)
.compiled(PlayerBuilder.class)
.reported(Compilation.Success);
}
}