package net.karneim.pojobuilder.processor.with.optionals;
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_WithGuavaOptionals_Test extends ProcessorTestSupport {
/**
* @throws Exception
* @scenario the builder contains withParam(Optional<X>) methods
*/
@Test
public void testShouldGenerateGuavaOptionalsForObjectTypes() {
// Given:
sourceFor(PojoWithGuavaOptional.class);
// When:
prj.compile();
// Then:
assertThat(prj).generatedSameSourceAs(PojoWithGuavaOptionalBuilder.class)
.compiled(PojoWithGuavaOptionalBuilder.class).reported(Compilation.Success);
}
/**
* @throws Exception
* @scenario the builder withParam(Optional<X>) methods should not generated if the member is already an
* Optional
*/
@Test
public void testShouldNotGenerateGuavaOptionalsForOptionalMembers() {
// Given:
sourceFor(PojoWithGuavaOptional2.class);
// When:
prj.compile();
// Then:
assertThat(prj).generatedSameSourceAs(PojoWithGuavaOptional2Builder.class)
.compiled(PojoWithGuavaOptional2Builder.class).reported(Compilation.Success);
}
}