/* * 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.sling.commons.json; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import junit.framework.TestCase; import org.junit.Test; /** * @since Apr 17, 2009 6:04:00 PM */ public class JSONObjectTest { private static final String KEY = "key"; /** * See <a href="https://issues.apache.org/jira/browse/SLING-929">SLING-929</a> */ @Test public void testAppend() throws JSONException { JSONObject obj = new JSONObject(); obj.append(KEY, "value1"); obj.append(KEY, "value2"); Object result = obj.get(KEY); assertTrue("Did not create an array", result instanceof JSONArray); } /** * See <a href="https://issues.apache.org/jira/browse/SLING-929">SLING-929</a> */ @Test public void testFailAppend() throws JSONException { JSONObject obj = new JSONObject(); obj.put(KEY, "value1"); try { obj.append(KEY, "value2"); TestCase.fail("Accepted append() to a non-array property"); } catch (JSONException ignore) { // this is expected } } @Test public void testNull() throws JSONException { JSONObject obj = new JSONObject(); obj.put(KEY, JSONObject.NULL); TestCase.assertTrue(obj.has(KEY)); TestCase.assertTrue(obj.get(KEY).equals(null)); TestCase.assertEquals("{\"" + KEY + "\":null}", obj.toString()); } @Test public void testParseLong() throws JSONException { String jsonStr = "{\"longvalue\":\"13857270119014401\"}"; JSONObject obj = new JSONObject(jsonStr); TestCase.assertEquals(13857270119014401L, obj.getLong("longvalue")); } @Test public void testNullValueInMap() throws JSONException { Map<String,Object> map=new LinkedHashMap<String,Object>(); map.put("abc", "123456"); List<String> list = new ArrayList<String>(); list.add("Admin"); list.add("password"); map.put("groups", list); map.put("id", null); JSONObject response=new JSONObject(); response.put("key", map); assertNotNull(response.get("key")); assertEquals("{\"abc\":\"123456\",\"groups\":\"[Admin, password]\",\"id\":null}", response.get("key").toString()); assertEquals("123456", response.getJSONObject("key").get("abc")); assertEquals(list, response.getJSONObject("key").get("groups")); } }