summaryrefslogtreecommitdiff
path: root/gson/src/test/java
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-11-14 02:59:11 +0100
committerLinnea Gräf <nea@nea.moe>2024-11-14 02:59:11 +0100
commit5eea18ea497d4bc11466b2bd875582ba26f188f5 (patch)
tree26391b4e347a97eafed954a52cd81b14e10a8314 /gson/src/test/java
parent05937d237c2fdf793e21b36523d06902c5a0a725 (diff)
downloadprofunctor-codecs-java-5eea18ea497d4bc11466b2bd875582ba26f188f5.tar.gz
profunctor-codecs-java-5eea18ea497d4bc11466b2bd875582ba26f188f5.tar.bz2
profunctor-codecs-java-5eea18ea497d4bc11466b2bd875582ba26f188f5.zip
Add lists
Diffstat (limited to 'gson/src/test/java')
-rw-r--r--gson/src/test/java/moe/nea/jcp/gson/test/TestBasic.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/gson/src/test/java/moe/nea/jcp/gson/test/TestBasic.java b/gson/src/test/java/moe/nea/jcp/gson/test/TestBasic.java
index 58727f2..861656e 100644
--- a/gson/src/test/java/moe/nea/jcp/gson/test/TestBasic.java
+++ b/gson/src/test/java/moe/nea/jcp/gson/test/TestBasic.java
@@ -1,5 +1,6 @@
package moe.nea.jcp.gson.test;
+import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonNull;
import com.google.gson.JsonObject;
@@ -10,6 +11,7 @@ import moe.nea.pcj.Codec;
import moe.nea.pcj.Decode;
import moe.nea.pcj.Result;
import moe.nea.pcj.json.AtField;
+import moe.nea.pcj.json.AtIndex;
import moe.nea.pcj.json.DuplicateJsonKey;
import moe.nea.pcj.json.JsonLikeError;
import moe.nea.pcj.json.JsonLikeOperations;
@@ -21,6 +23,7 @@ import org.junit.jupiter.api.Test;
import java.util.Arrays;
import java.util.HashSet;
+import java.util.List;
import java.util.stream.Collectors;
public class TestBasic {
@@ -55,6 +58,14 @@ public class TestBasic {
throw new IllegalArgumentException("Cannot convert " + arg + " to json object");
}
+ static JsonArray mkJsonArray(Object... args) {
+ JsonArray array = new JsonArray();
+ for (Object arg : args) {
+ array.add(mkPrim(arg));
+ }
+ return array;
+ }
+
static JsonObject mkJsonObject(Object... args) {
JsonObject obj = new JsonObject();
for (int i = 0; i < args.length; i += 2) {
@@ -99,6 +110,7 @@ public class TestBasic {
assertFail(decode(codec, mkJsonObject("foo", "fooValue", "bar", "test")),
new AtField("bar", new UnexpectedJsonElement("number", mkPrim("test"))));
}
+
@Test
void testDuplicateKeys() {
var codec = RecordJoiners.join(
@@ -110,5 +122,14 @@ public class TestBasic {
assertFail(codec.encode(new TestObject("", 0), GsonOperations.INSTANCE),
new DuplicateJsonKey("foo"));
}
+
+ @Test
+ void testList() {
+ var codec = codecs.STRING.fieldOf("hello").codec().listOf();
+ assertSuccess(decode(codec, mkJsonArray(mkJsonObject("hello", "foo"), mkJsonObject("hello", "bar"))),
+ List.of("foo", "bar"));
+ assertFail(decode(codec, mkJsonArray("foo", mkJsonObject("hello", "bar"))),
+ new AtIndex(0, new UnexpectedJsonElement("object", mkPrim("foo"))));
+ }
}