Add boundary tests for JsonValueWriter max nesting depth

Verify behavior at the maxNestingDepth boundary.

Signed-off-by: Joowon-Seo <tjwndnjs1998@gmail.com>

See gh-49662
This commit is contained in:
Joowon-Seo
2026-03-19 18:21:06 +00:00
committed by Andy Wilkinson
parent 4cd1b02696
commit 7f0136f8c6
@@ -296,6 +296,38 @@ class JsonValueWriterTests {
"JSON nesting depth (129) exceeds maximum depth of 128 (current path: [0][0][0][0][0][0][0][0][0][0][0][0]");
}
@Test
void shouldAllowStartingObjectWhenCurrentDepthIsMaxDepth() {
StringBuilder out = new StringBuilder();
JsonValueWriter writer = new JsonValueWriter(out, 2);
writer.start(Series.OBJECT);
writer.start(Series.OBJECT);
writer.start(Series.OBJECT);
writer.end(Series.OBJECT);
writer.end(Series.OBJECT);
writer.end(Series.OBJECT);
assertThat(out).hasToString("{{{}}}");
}
@Test
void shouldAllowStartingArrayWhenCurrentDepthIsMaxDepth() {
StringBuilder out = new StringBuilder();
JsonValueWriter writer = new JsonValueWriter(out, 2);
writer.start(Series.ARRAY);
writer.start(Series.ARRAY);
writer.start(Series.ARRAY);
writer.end(Series.ARRAY);
writer.end(Series.ARRAY);
writer.end(Series.ARRAY);
assertThat(out).hasToString("[[[]]]");
}
private <V> String write(V value) {
return doWrite((valueWriter) -> valueWriter.write(value));
}