| /* |
| * 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.felix.serializer.impl.json; |
| |
| import java.util.Arrays; |
| import java.util.Collections; |
| import java.util.LinkedHashMap; |
| import java.util.Map; |
| |
| import org.junit.Test; |
| |
| import static org.junit.Assert.assertEquals; |
| |
| public class JsonSerializationTest { |
| @Test |
| @SuppressWarnings("unchecked") |
| public void testComplexMapSerialization() { |
| Map<String, Object> m = new LinkedHashMap<>(); |
| m.put("sKey", "a string"); |
| m.put("iKey", 42); |
| m.put("bKey", true); |
| m.put("noKey", null); |
| m.put("simpleArray", new int[] {1,2,3}); |
| |
| Map<String, Object> m1 = new LinkedHashMap<>(); |
| m1.put("a", 1L); |
| m1.put("b", "hello"); |
| m.put("simpleObject", m1); |
| |
| String expected = "{\"sKey\":\"a string\"," |
| + "\"iKey\":42," |
| + "\"bKey\":true," |
| + "\"noKey\":null," |
| + "\"simpleArray\":[1,2,3]," |
| + "\"simpleObject\":{\"a\":1,\"b\":\"hello\"}}"; |
| assertEquals(expected, new JsonSerializerImpl().serialize(m).toString()); |
| |
| Map<String, Object> dm = new JsonSerializerImpl().deserialize(Map.class).from(expected); |
| Map<String, Object> expected2 = new LinkedHashMap<>(); |
| expected2.put("sKey", "a string"); |
| expected2.put("iKey", 42L); |
| expected2.put("bKey", true); |
| expected2.put("noKey", null); |
| expected2.put("simpleArray", Arrays.asList(1L,2L,3L)); |
| expected2.put("simpleObject", m1); |
| assertEquals(expected2, dm); |
| } |
| |
| @Test |
| public void testComplexMapSerialization2() { |
| Map<String, Object> m2 = new LinkedHashMap<>(); |
| m2.put("yes", Boolean.TRUE); |
| m2.put("no", Collections.singletonMap("maybe", false)); |
| |
| Map<String, Object> cm = new LinkedHashMap<>(); |
| cm.put("list", Arrays.asList( |
| Collections.singletonMap("x", "y"), |
| Collections.singletonMap("x", "b"))); |
| cm.put("embedded", m2); |
| |
| String expected = "{\"list\":[{\"x\":\"y\"},{\"x\":\"b\"}]," |
| + "\"embedded\":" |
| + "{\"yes\":true,\"no\":{\"maybe\":false}}}"; |
| assertEquals(expected, new JsonSerializerImpl().serialize(cm).toString()); |
| } |
| |
| @Test |
| public void testEmptyMapSerialization() { |
| Map<?,?> m = new LinkedHashMap<>(); |
| String expected = "{}"; |
| assertEquals(expected, new JsonSerializerImpl().serialize(m).toString()); |
| Map<?,?> m2 = new JsonSerializerImpl().deserialize(Map.class).from(expected); |
| assertEquals(m, m2); |
| } |
| } |