85 lines
1.8 KiB
Java
85 lines
1.8 KiB
Java
|
package com.devsoap.json;
|
||
|
|
||
|
import org.junit.jupiter.api.Test;
|
||
|
|
||
|
import static com.devsoap.json.JsonAssert.assertThat;
|
||
|
|
||
|
public class FieldTraversalAssertionTest {
|
||
|
|
||
|
private static final String JSON = """
|
||
|
{
|
||
|
"level": 0,
|
||
|
"root": {
|
||
|
"level": 1,
|
||
|
"child": {
|
||
|
"level": 2,
|
||
|
"child": {
|
||
|
"level": 3,
|
||
|
"last": 42
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
""";
|
||
|
|
||
|
@Test
|
||
|
public void root() {
|
||
|
assertThat(JSON).field("level").isEqualTo(0);
|
||
|
assertThat(JSON).field("root").isNotNull();
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void fieldTraversal() {
|
||
|
assertThat(JSON)
|
||
|
.field("root")
|
||
|
.field("child")
|
||
|
.field("level")
|
||
|
.isEqualTo(2);
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void pathTraversal() {
|
||
|
assertThat(JSON)
|
||
|
.path("root", "child", "level")
|
||
|
.isEqualTo(2);
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void firstFieldMatching() {
|
||
|
assertThat(JSON)
|
||
|
.firstField("child")
|
||
|
.field("level")
|
||
|
.isEqualTo(2);
|
||
|
|
||
|
assertThat(JSON)
|
||
|
.firstField("last")
|
||
|
.isEqualTo(42);
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void lastFieldMatching() {
|
||
|
assertThat(JSON)
|
||
|
.lastField("child")
|
||
|
.field("level")
|
||
|
.isEqualTo(3);
|
||
|
|
||
|
assertThat(JSON)
|
||
|
.lastField("level")
|
||
|
.isEqualTo(3);
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void nthFieldMatching() {
|
||
|
assertThat(JSON)
|
||
|
.nthField("child", 1)
|
||
|
.field("level")
|
||
|
.isEqualTo(3);
|
||
|
|
||
|
for (var level=0; level<=3; level++) {
|
||
|
assertThat(JSON)
|
||
|
.nthField("level", level)
|
||
|
.isEqualTo(level);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|