/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved. * * The contents of this file are subject to the terms of either the GNU * General Public License Version 2 only ("GPL") or the Common Development * and Distribution License("CDDL") (collectively, the "License"). You * may not use this file except in compliance with the License. You can * obtain a copy of the License at * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html * or packager/legal/LICENSE.txt. See the License for the specific * language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each * file and include the License file at packager/legal/LICENSE.txt. * * GPL Classpath Exception: * Oracle designates this particular file as subject to the "Classpath" * exception as provided by Oracle in the GPL Version 2 section of the License * file that accompanied this code. * * Modifications: * If applicable, add the following below the License Header, with the fields * enclosed by brackets [] replaced by your own identifying information: * "Portions Copyright [year] [name of copyright owner]" * * Contributor(s): * If you wish your version of this file to be governed by only the CDDL or * only the GPL Version 2, indicate your decision by adding "[Contributor] * elects to include this software in this distribution under the [CDDL or GPL * Version 2] license." If you don't indicate a single choice of license, a * recipient has the option to distribute your version of this file under * either the CDDL, the GPL Version 2 or to extend the choice of license to * its licensees as provided above. However, if you add GPL Version 2 code * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. */ package org.glassfish.admingui.devtests; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Test; import org.glassfish.admingui.common.util.JSONUtil; import static org.junit.Assert.*; public class JsonUtilTest { @Test public void readNumbers() { assertEquals(3L, JSONUtil.jsonToJava("3")); } @Test public void readConstants() { assertTrue((Boolean)JSONUtil.jsonToJava("true")); assertFalse((Boolean)JSONUtil.jsonToJava("false")); assertNull(JSONUtil.jsonToJava("null")); } @Test public void readLists() { List list = (List)JSONUtil.jsonToJava("[null]"); assertNotNull(list); assertEquals(1, list.size()); assertNull(list.get(0)); list = (List)JSONUtil.jsonToJava("[true,false,null,{'a':'b'},['1','2','3']]"); assertNotNull(list); assertEquals(5, list.size()); assertTrue((Boolean)list.get(0)); assertFalse((Boolean)list.get(1)); assertNull(list.get(2)); assertTrue(list.get(3) instanceof Map); assertEquals("b", ((Map)list.get(3)).get("a")); assertTrue(list.get(4) instanceof List); assertEquals("1", ((List)list.get(4)).get(0)); list = (List)JSONUtil.jsonToJava("[true,false,null,{'a':'b'},[1,2,3]]"); assertNotNull(list); assertEquals(5, list.size()); assertEquals(1L, ((List)list.get(4)).get(0)); list = (List)JSONUtil.jsonToJava("[true,false,null,{'a':'b'},[1.1,2.2,3.3]]"); assertNotNull(list); assertEquals(5, list.size()); assertEquals(1.1F, ((List)list.get(4)).get(0)); list = (List)JSONUtil.jsonToJava("[true,false,null,{'a':'b'},['1',2,3.3]]"); assertNotNull(list); assertEquals(5, list.size()); assertEquals("1", ((List)list.get(4)).get(0)); assertEquals(2L, ((List)list.get(4)).get(1)); assertEquals(3.3F, ((List)list.get(4)).get(2)); } @Test public void readObjects() { Map<String, Object> map = (Map<String, Object>)JSONUtil.jsonToJava("{'x':['foo',null ,{'a':true, 'b':false }]}"); assertEquals(1, map.size()); assertTrue(map.get("x") instanceof List); assertEquals(3, ((List)map.get("x")).size()); assertTrue(((List)map.get("x")).get(2) instanceof Map); map = (Map<String, Object>)JSONUtil.jsonToJava("{ 'key' : \"value\" ,\n \r \"key2\" : { 'innerKey' : [ 3.3E-2 , false , 800e+8, null , 37 , \"test\" ] , \n \"innerKey2\" : {'a' : 'b', 'c' : 'd'}, 'innerKey3' : true} }"); assertEquals(2, map.size()); assertEquals("value", map.get("key")); assertTrue(map.get("key2") instanceof Map); } @Test public void testEncoding() { Map map = new HashMap<String, String>() {{ put("foo", "bar"); }}; assertEquals("{\"foo\":\"bar\"}", JSONUtil.javaToJSON(map, 2)); } @Test public void multibyteCharacters() { String json = "{\"value\":\"這或是因\"}"; Map<String, Object> obj = (Map<String, Object>)JSONUtil.jsonToJava(json); assertEquals("這或是因", obj.get("value")); } }