/* * Created by Andrey Cherkashin (acherkashin) * http://acherkashin.me * * License * Copyright (c) 2015 Andrey Cherkashin * The project released under the MIT license: http://opensource.org/licenses/MIT */ 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 static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Test; /** * * @author acherkashin */ public class JUniformObjectTest { @Test public void testValueSaveLoad() { JUniformObject object = new JUniformObject(2); assertEquals(object.getValue(), 2); } @Test public void testListSaveLoad() { List<Integer> list = new ArrayList<>(); list.add(2); list.add(3); list.add(64); JUniformObject object = new JUniformObject(list); assertEquals(object.getValue(), list); } @Test public void testNullIterator() { JUniformObject object = new JUniformObject(2); assertEquals(object.getValue(), 2); // check its still an integer String items = ""; Iterator<JUniformObject> it = object.iterator(); while(it.hasNext()) { items += it.next(); } assertEquals("", items); } @Test public void testListIterator() { List<Integer> list = new ArrayList<>(); list.add(2); list.add(3); list.add(64); JUniformObject object = new JUniformObject(list); assertEquals(object.getValue(), list); String items = ""; Iterator<JUniformObject> it = object.iterator(); while(it.hasNext()) { items += it.next().getValue(); } assertEquals("2364", items); } @Test public void testArrayAccessByIndex() { List<Integer> array = new ArrayList<>(); array.add(2); array.add(3); array.add(64); JUniformObject object = new JUniformObject(array); // OK assertEquals(2, object.getElementByIndex(0).getValue()); assertEquals(3, object.getElementByIndex(1).getValue()); assertEquals(64, object.getElementByIndex(2).getValue()); // NOT OK assertEquals(null, object.getElementByIndex(3).getValue()); assertTrue(null == object.getElementByIndex(3).toInteger()); assertEquals(0, object.getElementByIndex(3).toIntegerDefault(0)); } @Test public void testArrayIteratingByIndexes() { List<Integer> array = new ArrayList<>(); array.add(2); array.add(3); array.add(64); String result = ""; JUniformObject object = new JUniformObject(array); for(int i = 0; i < object.getElementsCount(); i++) { result += object.getElementByIndex(i); } assertEquals("2364", result); } @Test public void testMap() { Map<Integer,String> map = new HashMap<>(); map.put(1, "a"); map.put(2, "b"); JUniformObject object = new JUniformObject(map); assertEquals("a", object.getProperty(1).getValue()); } @Test public void testMapIterator() { Map<Integer,String> map = new HashMap<>(); map.put(1, "a"); map.put(2, "b"); String result = ""; JUniformObject object = new JUniformObject(map); Iterator<Map.Entry<Object,JUniformObject>> it = object.entrySet().iterator(); while(it.hasNext()) { Map.Entry<Object,JUniformObject> entry = it.next(); result += entry.getKey() + "_" + entry.getValue().getValue(); } assertEquals("1_a2_b", result); } @Test public void testMapAccess() { Map<String,Object> map = new HashMap<>(); map.put("speed", 55); map.put("gear", "R"); Map<String,Object> map2 = new HashMap<>(); map2.put("mine", map); map2.put("wife", false); Map<String,Object> map3 = new HashMap<>(); map3.put("mycar", map); map3.put("cars", map2); // OK JUniformObject object = new JUniformObject(map3); Assert.assertEquals("R", object.getProperty("mycar").getProperty("gear").toString()); Assert.assertTrue(55 == object.getProperty("mycar").getProperty("speed").toInteger()); Assert.assertTrue(false == object.getProperty("cars").getProperty("wife").toBoolean()); Assert.assertEquals("java.util.HashMap", object.getProperty("cars").getProperty("mine").getValue().getClass().getName()); Assert.assertEquals("R", object.getProperty("cars").getProperty("mine").getProperty("gear").toString()); // NOT OK Assert.assertEquals(null, object.getProperty("mycar").getProperty("direction").getValue()); Assert.assertEquals(null, object.getProperty("mycar").getProperty("direction").getProperty("x").toInteger()); } @Test public void testMapPrimitiveAccess() { Map<String,Object> map = new HashMap<>(); map.put("speed", 55); map.put("gear", "R"); Map<String,Object> map2 = new HashMap<>(); map2.put("mine", map); map2.put("wife", false); Map<String,Object> map3 = new HashMap<>(); map3.put("mycar", map); map3.put("cars", map2); // OK JUniformObject object = new JUniformObject(map3); Assert.assertEquals("R", object.getProperty("mycar").getProperty("gear").toStringDefault("")); Assert.assertEquals(55, object.getProperty("mycar").getProperty("speed").toIntegerDefault(0)); Assert.assertEquals(false, object.getProperty("cars").getProperty("wife").toBooleanDefault(false)); Assert.assertEquals("R", object.getProperty("cars").getProperty("mine").getProperty("gear").toStringDefault("")); Assert.assertEquals("", object.getProperty("mycar").getProperty("direction").toStringDefault("")); Assert.assertEquals(0, object.getProperty("mycar").getProperty("direction").getProperty("x").toIntegerDefault(0)); } @Test public void testPrimitives() { JUniformObject object = new JUniformObject(55); assertEquals("55", object.toString()); assertTrue(55 == object.toInteger()); assertTrue(55L == object.toLong()); assertEquals(55.f, object.toFloat(), 0.00001f); assertEquals(55.f, object.toDouble(), 0.00001f); } @Test public void testPrimitivesFromString() { JUniformObject object = new JUniformObject("55"); assertEquals("55", object.toString()); assertTrue(55 == object.toInteger()); assertTrue(55L == object.toLong()); assertEquals(55.f, object.toFloat(), 0.00001f); assertEquals(55.f, object.toDouble(), 0.00001f); } @Test public void testPrimitivesFromStringFloat() { JUniformObject object = new JUniformObject("55.125"); assertEquals("55.125", object.toString()); assertTrue(55 == object.toInteger()); assertTrue(55L == object.toLong()); assertEquals(55.125f, object.toFloat(), 0.00001f); assertEquals(55.125f, object.toDouble(), 0.00001f); } @Test public void testPrimitivesFromFloat() { JUniformObject object = new JUniformObject(55.125F); assertEquals("55.125", object.toString()); assertTrue(55 == object.toInteger()); assertTrue(55L == object.toLong()); assertEquals(55.125f, object.toFloat(), 0.00001f); assertEquals(55.125f, object.toDouble(), 0.00001f); } }