/*
* 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());
}
}