Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (C) 2006-2014 phloc systems http://www.phloc.com office[at]phloc[dot]com Licensed 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 com.phloc.json.impl;
 
 import java.util.Date;
 import java.util.List;
 
 import org.junit.Test;
 
 
Test class for class JSONObject

Author(s):
Philip Helger
Boris Gregorcic
 
 @SuppressWarnings ("static-method")
 public final class JSONObjectTest
 {
   private static final String PROP = "property"//$NON-NLS-1$
   private static final String KEY = "testProperty"//$NON-NLS-1$
   private static final String A_KEY = "A"//$NON-NLS-1$
   private static final String B_KEY = "B"//$NON-NLS-1$
   private static final String C_KEY = "C"//$NON-NLS-1$
   private static final String A_VAL = "AAAA"//$NON-NLS-1$
   private static final String B_VAL = "BBBB"//$NON-NLS-1$
   private static final Integer C_VAL = Integer.valueOf (5);
   private static final Boolean D_VAL = .;
   private static final IJSONObject E_VAL = new JSONObject ().setStringProperty ();
 
   @Test
   public void testSimple () throws JSONParsingException
   {
     JSONObject aObj = new JSONObject ();
     aObj.setStringProperty ("a""b"); //$NON-NLS-1$ //$NON-NLS-2$
     Assert.assertEquals ("{\"a\":\"b\"}"aObj.getJSONString ()); //$NON-NLS-1$
     Assert.assertFalse (aObj.containsNotParsableProperty ());
     Assert.assertEquals (aObj, JSONReader.parseObject (aObj.getJSONString ()));
 
     aObj = new JSONObject ();
     aObj.setBigDecimalProperty ("x"new BigDecimal ("1514131211.0987654321")); //$NON-NLS-1$ //$NON-NLS-2$
     Assert.assertEquals ("{\"x\":1514131211.0987654321}"aObj.getJSONString ()); //$NON-NLS-1$
     Assert.assertFalse (aObj.containsNotParsableProperty ());
     Assert.assertEquals (aObj, JSONReader.parseObject (aObj.getJSONString ()));
 
     aObj = new JSONObject ();
     aObj.setBigIntegerProperty ("a"new BigInteger ("1514131288877788877711")); //$NON-NLS-1$ //$NON-NLS-2$
     Assert.assertEquals ("{\"a\":1514131288877788877711}"aObj.getJSONString ()); //$NON-NLS-1$
     Assert.assertFalse (aObj.containsNotParsableProperty ());
     Assert.assertEquals (aObj, JSONReader.parseObject (aObj.getJSONString ()));
 
     aObj = new JSONObject ();
     aObj.setBooleanProperty ("a"false); //$NON-NLS-1$
     Assert.assertEquals ("{\"a\":false}"aObj.getJSONString ()); //$NON-NLS-1$
     Assert.assertFalse (aObj.containsNotParsableProperty ());
     Assert.assertEquals (aObj, JSONReader.parseObject (aObj.getJSONString ()));
 
     aObj = new JSONObject ();
     aObj.setDoubleProperty ("a", 123.45); //$NON-NLS-1$
     Assert.assertEquals ("{\"a\":123.45}"aObj.getJSONString ()); //$NON-NLS-1$
     Assert.assertFalse (aObj.containsNotParsableProperty ());
     // Parsed object will be BigDecimal!
     // Assert.assertEquals (aObj, JSONReader.parseObject (aObj.getJSONString
     // ()));
 
     aObj = new JSONObject ();
     aObj.setFunctionProperty ("a""alert;""foo""bar"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
     Assert.assertEquals ("{\"a\":function(foo,bar){alert;}}"aObj.getJSONString ()); //$NON-NLS-1$
     Assert.assertTrue (aObj.containsNotParsableProperty ());
 
     // Assert.assertEquals (aObj, JSONReader.parseObject (aObj.getJSONString
     // ()));
    aObj = new JSONObject ();
    aObj.setFunctionPrebuildProperty ("a"" function (page) { alert (page + \" of 17\"); } "); //$NON-NLS-1$ //$NON-NLS-2$
    Assert.assertEquals ("{\"a\": function (page) { alert (page + \" of 17\"); } }"aObj.getJSONString ()); //$NON-NLS-1$
    Assert.assertTrue (aObj.containsNotParsableProperty ());
    // Assert.assertEquals (aObj, JSONReader.parseObject (aObj.getJSONString
    // ()));
    aObj = new JSONObject ();
    aObj.setIntegerProperty ("a", 15); //$NON-NLS-1$
    Assert.assertEquals ("{\"a\":15}"aObj.getJSONString ()); //$NON-NLS-1$
    Assert.assertFalse (aObj.containsNotParsableProperty ());
    Assert.assertEquals (aObj, JSONReader.parseObject (aObj.getJSONString ()));
    aObj = new JSONObject ();
    aObj.setKeywordProperty ("a""anything"); //$NON-NLS-1$ //$NON-NLS-2$
    Assert.assertEquals ("{\"a\":anything}"aObj.getJSONString ()); //$NON-NLS-1$
    Assert.assertTrue (aObj.containsNotParsableProperty ());
    // Assert.assertEquals (aObj, JSONReader.parseObject (aObj.getJSONString
    // ()));
    aObj = new JSONObject ();
    aObj.setLongProperty ("a", 12345678901L); //$NON-NLS-1$
    Assert.assertEquals ("{\"a\":12345678901}"aObj.getJSONString ()); //$NON-NLS-1$
    Assert.assertFalse (aObj.containsNotParsableProperty ());
    Assert.assertEquals (aObj, JSONReader.parseObject (aObj.getJSONString ()));
    aObj = new JSONObject ();
    aObj.setDoubleProperty ("abc", 15.34); //$NON-NLS-1$
    Assert.assertEquals ("{\"abc\":15.34}"aObj.getJSONString ()); //$NON-NLS-1$
    Assert.assertEquals (Double.valueOf (15.34), aObj.getDoubleProperty ("abc")); //$NON-NLS-1$
    aObj.setDoubleProperty ("def", Double.valueOf (16.79)); //$NON-NLS-1$
    Assert.assertEquals ("{\"abc\":15.34,\"def\":16.79}"aObj.getJSONString ()); //$NON-NLS-1$
    Assert.assertEquals (Double.valueOf (15.34), aObj.getDoubleProperty ("abc")); //$NON-NLS-1$
    Assert.assertEquals (Double.valueOf (16.79), aObj.getDoubleProperty ("def")); //$NON-NLS-1$
    Assert.assertFalse (aObj.containsNotParsableProperty ());
    // Will be parsed as BigDecimal
    // Assert.assertEquals (aObj, JSONReader.parseObject (aObj.getJSONString
    // ()));
  }

  
Test for passing a null JSON object
  @Test (expected = NullPointerException.class)
  @SuppressFBWarnings (value = "NP_NONNULL_PARAM_VIOLATION")
  public void testCreateJSONObjectNull ()
  {
    new JSONObject (null);
  }
  @Test (expected = NullPointerException.class)
  @SuppressFBWarnings (value = "NP_NONNULL_PARAM_VIOLATION")
  public void testSetPropertyNull ()
  {
    new JSONObject ().setProperty (null);
  }
  @Test
  public void testSetProperty ()
  {
    final IJSONObject aObj = new JSONObject ();
    final boolean bUseTypeConverter = false;
    final String sKey = "testProperty"//$NON-NLS-1$
    final String sTestString = "testString"//$NON-NLS-1$
    {
      // set null
      final Object aValue = sTestString;
      aObj.setProperty (sKeyaValuebUseTypeConverter);
      aObj.setProperty (sKeynullbUseTypeConverter);
      Assert.assertNull (aObj.getProperty (sKey));
    }
    {
      // set string property
      checkSetProperty (sTestString);
    }
    {
      // set JSON object property
      checkSetProperty (new JSONObject ().setStringProperty (sKeysTestString));
    }
    {
      // set JSON property value (JSON object)
      checkSetProperty (new JSONPropertyValueInteger (Integer.valueOf (.)), truefalse);
      checkSetProperty (new JSONPropertyValueInteger (Integer.valueOf (.)), truefalse);
    }
    {
      // set boolean property
    }
    {
      // set boolean property
      checkSetProperty (BigInteger.valueOf (.));
      checkSetProperty (BigInteger.valueOf (.));
    }
    {
      // set boolean property
      checkSetProperty (BigDecimal.valueOf (.));
      checkSetProperty (BigDecimal.valueOf (.));
    }
    {
      // set boolean property
      checkSetProperty (Double.valueOf (.));
      checkSetProperty (Double.valueOf (.));
    }
    {
      // set boolean property
      checkSetProperty (Integer.valueOf (.));
      checkSetProperty (Integer.valueOf (.));
    }
    {
      // set boolean property
      checkSetProperty (Long.valueOf (.));
      checkSetProperty (Long.valueOf (.));
    }
    {
      // set with type converter
      checkSetProperty (new Date (), falsetrue);
    }
    {
      // set without type converter
      final Object aValue = new Date ();
      aObj.setProperty (aValuebUseTypeConverter);
      Assert.assertEquals (aValue.toString (), aObj.getProperty ().getValue ().getData ());
    }
  }
  @Test
  public void testApply ()
  {
    final IJSONObject aSource = new JSONObject ();
    aSource.setStringProperty ();
    aSource.setIntegerProperty ();
    final IJSONObject aTarget = new JSONObject ();
    aTarget.apply (null);
    Assert.assertTrue (aTarget.isEmpty ());
    aTarget.setStringProperty ();
    aTarget.apply (aSource);
    Assert.assertEquals (aTarget.getStringProperty (), );
    Assert.assertEquals (aTarget.getStringProperty (), );
    Assert.assertEquals (aTarget.getIntegerProperty (), );
  }
  @Test
  public void testApplyProperty ()
  {
    final IJSONObject aSource = new JSONObject ();
    aSource.setStringProperty ();
    aSource.setIntegerProperty ();
    final IJSONObject aTarget = new JSONObject ();
    aTarget.apply (null);
    Assert.assertTrue (aTarget.isEmpty ());
    aTarget.setStringProperty ();
    aTarget.apply (aSource);
    Assert.assertEquals (aTarget.getPropertyCount (), 1);
    Assert.assertEquals (aTarget.getStringProperty (), );
    aTarget.apply (aSource"invalid"); //$NON-NLS-1$
    Assert.assertEquals (aTarget.getPropertyCount (), 1);
  }
  @Test
  public void testGetPropertyValueData ()
  {
    final IJSONObject aObj = new JSONObject ();
    aObj.setStringProperty ();
    Assert.assertNull (aObj.getPropertyValueData ());
    Assert.assertEquals (aObj.getPropertyValueData (), );
  }
  @Test
  public void testRemoveProperty ()
  {
    final IJSONObject aObj = new JSONObject ();
    aObj.setStringProperty ();
    Assert.assertEquals (.aObj.removeProperty ());
    Assert.assertNull (aObj.getProperty ());
  }
  @Test
  public void testSetMixedListProperty ()
  {
    final IJSONObject aObj = new JSONObject ();
    final List <ObjectaValues = ContainerHelper.newList ();
    aValues.add ();
    aValues.add ();
    aValues.add ();
    aValues.add ();
    aObj.setMixedListProperty (aValues);
    Assert.assertEquals (aValuesaObj.getListProperty ());
  }
  @Test
  public void testGetNumericProperty ()
  {
    checkNumericProperty (BigInteger.valueOf (.));
    // error cases
    Assert.assertNull (new JSONObject ().getNumericProperty ());
  }
  private void checkNumericProperty (final Number aValue)
  {
    final IJSONObject aObj = new JSONObject ();
    aObj.setProperty (aValue);
    Assert.assertEquals (aValueaObj.getNumericProperty ());
  }
  private static void checkSetProperty (final Object aValue)
  {
    checkSetProperty (aValuefalsefalse);
  }
  private static void checkSetProperty (final Object aValue,
                                        final boolean bCompareJSONValue,
                                        final boolean bUseTypeConverter)
  {
    final IJSONObject aObj = new JSONObject ();
    if (bUseTypeConverter)
    {
      aObj.setProperty (aValuebUseTypeConverter);
    }
    else
    {
      aObj.setProperty (aValue);
    }
    if (!bCompareJSONValue && bUseTypeConverter)
    {
      Assert.assertEquals (TypeConverter.convertIfNecessary (aValueString.class), aObj.getProperty ()
                                                                                        .getValue ()
                                                                                        .getData ());
    }
    else
    {
      Assert.assertEquals (aValuebCompareJSONValue ? aObj.getProperty ().getValue () : aObj.getProperty ()
                                                                                                .getValue ()
                                                                                                .getData ());
    }
  }

  
Test for JSONObject.getIntegerPropertyNonNull(java.lang.String) passing an invalid property name
  @Test (expected = NullPointerException.class)
  {
    new JSONObject ().getIntegerPropertyNonNull (""); //$NON-NLS-1$
  }

  
Test for JSONObject.getIntegerPropertyNonNull(java.lang.String) when property is not existing
  @Test (expected = NullPointerException.class)
  {
  }

  
  @Test
  public void testGetIntegerPropertyNonNull ()
  {
    final IJSONObject aObject = new JSONObject ();
    aObject.setIntegerProperty (, 5);
    Assert.assertEquals (aObject.getIntegerPropertyNonNull ().intValue (), 5);
  }

  
Test for JSONObject.getStringPropertyNonEmpty(java.lang.String) passing an invalid property name
  @Test (expected = IllegalArgumentException.class)
  {
    new JSONObject ().getStringPropertyNonEmpty (""); //$NON-NLS-1$
  }

  
Test for JSONObject.getStringPropertyNonEmpty(java.lang.String) when property is not existing
  @Test (expected = IllegalArgumentException.class)
  {
  }

  
  @Test
  public void testGetStringPropertyNonEmpty ()
  {
    final IJSONObject aObject = new JSONObject ();
    aObject.setStringProperty ("bla"); //$NON-NLS-1$
    Assert.assertEquals (aObject.getStringPropertyNonEmpty (), "bla"); //$NON-NLS-1$
  }

  
  @Test
  public void setGetObjectListProperty ()
  {
    final List <IJSONObjectaJSONObjects = ContainerHelper.newList ();
    aJSONObjects.add (new JSONObject ().setStringProperty ());
    final IJSONObject aObject = new JSONObject ();
    aObject.setObjectListProperty (aJSONObjects);
    Assert.assertTrue (aObject.getObjectListProperty ().isEmpty ());
    Assert.assertEquals (aObject.getObjectListProperty (), aJSONObjects);
  }
  @Test
  {
    final JSONObject aObject = new JSONObject ();
    final List <List <String>> aListOfList = ContainerHelper.newList ();
    final List <StringaListA = ContainerHelper.newList ();
    aListA.add ("A1"); //$NON-NLS-1$
    aListA.add ("A2"); //$NON-NLS-1$
    aListOfList.add (aListA);
    final List <StringaListB = ContainerHelper.newList ();
    aListB.add ("B1"); //$NON-NLS-1$
    aListB.add ("B2"); //$NON-NLS-1$
    aListOfList.add (aListB);
    aObject.setListOfStringListProperty (aListOfList);
    final List <List <JSONPropertyValueString>> aValue = aObject.getListProperty ();
    Assert.assertEquals (2, aValue.size ());
    Assert.assertEquals (2, aValue.get (0).size ());
    Assert.assertEquals (2, aValue.get (1).size ());
    Assert.assertEquals ("A1"aValue.get (0).get (0).getData ()); //$NON-NLS-1$
  }
  @Test
  public void testSetIntegerListProperty ()
  {
    final int [] aValues = { 1, 4, 7 };
    final IJSONObject aObject = new JSONObject ();
    aObject.setIntegerListProperty (aValues);
    final List <IntegeraRetrievedValues = aObject.getListProperty ();
    Assert.assertEquals (Integer.valueOf (1), aRetrievedValues.get (0));
    Assert.assertEquals (Integer.valueOf (4), aRetrievedValues.get (1));
    Assert.assertEquals (Integer.valueOf (7), aRetrievedValues.get (2));
  }
  @Test
  {
    final List <IntegeraValues = ContainerHelper.newList (Integer.valueOf (1),
                                                            Integer.valueOf (4),
                                                            Integer.valueOf (7));
    final IJSONObject aObject = new JSONObject ();
    aObject.setIntegerListProperty (aValues);
    final List <IntegeraRetrievedValues = aObject.getListProperty ();
    Assert.assertEquals (aValuesaRetrievedValues);
  }
  @Test
  public void testGetPropertyCount ()
  {
    final IJSONObject aObject = new JSONObject ();
    Assert.assertEquals (0, aObject.getPropertyCount ());
    aObject.setStringProperty ("asdasd"); //$NON-NLS-1$
    Assert.assertEquals (1, aObject.getPropertyCount ());
    aObject.setIntegerProperty (, 6);
    Assert.assertEquals (1, aObject.getPropertyCount ());
    aObject.setStringProperty ("asd""asdasd"); //$NON-NLS-1$ //$NON-NLS-2$
    Assert.assertEquals (2, aObject.getPropertyCount ());
    aObject.removeProperty ("asd"); //$NON-NLS-1$
    Assert.assertEquals (1, aObject.getPropertyCount ());
  }
  @Test
  public void testSetStringListProperty ()
  {
    final IJSONObject aObject = new JSONObject ();
    final List <StringaList = ContainerHelper.newList ("A""B"); //$NON-NLS-1$ //$NON-NLS-2$
    aObject.setStringListProperty (aList);
    Assert.assertEquals (aListaObject.getListProperty ());
  }
  @Test
  public void testGetListValues ()
  {
    final IJSONObject aObject = new JSONObject ();
    final List <StringaList = ContainerHelper.newList ("A""B"); //$NON-NLS-1$ //$NON-NLS-2$
    aObject.setStringListProperty (aList);
    final List <? extends IJSONPropertyValue <?>> aRetrieved = aObject.getListValues ();
    Assert.assertEquals (2, aRetrieved.size ());
    Assert.assertEquals ("A"aRetrieved.get (0).getData ()); //$NON-NLS-1$
    Assert.assertEquals ("B"aRetrieved.get (1).getData ()); //$NON-NLS-1$
    Assert.assertNull (new JSONObject ().getListValues ());
  }
  @Test
  public void testGetBigDecimalProperty ()
  {
    final JSONObject aObject = new JSONObject ();
    Assert.assertNull (aObject.getBigDecimalProperty ());
    aObject.setBigDecimalProperty (, BigDecimal.valueOf (47.11));
    Assert.assertEquals (BigDecimal.valueOf (47.11), aObject.getBigDecimalProperty ());
    aObject.setDoubleProperty (, Double.valueOf (47.11));
    Assert.assertEquals (BigDecimal.valueOf (47.11), aObject.getBigDecimalProperty ());
    aObject.setIntegerProperty (, Integer.valueOf (47));
    Assert.assertEquals (BigDecimal.valueOf (47.0), aObject.getBigDecimalProperty ());
    aObject.setBigIntegerProperty (, BigInteger.valueOf (47));
    Assert.assertEquals (BigDecimal.valueOf (47.0), aObject.getBigDecimalProperty ());
    aObject.setLongProperty (, Long.valueOf (47));
    Assert.assertEquals (BigDecimal.valueOf (47.0), aObject.getBigDecimalProperty ());
  }
New to GrepCode? Check out our FAQ X