package net.karneim.pojobuilder.processor.with.staticfactorymethod;
import static net.karneim.pojobuilder.PbAssertions.assertThat;
import net.karneim.pojobuilder.processor.with.ProcessorTestSupport;
import net.karneim.pojobuilder.testenv.JavaProject.Compilation;
import org.junit.Test;
/**
* @feature The {@link net.karneim.pojobuilder.processor.AnnotationProcessor} generates builder classes.
*/
public class AnnotationProcessor_StaticFactoryMethod_Test extends ProcessorTestSupport {
/**
* @scenario the builder is created with a factory method
*/
@Test
public void testShouldGenerateFactoryMethod() {
// Given:
sourceFor(Trouble.class);
// When:
prj.compile();
// Then:
assertThat(prj)
.generatedSameSourceAs(TroubleBuilder.class)
.compiled(TroubleBuilder.class)
.reported(Compilation.Success);
}
/**
* @scenario the manual builder is created with a factory method
*/
@Test
public void testShouldGenerateFactoryMethodOnManualClass() {
// Given:
sourceFor(Strife.class);
// When:
prj.compile();
// Then:
assertThat(prj)
.generatedSameSourceAs("net.karneim.pojobuilder.processor.with.staticfactorymethod.AbstractStrifeBuilder")
.generatedSameSourceAs("net.karneim.pojobuilder.processor.with.staticfactorymethod.StrifeBuilder")
.reported(Compilation.Success);
}
/**
* @scenario the builder is created with a factory method
*/
@Test
public void testShouldGenerateFactoryMethodForGenericPojo() {
// Given:
sourceFor(Container.class);
// When:
prj.compile();
// Then:
assertThat(prj)
.generatedSameSourceAs(ContainerBuilder.class)
.compiled(ContainerBuilder.class)
.reported(Compilation.Success);
}
}