package triaina.commons.test.utils; import triaina.commons.exception.JSONRuntimeException; import triaina.commons.utils.JSONObjectUtils; import java.util.Map; import org.json.JSONException; import org.json.JSONObject; import android.os.Bundle; import junit.framework.TestCase; public class JSONObjectUtilsTest extends TestCase { public void testParse() throws Exception { JSONObject json = JSONObjectUtils.parse("{'test':'test'}"); assertEquals("test", json.get("test")); } public void testParseOnException() throws Exception { try { JSONObjectUtils.parse("a"); fail(); } catch (JSONRuntimeException exp) { } } public void testPut() { JSONObject json = new JSONObject(); JSONObjectUtils.put(json, "test", "test"); } public void testPutObject() { JSONObject data = new JSONObject(); JSONObject json = new JSONObject(); JSONObjectUtils.put(data, "test", "test"); JSONObjectUtils.put(json, "data", data); } public void testGetString() throws Exception{ JSONObject json = new JSONObject("{'test':'test'}"); assertEquals("test", JSONObjectUtils.getString(json, "test")); } public void testGetInt() throws Exception { JSONObject json = new JSONObject("{'test':1}"); assertEquals(1, JSONObjectUtils.getInt(json, "test")); json = new JSONObject("{'test':'1'}"); assertEquals(1, JSONObjectUtils.getInt(json, "test")); } public void testGetIntOnException() throws Exception { try { JSONObject json = new JSONObject("{'test':'test'}"); assertEquals(1, JSONObjectUtils.getInt(json, "test")); fail(); } catch (JSONRuntimeException exp) { } } public void testGetObject() throws Exception { JSONObject json = JSONObjectUtils.parse("{'data':{test:'test'}}"); assertEquals("test", JSONObjectUtils.getJSONObject(json, "data").get("test")); } public void testToUriQueryParameter() throws Exception { JSONObject json = new JSONObject(); json.put("ccc", "CCC"); json.put("bbb", "BBB"); json.put("aaa", "AA A"); String params = JSONObjectUtils.toUriQueryParameter(json); assertEquals("?bbb=BBB&ccc=CCC&aaa=AA%20A", params); } public void testGetMap() throws Exception { JSONObject json = new JSONObject("{'data':{'aaa':'AAA','bbb':'BBB'}}"); Map<String, String> map = JSONObjectUtils.getMap(json, "data"); assertEquals("AAA", map.get("aaa")); assertEquals("BBB", map.get("bbb")); } public void testGetBundle() throws Exception { JSONObject json = new JSONObject("{'data':{'aaa':'AAA','bbb':'BBB'}}"); Bundle bundle = JSONObjectUtils.getBundle(json, "data"); assertEquals("AAA", bundle.getString("aaa")); assertEquals("BBB", bundle.getString("bbb")); } public void testJsonObjectEquals () throws JSONException { final String jsonData01 = "{'key 01':'value of key 01','key two'={'inner key 1'=>NULL,'innerkey2':val-key-2,'key 03':{};key-4:[arrayval,[]]};'key 02':41}"; final String jsonData01SyntacticChanges = "{'key 01' : 'value of key 01';'key two':{'inner key 1'=NULL,'innerkey2'=val-key-2,'key 03'=>{ }; key-4 : [\"arrayval\";[]]};'key 02':41}"; final String jsonData01NullAbsentChanges = "{'key 01':'value of key 01','key two'={'innerkey2':val-key-2,'key 03':{};key-4:[arrayval,[]]};'key 02':41}"; final String jsonData01NonNullAbsentChanges = "{'key 01':'value of key 01','key two'={'inner key 1'=>NULL,'key 03':{};key-4:[arrayval,[]]};'key 02':41}"; final String jsonData01ArrayChange = "{'key 01':'value of key 01','key two'={'inner key 1'=>NULL,'innerkey2':val-key-2,'key 03':{};key-4:[arrayvalC,[]]};'key 02':41}"; final String jsonData02 = "{key:NULL}"; final String jsonData02EmptyObjChange = "{key:{}}"; final String jsonData02EmptyArrayChange = "{key:[]}"; final String jsonData02ValueChange01 = "{key:'val'}"; final String jsonData02ValueChange02 = "{key:'val,'}"; final String jsonData02TypeChange = "{key:'NULL'}"; final String jsonData03 = "{num:'41'}"; final String jsonData03TypeChange = "{num:41}"; final String jsonData03ValChange = "{num:'42'}"; final String jsonData03FloatChange = "{num:41.000}"; final String jsonData03FloatQuotedChange = "{num:'41.000'}"; final String jsonData03KeyChange = "{'num ':'41'}"; final String jsonData04 = "{'array':[val1,[inval1, null, 11],val3,[]]}"; final String jsonData04AbsentEmptyArray = "{'array':[val1,[inval1, null, 11],val3]}"; final String jsonData04AbsentNullValue = "{'array':[val1,[inval1, 11],val3,[]]}"; final String jsonData04EmptyInnerArray = "{'array':[val1,[],val3,[]]}"; final String jsonData04ValueChange = "{'array':[val1,[inval1, null, 11],val32,[]]}"; final String jsonData04NumberChange = "{'array':[val1,[inval1, null, 11.0000],val3,[]]}"; final String jsonData04TypeChange = "{'array':[val1,[inval1, null, '11'],val3,[]]}"; assertTrue(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData01), new JSONObject(jsonData01SyntacticChanges))); assertTrue(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData01), new JSONObject(jsonData01NullAbsentChanges))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData01), new JSONObject(jsonData01NonNullAbsentChanges))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData01), new JSONObject(jsonData01ArrayChange))); //reflexivity assertTrue(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData01), new JSONObject(jsonData01))); //symmetry assertTrue(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData01SyntacticChanges), new JSONObject(jsonData01NullAbsentChanges))); assertTrue(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData01NullAbsentChanges), new JSONObject(jsonData01SyntacticChanges))); //transitivity assertTrue(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData01SyntacticChanges), new JSONObject(jsonData01))); assertTrue(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData01), new JSONObject(jsonData01NullAbsentChanges))); assertTrue(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData01SyntacticChanges), new JSONObject(jsonData01NullAbsentChanges))); //null assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData01SyntacticChanges), null)); assertFalse(JSONObjectUtils.areDataEquivalent(null, new JSONObject(jsonData01SyntacticChanges))); assertTrue(JSONObjectUtils.areDataEquivalent(null, null)); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData02), new JSONObject(jsonData02EmptyObjChange))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData02), new JSONObject(jsonData02EmptyArrayChange))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData02EmptyObjChange), new JSONObject(jsonData02EmptyArrayChange))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData02), new JSONObject(jsonData02ValueChange01))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData02), new JSONObject(jsonData02ValueChange02))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData02ValueChange01), new JSONObject(jsonData02ValueChange02))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData02), new JSONObject(jsonData02TypeChange))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData03), new JSONObject(jsonData03TypeChange))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData03), new JSONObject(jsonData03ValChange))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData03TypeChange), new JSONObject(jsonData03ValChange))); assertTrue(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData03TypeChange), new JSONObject(jsonData03FloatChange))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData03), new JSONObject(jsonData03FloatQuotedChange))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData03), new JSONObject(jsonData03KeyChange))); assertTrue(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData04), new JSONObject(jsonData04))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData04), new JSONObject(jsonData04AbsentEmptyArray))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData04), new JSONObject(jsonData04AbsentNullValue))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData04), new JSONObject(jsonData04EmptyInnerArray))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData04), new JSONObject(jsonData04ValueChange))); assertTrue(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData04), new JSONObject(jsonData04NumberChange))); assertFalse(JSONObjectUtils.areDataEquivalent(new JSONObject(jsonData04), new JSONObject(jsonData04TypeChange))); } }