Repository: johnzon
Updated Branches:
  refs/heads/master ea3bb8677 -> 6ce0f08ac


JOHNZON-96 added tests for JsonCollectors


Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/6ce0f08a
Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/6ce0f08a
Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/6ce0f08a

Branch: refs/heads/master
Commit: 6ce0f08acbde730f8db97787e578877dfbe7970e
Parents: ea3bb86
Author: Reinhard Sandtner <[email protected]>
Authored: Tue Mar 28 22:39:35 2017 +0200
Committer: Reinhard Sandtner <[email protected]>
Committed: Tue Mar 28 22:39:35 2017 +0200

----------------------------------------------------------------------
 .../apache/johnzon/core/JsonCollectorTest.java  | 174 +++++++++++++++++++
 1 file changed, 174 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/johnzon/blob/6ce0f08a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonCollectorTest.java
----------------------------------------------------------------------
diff --git 
a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonCollectorTest.java 
b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonCollectorTest.java
new file mode 100644
index 0000000..ad1c164
--- /dev/null
+++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonCollectorTest.java
@@ -0,0 +1,174 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.johnzon.core;
+
+import org.junit.Test;
+
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonObject;
+import javax.json.JsonValue;
+import javax.json.JsonValue.ValueType;
+import javax.json.stream.JsonCollectors;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.stream.IntStream;
+
+import static java.util.function.Function.identity;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+public class JsonCollectorTest {
+
+
+    @Test
+    public void testToJsonArray() {
+
+        JsonArray array = IntStream.rangeClosed(1, 5)
+                                   .mapToObj(i -> Json.createObjectBuilder()
+                                                      .add("key" + i, "value" 
+ i)
+                                                      .build())
+                                   .collect(JsonCollectors.toJsonArray());
+
+        assertNotNull(array);
+        assertEquals(5, array.size());
+        IntStream.rangeClosed(1, 5)
+                 .forEach(i -> assertEquals("value" + i, array.getJsonObject(i 
- 1)
+                                                              .getString("key" 
+ i)));
+    }
+
+    @Test
+    public void testToJsonObject() {
+
+        SortedMap<String, JsonValue> source = new TreeMap<>(String::compareTo);
+        source.put("a", Json.createValue("string"));
+        source.put("b", Json.createObjectBuilder()
+                            .add("key", "value")
+                            .build());
+        source.put("c", Json.createArrayBuilder()
+                            .add("c1")
+                            .add("c2")
+                            .build());
+
+        JsonObject jsonObject = source.entrySet()
+                                      .stream()
+                                      .collect(JsonCollectors.toJsonObject());
+
+        assertNotNull(jsonObject);
+        assertEquals(Json.createObjectBuilder()
+                         .add("a", "string")
+                         .add("b", Json.createObjectBuilder()
+                                       .add("key", "value"))
+                         .add("c", Json.createArrayBuilder()
+                                       .add("c1")
+                                       .add("c2"))
+                         .build(),
+                     jsonObject);
+    }
+
+    @Test
+    public void testToJsonObjectCustomKeyAndValueMapper() {
+
+        List<JsonValue> source = new ArrayList<>();
+        source.add(Json.createValue("string"));
+        source.add(Json.createObjectBuilder()
+                       .add("key", "value")
+                       .build());
+        source.add(Json.createArrayBuilder()
+                       .add("c1")
+                       .add("c2")
+                       .build());
+
+        JsonObject jsonObject = source.stream()
+                                      .collect(JsonCollectors.toJsonObject(v 
-> v.getValueType().toString(),
+                                                                           
identity()));
+        assertNotNull(jsonObject);
+        assertEquals(Json.createObjectBuilder()
+                         .add(ValueType.STRING.name(), "string")
+                         .add(ValueType.OBJECT.name(), 
Json.createObjectBuilder()
+                                                           .add("key", 
"value"))
+                         .add(ValueType.ARRAY.name(), Json.createArrayBuilder()
+                                                          .add("c1")
+                                                          .add("c2"))
+                         .build()
+                , jsonObject);
+    }
+
+    @Test
+    public void testGroupingByJsonObject() {
+
+        JsonArray expectedStrings = Json.createArrayBuilder()
+                                        .add("string1")
+                                        .add("string2")
+                                        .add("string3")
+                                        .build();
+
+        JsonArray expectedObjects = Json.createArrayBuilder()
+                                        .add(Json.createObjectBuilder()
+                                                 .add("1", "value"))
+                                        .add(Json.createObjectBuilder()
+                                                 .add("2", "value"))
+                                        .add(Json.createObjectBuilder()
+                                                 .add("3", "value"))
+                                        .build();
+
+        JsonArray expectedArrays = Json.createArrayBuilder()
+                                       .add(Json.createArrayBuilder()
+                                                .add("1"))
+                                       .add(Json.createArrayBuilder()
+                                                .add("2"))
+                                       .add(Json.createArrayBuilder()
+                                                .add("3"))
+                                       .build();
+
+        List<JsonValue> source = new ArrayList<>();
+        source.add(Json.createValue("string1"));
+        source.add(Json.createValue("string2"));
+        source.add(Json.createValue("string3"));
+
+        source.add(Json.createObjectBuilder()
+                       .add("1", "value")
+                       .build());
+        source.add(Json.createObjectBuilder()
+                       .add("2", "value")
+                       .build());
+        source.add(Json.createObjectBuilder()
+                       .add("3", "value")
+                       .build());
+
+        source.add(Json.createArrayBuilder()
+                       .add("1")
+                       .build());
+        source.add(Json.createArrayBuilder()
+                       .add("2")
+                       .build());
+        source.add(Json.createArrayBuilder()
+                       .add("3")
+                       .build());
+
+
+        JsonObject jsonObject = source.stream()
+                                      .collect(JsonCollectors.groupingBy(v -> 
v.getValueType().name()));
+        assertNotNull(jsonObject);
+        assertEquals(jsonObject.getJsonArray(ValueType.ARRAY.name()), 
expectedArrays);
+        assertEquals(jsonObject.getJsonArray(ValueType.OBJECT.name()), 
expectedObjects);
+        assertEquals(jsonObject.getJsonArray(ValueType.STRING.name()), 
expectedStrings);
+    }
+
+}

Reply via email to