Skip to content

Commit 558d5bf

Browse files
committed
feat: Add pattern matching test for JsonValue
1 parent e751a10 commit 558d5bf

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package jdk.sandbox.internal.util.json;
2+
3+
import jdk.sandbox.java.util.json.JsonArray;
4+
import jdk.sandbox.java.util.json.JsonBoolean;
5+
import jdk.sandbox.java.util.json.JsonNull;
6+
import jdk.sandbox.java.util.json.JsonNumber;
7+
import jdk.sandbox.java.util.json.JsonObject;
8+
import jdk.sandbox.java.util.json.JsonString;
9+
import jdk.sandbox.java.util.json.JsonValue;
10+
import org.junit.jupiter.api.Test;
11+
12+
import static org.assertj.core.api.Assertions.assertThat;
13+
14+
public class JsonPatternMatchingTests {
15+
16+
private String identifyJsonValue(JsonValue jsonValue) {
17+
return switch (jsonValue) {
18+
case JsonObject o -> "Object with " + o.members().size() + " members";
19+
case JsonArray a -> "Array with " + a.values().size() + " elements";
20+
case JsonString s -> "String with value: " + s.value();
21+
case JsonNumber n -> "Number with value: " + n.toNumber();
22+
case JsonBoolean b -> "Boolean with value: " + b.value();
23+
case JsonNull ignored -> "Null";
24+
};
25+
}
26+
27+
@Test
28+
void testPatternMatchingOnJsonTypes() {
29+
String json = """
30+
{
31+
"myObject": {},
32+
"myArray": [1, 2],
33+
"myString": "hello",
34+
"myNumber": 123.45,
35+
"myBoolean": true,
36+
"myNull": null
37+
}
38+
""";
39+
40+
JsonParser parser = new JsonParser(json.toCharArray());
41+
JsonObject jsonObject = (JsonObject) parser.parseRoot();
42+
43+
assertThat(identifyJsonValue(jsonObject.members().get("myObject"))).isEqualTo("Object with 0 members");
44+
assertThat(identifyJsonValue(jsonObject.members().get("myArray"))).isEqualTo("Array with 2 elements");
45+
assertThat(identifyJsonValue(jsonObject.members().get("myString"))).isEqualTo("String with value: hello");
46+
assertThat(identifyJsonValue(jsonObject.members().get("myNumber"))).isEqualTo("Number with value: 123.45");
47+
assertThat(identifyJsonValue(jsonObject.members().get("myBoolean"))).isEqualTo("Boolean with value: true");
48+
assertThat(identifyJsonValue(jsonObject.members().get("myNull"))).isEqualTo("Null");
49+
}
50+
}

0 commit comments

Comments
 (0)