aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/com/squareup
diff options
context:
space:
mode:
authorZac Sweers <zac.sweers@gmail.com>2020-01-01 08:37:31 -0500
committerEgor Andreevich <andreevich.egor@gmail.com>2020-01-01 08:37:31 -0500
commit4272265a319a562bceaa537fc1b9b6b40236a881 (patch)
tree442e2e7c7bcfc418a04b24685bbd32d9835314b4 /src/test/java/com/squareup
parent3f5386230e12b8e9d3baf760ae3563b3f303f60c (diff)
downloadjavapoet-4272265a319a562bceaa537fc1b9b6b40236a881.tar.gz
Mutable builder list fields (#650)
* Make modifiers and annotations in FieldSpec public * Make AnnotationSpec members public * Make JavaFile staticImports public * Make modifiers and annotations in parameterspec public * Make methodspec modifiers, params, typevars, and annotations public * Make typespec builder lists public * Move TypeSpec.Builder validations to build() where appropriate * Move AnnotationSpec.Builder validations to build() where appropriate * Fix line length style
Diffstat (limited to 'src/test/java/com/squareup')
-rw-r--r--src/test/java/com/squareup/javapoet/AnnotationSpecTest.java12
-rw-r--r--src/test/java/com/squareup/javapoet/FieldSpecTest.java19
-rw-r--r--src/test/java/com/squareup/javapoet/JavaFileTest.java21
-rw-r--r--src/test/java/com/squareup/javapoet/MethodSpecTest.java39
-rw-r--r--src/test/java/com/squareup/javapoet/ParameterSpecTest.java26
-rw-r--r--src/test/java/com/squareup/javapoet/TypeSpecTest.java104
6 files changed, 206 insertions, 15 deletions
diff --git a/src/test/java/com/squareup/javapoet/AnnotationSpecTest.java b/src/test/java/com/squareup/javapoet/AnnotationSpecTest.java
index 49606c7..97c1e6e 100644
--- a/src/test/java/com/squareup/javapoet/AnnotationSpecTest.java
+++ b/src/test/java/com/squareup/javapoet/AnnotationSpecTest.java
@@ -20,6 +20,8 @@ import java.lang.annotation.Annotation;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.util.Arrays;
+
import javax.lang.model.element.TypeElement;
import org.junit.Rule;
import org.junit.Test;
@@ -371,6 +373,16 @@ public final class AnnotationSpecTest {
}
}
+ @Test public void modifyMembers() {
+ AnnotationSpec.Builder builder = AnnotationSpec.builder(SuppressWarnings.class)
+ .addMember("value", "$S", "Foo");
+
+ builder.members.clear();
+ builder.members.put("value", Arrays.asList(CodeBlock.of("$S", "Bar")));
+
+ assertThat(builder.build().toString()).isEqualTo("@java.lang.SuppressWarnings(\"Bar\")");
+ }
+
private String toString(TypeSpec typeSpec) {
return JavaFile.builder("com.squareup.tacos", typeSpec).build().toString();
}
diff --git a/src/test/java/com/squareup/javapoet/FieldSpecTest.java b/src/test/java/com/squareup/javapoet/FieldSpecTest.java
index 51d093e..bc68f6f 100644
--- a/src/test/java/com/squareup/javapoet/FieldSpecTest.java
+++ b/src/test/java/com/squareup/javapoet/FieldSpecTest.java
@@ -46,4 +46,21 @@ public class FieldSpecTest {
.isEqualTo("annotationSpecs == null");
}
}
-} \ No newline at end of file
+
+ @Test public void modifyAnnotations() {
+ FieldSpec.Builder builder = FieldSpec.builder(int.class, "foo")
+ .addAnnotation(Override.class)
+ .addAnnotation(SuppressWarnings.class);
+
+ builder.annotations.remove(1);
+ assertThat(builder.build().annotations).hasSize(1);
+ }
+
+ @Test public void modifyModifiers() {
+ FieldSpec.Builder builder = FieldSpec.builder(int.class, "foo")
+ .addModifiers(Modifier.PUBLIC, Modifier.STATIC);
+
+ builder.modifiers.remove(1);
+ assertThat(builder.build().modifiers).containsExactly(Modifier.PUBLIC);
+ }
+}
diff --git a/src/test/java/com/squareup/javapoet/JavaFileTest.java b/src/test/java/com/squareup/javapoet/JavaFileTest.java
index e056116..f7583f1 100644
--- a/src/test/java/com/squareup/javapoet/JavaFileTest.java
+++ b/src/test/java/com/squareup/javapoet/JavaFileTest.java
@@ -15,6 +15,7 @@
*/
package com.squareup.javapoet;
+import java.io.File;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@@ -689,4 +690,24 @@ public final class JavaFileTest {
+ " A a;\n"
+ "}\n");
}
+
+ @Test public void modifyStaticImports() throws Exception {
+ JavaFile.Builder builder = JavaFile.builder("com.squareup.tacos",
+ TypeSpec.classBuilder("Taco")
+ .build())
+ .addStaticImport(File.class, "separator");
+
+ builder.staticImports.clear();
+ builder.staticImports.add(File.class.getCanonicalName() + ".separatorChar");
+
+ String source = builder.build().toString();
+
+ assertThat(source).isEqualTo(""
+ + "package com.squareup.tacos;\n"
+ + "\n"
+ + "import static java.io.File.separatorChar;\n"
+ + "\n"
+ + "class Taco {\n"
+ + "}\n");
+ }
}
diff --git a/src/test/java/com/squareup/javapoet/MethodSpecTest.java b/src/test/java/com/squareup/javapoet/MethodSpecTest.java
index 98fd8f6..789661d 100644
--- a/src/test/java/com/squareup/javapoet/MethodSpecTest.java
+++ b/src/test/java/com/squareup/javapoet/MethodSpecTest.java
@@ -356,8 +356,41 @@ public final class MethodSpecTest {
.setName("revisedMethod")
.build();
- assertThat(methodSpec.toString()).isEqualTo(""
- + "void revisedMethod() {\n"
- + "}\n");
+ assertThat(methodSpec.toString()).isEqualTo("" + "void revisedMethod() {\n" + "}\n");
+ }
+
+ @Test public void modifyAnnotations() {
+ MethodSpec.Builder builder = MethodSpec.methodBuilder("foo")
+ .addAnnotation(Override.class)
+ .addAnnotation(SuppressWarnings.class);
+
+ builder.annotations.remove(1);
+ assertThat(builder.build().annotations).hasSize(1);
+ }
+
+ @Test public void modifyModifiers() {
+ MethodSpec.Builder builder = MethodSpec.methodBuilder("foo")
+ .addModifiers(Modifier.PUBLIC, Modifier.STATIC);
+
+ builder.modifiers.remove(1);
+ assertThat(builder.build().modifiers).containsExactly(Modifier.PUBLIC);
+ }
+
+ @Test public void modifyParameters() {
+ MethodSpec.Builder builder = MethodSpec.methodBuilder("foo")
+ .addParameter(int.class, "source");
+
+ builder.parameters.remove(0);
+ assertThat(builder.build().parameters).isEmpty();
+ }
+
+ @Test public void modifyTypeVariables() {
+ TypeVariableName t = TypeVariableName.get("T");
+ MethodSpec.Builder builder = MethodSpec.methodBuilder("foo")
+ .addTypeVariable(t)
+ .addTypeVariable(TypeVariableName.get("V"));
+
+ builder.typeVariables.remove(1);
+ assertThat(builder.build().typeVariables).containsExactly(t);
}
}
diff --git a/src/test/java/com/squareup/javapoet/ParameterSpecTest.java b/src/test/java/com/squareup/javapoet/ParameterSpecTest.java
index 954db39..c3effca 100644
--- a/src/test/java/com/squareup/javapoet/ParameterSpecTest.java
+++ b/src/test/java/com/squareup/javapoet/ParameterSpecTest.java
@@ -25,6 +25,7 @@ import javax.lang.model.element.VariableElement;
import javax.lang.model.util.Elements;
import org.junit.Before;
import org.junit.Rule;
+import javax.lang.model.element.Modifier;
import org.junit.Test;
import static com.google.common.truth.Truth.assertThat;
@@ -33,8 +34,6 @@ import static javax.lang.model.util.ElementFilter.fieldsIn;
import static javax.lang.model.util.ElementFilter.methodsIn;
import static org.junit.Assert.fail;
-import javax.lang.model.element.Modifier;
-
public class ParameterSpecTest {
@Rule public final CompilationRule compilation = new CompilationRule();
@@ -109,11 +108,28 @@ public class ParameterSpecTest {
modifiers.add(Modifier.PUBLIC);
try {
- ParameterSpec.builder(int.class, "foo").addModifiers(modifiers);
+ ParameterSpec.builder(int.class, "foo")
+ .addModifiers(modifiers);
fail();
} catch (Exception e) {
- assertThat(e.getMessage())
- .isEqualTo("unexpected parameter modifier: public");
+ assertThat(e.getMessage()).isEqualTo("unexpected parameter modifier: public");
}
}
+
+ @Test public void modifyAnnotations() {
+ ParameterSpec.Builder builder = ParameterSpec.builder(int.class, "foo")
+ .addAnnotation(Override.class)
+ .addAnnotation(SuppressWarnings.class);
+
+ builder.annotations.remove(1);
+ assertThat(builder.build().annotations).hasSize(1);
+ }
+
+ @Test public void modifyModifiers() {
+ ParameterSpec.Builder builder = ParameterSpec.builder(int.class, "foo")
+ .addModifiers(Modifier.PUBLIC, Modifier.STATIC);
+
+ builder.modifiers.remove(1);
+ assertThat(builder.build().modifiers).containsExactly(Modifier.PUBLIC);
+ }
}
diff --git a/src/test/java/com/squareup/javapoet/TypeSpecTest.java b/src/test/java/com/squareup/javapoet/TypeSpecTest.java
index 733483b..6175607 100644
--- a/src/test/java/com/squareup/javapoet/TypeSpecTest.java
+++ b/src/test/java/com/squareup/javapoet/TypeSpecTest.java
@@ -17,6 +17,14 @@ package com.squareup.javapoet;
import com.google.common.collect.ImmutableMap;
import com.google.testing.compile.CompilationRule;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.Mockito;
+
+import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.math.BigDecimal;
@@ -31,15 +39,11 @@ import java.util.Locale;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.Callable;
+
import javax.lang.model.element.Element;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeMirror;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-import org.mockito.Mockito;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
@@ -1907,7 +1911,7 @@ public final class TypeSpecTest {
@Test public void nullModifiersAddition() {
try {
- TypeSpec.classBuilder("Taco").addModifiers((Modifier) null);
+ TypeSpec.classBuilder("Taco").addModifiers((Modifier) null).build();
fail();
} catch(IllegalArgumentException expected) {
assertThat(expected.getMessage())
@@ -2424,4 +2428,92 @@ public final class TypeSpecTest {
assertThat(TypeSpec.enumBuilder(className).addEnumConstant("A").build().name).isEqualTo("Example");
assertThat(TypeSpec.annotationBuilder(className).build().name).isEqualTo("Example");
}
+
+ @Test
+ public void modifyAnnotations() {
+ TypeSpec.Builder builder =
+ TypeSpec.classBuilder("Taco")
+ .addAnnotation(Override.class)
+ .addAnnotation(SuppressWarnings.class);
+
+ builder.annotations.remove(1);
+ assertThat(builder.build().annotations).hasSize(1);
+ }
+
+ @Test
+ public void modifyModifiers() {
+ TypeSpec.Builder builder =
+ TypeSpec.classBuilder("Taco").addModifiers(Modifier.PUBLIC, Modifier.FINAL);
+
+ builder.modifiers.remove(1);
+ assertThat(builder.build().modifiers).containsExactly(Modifier.PUBLIC);
+ }
+
+ @Test
+ public void modifyFields() {
+ TypeSpec.Builder builder = TypeSpec.classBuilder("Taco")
+ .addField(int.class, "source");
+
+ builder.fieldSpecs.remove(0);
+ assertThat(builder.build().fieldSpecs).isEmpty();
+ }
+
+ @Test
+ public void modifyTypeVariables() {
+ TypeVariableName t = TypeVariableName.get("T");
+ TypeSpec.Builder builder =
+ TypeSpec.classBuilder("Taco")
+ .addTypeVariable(t)
+ .addTypeVariable(TypeVariableName.get("V"));
+
+ builder.typeVariables.remove(1);
+ assertThat(builder.build().typeVariables).containsExactly(t);
+ }
+
+ @Test
+ public void modifySuperinterfaces() {
+ TypeSpec.Builder builder = TypeSpec.classBuilder("Taco")
+ .addSuperinterface(File.class);
+
+ builder.superinterfaces.clear();
+ assertThat(builder.build().superinterfaces).isEmpty();
+ }
+
+ @Test
+ public void modifyMethods() {
+ TypeSpec.Builder builder = TypeSpec.classBuilder("Taco")
+ .addMethod(MethodSpec.methodBuilder("bell").build());
+
+ builder.methodSpecs.clear();
+ assertThat(builder.build().methodSpecs).isEmpty();
+ }
+
+ @Test
+ public void modifyTypes() {
+ TypeSpec.Builder builder = TypeSpec.classBuilder("Taco")
+ .addType(TypeSpec.classBuilder("Bell").build());
+
+ builder.typeSpecs.clear();
+ assertThat(builder.build().typeSpecs).isEmpty();
+ }
+
+ @Test
+ public void modifyEnumConstants() {
+ TypeSpec constantType = TypeSpec.anonymousClassBuilder("").build();
+ TypeSpec.Builder builder = TypeSpec.enumBuilder("Taco")
+ .addEnumConstant("BELL", constantType)
+ .addEnumConstant("WUT", TypeSpec.anonymousClassBuilder("").build());
+
+ builder.enumConstants.remove("WUT");
+ assertThat(builder.build().enumConstants).containsExactly("BELL", constantType);
+ }
+
+ @Test
+ public void modifyOriginatingElements() {
+ TypeSpec.Builder builder = TypeSpec.classBuilder("Taco")
+ .addOriginatingElement(Mockito.mock(Element.class));
+
+ builder.originatingElements.clear();
+ assertThat(builder.build().originatingElements).isEmpty();
+ }
}