/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.juniform; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; /** * * @author acherkashin */ public class JUniformJSONTest { private static JUniformPackerJSON _packer; @BeforeClass public static void preparePacker() { _packer = new JUniformPackerJSON(); } @Test public void testValue() { JUniformObject object = _packer.toUniformObjectFromString("1"); Assert.assertEquals((Long)1L, object.getValue()); } @Test public void testNull() { JUniformObject object = _packer.toUniformObjectFromString("null"); Assert.assertEquals(null, object.getValue()); } @Test public void testArray() { JUniformObject object = _packer.toUniformObjectFromString("[1,2,3]"); String result = ""; Iterator<JUniformObject> it = object.iterator(); while(it.hasNext()) { result += it.next().getValue(); } Assert.assertEquals("123", result); } @Test public void testObject() { JUniformObject object = _packer.toUniformObjectFromString("{\"lalala\": 1, \"help\": 55.0}"); String result = ""; Iterator<Map.Entry<Object,JUniformObject>> it = object.entrySet().iterator(); while(it.hasNext()) { Map.Entry<Object,JUniformObject> entry = it.next(); result += entry.getKey() + "_" + entry.getValue().toString() + "_"; } Assert.assertTrue( "lalala_1_help_55.0_".equals(result) || "help_55.0_lalala_1_".equals(result) ); } @Test public void testInnerObject() { JUniformObject object = _packer.toUniformObjectFromString("{\"lalala\": 1, \"boom\": {\"n\": 1, \"m\": 3, \"x\": \"111.5\"}, \"help\": 55.0}"); Assert.assertEquals("1", object.getProperty("boom").getProperty("n").toString()); Assert.assertTrue(3 == object.getProperty("boom").getProperty("m").toInteger()); Assert.assertEquals(111.5, object.getProperty("boom").getProperty("x").toFloat(), 0.000001); } @Test public void testInnerWrongObject() { JUniformObject object = _packer.toUniformObjectFromString("{\"lalala\": 1, \"boom\": {\"n\": 1, \"m\": 3}, \"help\": 55.0}"); Assert.assertEquals(null, object.getProperty("boom").getProperty("WRONG").toString()); Assert.assertEquals(null, object.getProperty("jajaja").getProperty("WRONG").toString()); } @Test public void testObjectToJSON() { JUniformObject object = _packer.toUniformObjectFromString("{\"lalala\": 1, \"help\": 55.0}"); String json = _packer.fromUniformObjectToString(object); Assert.assertEquals("{\"help\":55.0,\"lalala\":1}", json); } @Test public void testPrimitiveToJSON() { JUniformObject object = new JUniformObject(511); String json = _packer.fromUniformObjectToString(object); Assert.assertEquals("511", json); } @Test public void testArrayToJSON() { List<Integer> array = new ArrayList<>(); array.add(2); array.add(3); array.add(64); JUniformObject object = new JUniformObject(array); String json = _packer.fromUniformObjectToString(object); Assert.assertEquals("[2,3,64]", json); } @Test public void testMapToJSON() { Map<Integer,String> map = new HashMap<>(); map.put(1, "a"); map.put(2, "b"); JUniformObject object = new JUniformObject(map); String json = _packer.fromUniformObjectToString(object); Assert.assertEquals("{\"1\":\"a\",\"2\":\"b\"}", json); } @Test public void testComplexMapToJSON() { Map<String,Object> map = new HashMap<>(); map.put("1", "a"); map.put("3", "b"); Map<String,Object> map2 = new HashMap<>(); map2.put("lala", map); map2.put("help", "b"); Map<String,Object> map3 = new HashMap<>(); map3.put("bjasd", map); map3.put("gogo", map2); JUniformObject object = new JUniformObject(map3); String json = _packer.fromUniformObjectToString(object); JUniformObject backToObject = _packer.toUniformObjectFromString(json); Assert.assertEquals("b", backToObject.getProperty("bjasd").getProperty("3").getValue()); Assert.assertEquals("a", backToObject.getProperty("bjasd").getProperty("1").getValue()); Assert.assertEquals("b", backToObject.getProperty("gogo").getProperty("help").getValue()); Assert.assertEquals("java.util.HashMap", backToObject.getProperty("gogo").getProperty("lala").getValue().getClass().getName()); Assert.assertEquals("b", backToObject.getProperty("gogo").getProperty("lala").getProperty("3").getValue()); } }