Skip to content

Commit f505036

Browse files
committed
test: add test cases to capture type and import writing for nested classes
* To illustrate current unintended behavior
1 parent 99b0c96 commit f505036

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

gapic-generator-java/src/test/java/com/google/api/generator/engine/writer/ImportWriterVisitorTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
import com.google.api.generator.test.utils.LineFormatter;
5959
import com.google.common.base.Function;
6060
import com.google.common.base.Strings;
61+
import com.google.testgapic.v1beta1.Outer;
6162
import java.io.File;
6263
import java.io.FileNotFoundException;
6364
import java.io.FileOutputStream;
@@ -428,6 +429,32 @@ public void writeVariableExprImports_annotationsWithDescription() {
428429
writerVisitor.write());
429430
}
430431

432+
@Test
433+
public void writeImport_nestedClasses() {
434+
435+
VaporReference nestedVaporReference =
436+
VaporReference.builder()
437+
.setName("Inner")
438+
.setEnclosingClassNames(Arrays.asList("Outer", "Middle"))
439+
.setPakkage("com.google.testgapic.v1beta1")
440+
.build();
441+
442+
TypeNode.withReference(nestedVaporReference).accept(writerVisitor);
443+
// TODO: The import below causes compilation errors,
444+
// since JavaWriterVisitor writes the corresponding type as Outer.Middle.Inner
445+
// Need to change either Writer's behavior to align with the other
446+
assertEquals("import com.google.testgapic.v1beta1.Outer.Middle;\n\n", writerVisitor.write());
447+
448+
writerVisitor.clear();
449+
450+
ConcreteReference nestedConcreteReference =
451+
ConcreteReference.withClazz(Outer.Middle.Inner.class);
452+
TypeNode.withReference(nestedConcreteReference).accept(writerVisitor);
453+
// TODO: This is currently writing import com.google.testgapic.v1beta1.Middle.Outer;
454+
// which is incorrect - uncomment assertion along with fix
455+
// assertEquals("import com.google.testgapic.v1beta1.Outer.Middle;\n\n", writerVisitor.write());
456+
}
457+
431458
@Test
432459
public void writeAnonymousClassExprImports() {
433460
// [Constructing] Function<List<IOException>, MethodDefinition>

gapic-generator-java/src/test/java/com/google/api/generator/engine/writer/JavaWriterVisitorTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
import com.google.api.generator.test.utils.LineFormatter;
7575
import com.google.api.generator.test.utils.TestExprBuilder;
7676
import com.google.common.base.Function;
77+
import com.google.testgapic.v1beta1.Outer;
7778
import java.io.IOException;
7879
import java.util.Arrays;
7980
import java.util.Collections;
@@ -129,6 +130,31 @@ public void writeReferenceType_basic() {
129130
assertEquals("FooBar", writerVisitor.write());
130131
}
131132

133+
@Test
134+
public void writeReferenceType_nestedClasses() {
135+
136+
VaporReference nestedVaporReference =
137+
VaporReference.builder()
138+
.setName("Inner")
139+
.setEnclosingClassNames(Arrays.asList("Outer", "Middle"))
140+
.setPakkage("com.google.testgapic.v1beta1")
141+
.build();
142+
TypeNode.withReference(nestedVaporReference).accept(writerVisitor);
143+
// TODO: The behavior below causes compilation errors,
144+
// since ImportWriterVisitor writes import of com.google.testgapic.v1beta1.Outer.Middle;
145+
// Need to change either Writer's behavior to align with the other
146+
assertEquals("Outer.Middle.Inner", writerVisitor.write());
147+
148+
writerVisitor.clear();
149+
150+
ConcreteReference nestedConcreteReference =
151+
ConcreteReference.withClazz(Outer.Middle.Inner.class);
152+
TypeNode.withReference(nestedConcreteReference).accept(writerVisitor);
153+
// TODO: This is currently writing type as Middle.Outer.Inner;
154+
// which is incorrect - update and uncomment assertion along with fix
155+
// assertEquals("Outer.Middle.Inner", writerVisitor.write());
156+
}
157+
132158
@Test
133159
public void writeReferenceType_useFullName() {
134160
TypeNode.withReference(

0 commit comments

Comments
 (0)