package net.karneim.pojobuilder.processor.with.baseclass.andgenerationgap;
import net.karneim.pojobuilder.processor.AnnotationProcessor;
import net.karneim.pojobuilder.processor.with.ProcessorTestSupport;
import net.karneim.pojobuilder.testenv.JavaProject.Compilation;
import org.junit.Test;
import static net.karneim.pojobuilder.PbAssertions.assertThat;
/**
* @feature The {@link AnnotationProcessor} generates builder classes.
*/
public class AnnotationProcessor_BaseclassAndGenerationGap_Test extends ProcessorTestSupport {
/**
* @throws Exception
* @scenario the abstract builder is created with a simple base class.
*/
@Test
public void testShouldGenerateBuilderWithSimpleBaseClass() {
// Given:
sourceFor(Pojo1.class,SimpleBaseBuilder.class);
// When:
prj.compile();
// Then:
assertThat(prj)
.generatedSameSourceAs("net.karneim.pojobuilder.processor.with.baseclass.andgenerationgap.AbstractPojo1Builder")
.generatedSameSourceAs("net.karneim.pojobuilder.processor.with.baseclass.andgenerationgap.Pojo1Builder")
.reported(Compilation.Success);
}
/**
* @throws Exception
* @scenario the abstract builder is created with a base class declaring generic build() method.
*/
@Test
public void testShouldGenerateBuilderWithBaseClassThatDeclaresGenericBuildMethod() {
// Given:
sourceFor(Pojo2.class,BaseBuilderWithGenericBuildMethod.class);
// When:
prj.compile();
// Then:
assertThat(prj)
.generatedSameSourceAs("net.karneim.pojobuilder.processor.with.baseclass.andgenerationgap.AbstractPojo2Builder")
.generatedSameSourceAs("net.karneim.pojobuilder.processor.with.baseclass.andgenerationgap.Pojo2Builder")
.reported(Compilation.Success);
}
/**
* @throws Exception
* @scenario the abstract builder is created with a base class declaring a raw build() method.
*/
@Test
public void testShouldGenerateBuilderWithBaseClassThatDeclaresRawBuildMethod() {
// Given:
sourceFor(Pojo3.class);
sourceFor(BaseBuilderWithRawBuildMethod.class);
// When:
prj.compile();
// Then:
assertThat(prj)
.generatedSameSourceAs("net.karneim.pojobuilder.processor.with.baseclass.andgenerationgap.AbstractPojo3Builder")
.generatedSameSourceAs("net.karneim.pojobuilder.processor.with.baseclass.andgenerationgap.Pojo3Builder")
.reported(Compilation.Success);
}
}