@Test public void testCreateFromMapNestedList() { Map<String, Object> map = new HashMap<>(); List<String> nestedArr = Arrays.asList("foo"); map.put("nested", nestedArr); JsonObject obj = new JsonObject(map); JsonArray nestedRetrieved = obj.getJsonArray("nested"); assertEquals("foo", nestedRetrieved.getString(0)); }
@Test public void testCreateFromListCharSequence() { List<Object> list = new ArrayList<>(); list.add("foo"); list.add(123); list.add(new StringBuilder("eek")); JsonArray arr = new JsonArray(list); assertEquals("foo", arr.getString(0)); assertEquals(Integer.valueOf(123), arr.getInteger(1)); assertEquals("eek", arr.getString(2)); assertSame(list, arr.getList()); }
@Test public void testCreateFromMapNestedJsonArray() { Map<String, Object> map = new HashMap<>(); JsonArray nestedArr = new JsonArray().add("foo"); map.put("nested", nestedArr); JsonObject obj = new JsonObject(map); JsonArray nestedRetrieved = obj.getJsonArray("nested"); assertEquals("foo", nestedRetrieved.getString(0)); }
@Test public void testCreateFromList() { List<Object> list = new ArrayList<>(); list.add("foo"); list.add(123); JsonArray arr = new JsonArray(list); assertEquals("foo", arr.getString(0)); assertEquals(Integer.valueOf(123), arr.getInteger(1)); assertSame(list, arr.getList()); }
@Test public void testCreateFromListNestedJsonObject() { List<Object> list = new ArrayList<>(); list.add("foo"); list.add(123); JsonObject obj = new JsonObject().put("blah", "wibble"); list.add(obj); JsonArray arr = new JsonArray(list); assertEquals("foo", arr.getString(0)); assertEquals(Integer.valueOf(123), arr.getInteger(1)); assertSame(list, arr.getList()); assertSame(obj, arr.getJsonObject(2)); }
@Test public void testGetString() { jsonArray.add("foo"); assertEquals("foo", jsonArray.getString(0)); try { jsonArray.getString(-1); fail(); } catch (IndexOutOfBoundsException e) { // OK } try { jsonArray.getString(1); fail(); } catch (IndexOutOfBoundsException e) { // OK } jsonArray.add(123); try { jsonArray.getString(1); fail(); } catch (ClassCastException e) { // OK } jsonArray.addNull(); assertNull(jsonArray.getString(2)); }
@Test public void testCreateFromListNestedList() { List<Object> list = new ArrayList<>(); list.add("foo"); list.add(123); List<Object> list2 = new ArrayList<>(); list2.add("blah"); list2.add("wibble"); list.add(list2); JsonArray arr = new JsonArray(list); assertEquals("foo", arr.getString(0)); assertEquals(Integer.valueOf(123), arr.getInteger(1)); assertSame(list, arr.getList()); JsonArray arr2 = arr.getJsonArray(2); assertSame(list2, arr2.getList()); }
@Test public void testCreateFromListNestedMap() { List<Object> list = new ArrayList<>(); list.add("foo"); list.add(123); Map<String, Object> map = new HashMap<>(); map.put("blah", "wibble"); list.add(map); JsonArray arr = new JsonArray(list); assertEquals("foo", arr.getString(0)); assertEquals(Integer.valueOf(123), arr.getInteger(1)); assertSame(list, arr.getList()); JsonObject obj = arr.getJsonObject(2); assertSame(map, obj.getMap()); }
@Test public void testCreateFromListNestedJsonArray() { List<Object> list = new ArrayList<>(); list.add("foo"); list.add(123); JsonArray arr2 = new JsonArray().add("blah").add("wibble"); list.add(arr2); JsonArray arr = new JsonArray(list); assertEquals("foo", arr.getString(0)); assertEquals(Integer.valueOf(123), arr.getInteger(1)); assertSame(list, arr.getList()); assertSame(arr2, arr.getJsonArray(2)); }
@Test public void testToJsonArray() { List<Object> list = new ArrayList<>(); list.add("the_string"); list.add(4); list.add(true); list.add(new AsciiString("the_charsequence")); list.add(new BigInteger("1234567")); list.add(Buffer.buffer("hello")); list.add(Collections.singletonMap("nested", 4)); list.add(Arrays.asList(1, 2, 3)); JsonArray json = (JsonArray) ConversionHelper.toObject(list); assertEquals(8, json.size()); assertEquals("the_string", json.getString(0)); assertEquals(4, (int)json.getInteger(1)); assertEquals(true, json.getBoolean(2)); assertEquals("the_charsequence", json.getString(3)); assertEquals(1234567, (int)json.getInteger(4)); assertEquals("hello", new String(json.getBinary(5))); assertEquals(new JsonObject().put("nested", 4), json.getJsonObject(6)); assertEquals(new JsonArray().add(1).add(2).add(3), json.getJsonArray(7)); }
@Test public void testAddCharSequence() { assertSame(jsonArray, jsonArray.add(new StringBuilder("bar"))); assertEquals("bar", jsonArray.getString(0)); try { jsonArray.add((CharSequence) null); fail(); } catch (NullPointerException e) { // OK } }
@Test public void testAddAllJsonArray() { jsonArray.add("bar"); JsonArray arr = new JsonArray().add("foo").add(48); assertSame(jsonArray, jsonArray.addAll(arr)); assertEquals(arr.getString(0), jsonArray.getString(1)); assertEquals(arr.getInteger(1), jsonArray.getInteger(2)); try { jsonArray.add((JsonArray)null); fail(); } catch (NullPointerException e) { // OK } }
@Test public void testDecode() { byte[] bytes = TestUtils.randomByteArray(10); String strBytes = Base64.getEncoder().encodeToString(bytes); Instant now = Instant.now(); String strInstant = ISO_INSTANT.format(now); String json = "[\"foo\",123,1234,1.23,2.34,true,\"" + strBytes + "\",\"" + strInstant + "\",null,{\"foo\":\"bar\"},[\"foo\",123]]"; JsonArray arr = new JsonArray(json); assertEquals("foo", arr.getString(0)); assertEquals(Integer.valueOf(123), arr.getInteger(1)); assertEquals(Long.valueOf(1234l), arr.getLong(2)); assertEquals(Float.valueOf(1.23f), arr.getFloat(3)); assertEquals(Double.valueOf(2.34d), arr.getDouble(4)); assertEquals(true, arr.getBoolean(5)); assertArrayEquals(bytes, arr.getBinary(6)); assertEquals(Base64.getEncoder().encodeToString(bytes), arr.getValue(6)); assertEquals(now, arr.getInstant(7)); assertEquals(now.toString(), arr.getValue(7)); assertTrue(arr.hasNull(8)); JsonObject obj = arr.getJsonObject(9); assertEquals("bar", obj.getString("foo")); JsonArray arr2 = arr.getJsonArray(10); assertEquals("foo", arr2.getString(0)); assertEquals(Integer.valueOf(123), arr2.getInteger(1)); }
@Test public void testAddString() { assertSame(jsonArray, jsonArray.add("foo")); assertEquals("foo", jsonArray.getString(0)); try { jsonArray.add((String)null); fail(); } catch (NullPointerException e) { // OK } }
@Test public void testAddNull() { assertSame(jsonArray, jsonArray.addNull()); assertEquals(null, jsonArray.getString(0)); assertTrue(jsonArray.hasNull(0)); }
@Test public void testDecode() throws Exception { byte[] bytes = TestUtils.randomByteArray(10); String strBytes = Base64.getEncoder().encodeToString(bytes); Instant now = Instant.now(); String strInstant = ISO_INSTANT.format(now); String json = "{\"mystr\":\"foo\",\"myint\":123,\"mylong\":1234,\"myfloat\":1.23,\"mydouble\":2.34,\"" + "myboolean\":true,\"mybinary\":\"" + strBytes + "\",\"myinstant\":\"" + strInstant + "\",\"mynull\":null,\"myobj\":{\"foo\":\"bar\"},\"myarr\":[\"foo\",123]}"; JsonObject obj = new JsonObject(json); assertEquals(json, obj.encode()); assertEquals("foo", obj.getString("mystr")); assertEquals(Integer.valueOf(123), obj.getInteger("myint")); assertEquals(Long.valueOf(1234), obj.getLong("mylong")); assertEquals(Float.valueOf(1.23f), obj.getFloat("myfloat")); assertEquals(Double.valueOf(2.34d), obj.getDouble("mydouble")); assertTrue(obj.getBoolean("myboolean")); assertArrayEquals(bytes, obj.getBinary("mybinary")); assertEquals(Base64.getEncoder().encodeToString(bytes), obj.getValue("mybinary")); assertEquals(now, obj.getInstant("myinstant")); assertEquals(now.toString(), obj.getValue("myinstant")); assertTrue(obj.containsKey("mynull")); JsonObject nestedObj = obj.getJsonObject("myobj"); assertEquals("bar", nestedObj.getString("foo")); JsonArray nestedArr = obj.getJsonArray("myarr"); assertEquals("foo", nestedArr.getString(0)); assertEquals(Integer.valueOf(123), Integer.valueOf(nestedArr.getInteger(1))); }
@Test public void testAddEnum() { assertSame(jsonArray, jsonArray.add(JsonObjectTest.SomeEnum.FOO)); assertEquals(JsonObjectTest.SomeEnum.FOO.toString(), jsonArray.getString(0)); try { jsonArray.add((JsonObjectTest.SomeEnum)null); fail(); } catch (NullPointerException e) { // OK } }
@Test public void testHasNull() { jsonArray.addNull(); jsonArray.add("foo"); assertEquals(null, jsonArray.getString(0)); assertTrue(jsonArray.hasNull(0)); assertFalse(jsonArray.hasNull(1)); }
@Test public void testCopy() { jsonArray.add("foo"); jsonArray.add(123); JsonObject obj = new JsonObject().put("foo", "bar"); jsonArray.add(obj); jsonArray.add(new StringBuilder("eeek")); JsonArray copy = jsonArray.copy(); assertEquals("eeek", copy.getString(3)); assertNotSame(jsonArray, copy); assertEquals(jsonArray, copy); assertEquals(4, copy.size()); assertEquals("foo", copy.getString(0)); assertEquals(Integer.valueOf(123), copy.getInteger(1)); assertEquals(obj, copy.getJsonObject(2)); assertNotSame(obj, copy.getJsonObject(2)); copy.add("foo"); assertEquals(4, jsonArray.size()); jsonArray.add("bar"); assertEquals(5, copy.size()); }
@Test public void testGetBinary() { byte[] bytes = TestUtils.randomByteArray(10); jsonArray.add(bytes); assertArrayEquals(bytes, jsonArray.getBinary(0)); assertEquals(Base64.getEncoder().encodeToString(bytes), jsonArray.getValue(0)); assertArrayEquals(bytes, Base64.getDecoder().decode(jsonArray.getString(0))); try { jsonArray.getBinary(-1); fail(); } catch (IndexOutOfBoundsException e) { // OK } try { jsonArray.getBinary(1); fail(); } catch (IndexOutOfBoundsException e) { // OK } jsonArray.add(123); try { jsonArray.getBinary(1); fail(); } catch (ClassCastException e) { // OK } jsonArray.addNull(); assertNull(jsonArray.getBinary(2)); }