package net.karneim.pojobuilder.sourcegen; import static org.assertj.core.api.Assertions.assertThat; import java.io.StringWriter; import net.karneim.pojobuilder.model.ManualBuilderM; import net.karneim.pojobuilder.model.TypeM; import net.karneim.pojobuilder.model.TypeVariableM; import net.karneim.pojobuilder.testenv.TestBase; import org.junit.Before; import org.junit.Test; import com.squareup.javawriter.JavaWriter; public class ManualBuilderSourceGenerator_GenerateMinimalManualBuilder_Test extends TestBase { StringWriter out; JavaWriter writer; ManualBuilderSourceGenerator underTest; @Before public void init() { out = new StringWriter(); writer = new JavaWriter(out); underTest = new ManualBuilderSourceGenerator(writer); } @Test public void testGenerateSourceWithMinimalManualBuilder() throws Exception { // Given: @formatter:off ManualBuilderM builder = new ManualBuilderM(); builder.setPojoType(new TypeM("com.example.output", "Sample")); builder.setType(new TypeM("com.example.output","SampleBuilder")); builder.setBaseType(new TypeM("com.example.output","AbstractSampleBuilder")); // When: underTest.generateSource(builder); // Then: @formatter:on String actual = out.toString().replace("\r", ""); logDebug(actual); String expected = loadResourceFromClasspath("GenerateMinimalManualBuilder.expected.txt"); assertThat(actual).isEqualTo(expected); } @Test public void testGenerateSourceWithMinimalManualBuilderHavingTypeParameter() throws Exception { // Given: @formatter:off ManualBuilderM builder = new ManualBuilderM(); TypeVariableM T = new TypeVariableM("T") .whichExtends(new TypeM("java.lang","Number")); builder.setPojoType(new TypeM("com.example.output", "Sample") .withTypeParameter(T) ); builder.setType(new TypeM("com.example.output","SampleBuilder") .withTypeParameter(T) ); builder.setBaseType(new TypeM("com.example.output","AbstractSampleBuilder") .withTypeParameter(T) ); // When: underTest.generateSource(builder); // Then: @formatter:on String actual = out.toString().replace("\r", ""); logDebug(actual); String expected = loadResourceFromClasspath("GenerateMinimalManualBuilderHavingTypeParameter.expected.txt"); assertThat(actual).isEqualTo(expected); } }