/**
*
*/
package org.richfaces.json;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import junit.framework.TestCase;
/**
* @author Nick Belaevski - nbelaevski@exadel.com created 12.04.2007
*
*/
public class JsonTest extends TestCase {
/**
* @param name
*/
public JsonTest(String name) {
super(name);
}
/*
* (non-Javadoc)
*
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
}
/*
* (non-Javadoc)
*
* @see junit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
public void testMap() throws Exception {
JSONMap map = new JSONMap("{text: 12, moreData: { key: value, key1: 23.04 }}");
assertEquals(12, ((Integer) map.get("text")).intValue());
assertEquals(2, map.size());
Map innerMap = (Map) map.get("moreData");
assertEquals("value", innerMap.get("key"));
assertEquals(23.04, ((Double) innerMap.get("key1")).doubleValue(), 0);
assertEquals(2, innerMap.size());
}
public void testCollection() throws Exception {
JSONCollection collection = new JSONCollection("[text, { key: value, key1: 23.04 }, [1, a, 3]]");
assertEquals(3, collection.size());
Iterator iterator = collection.iterator();
assertTrue(iterator.hasNext());
assertEquals("text", iterator.next());
assertTrue(iterator.hasNext());
Map innerMap = (Map) iterator.next();
assertTrue(iterator.hasNext());
assertEquals("value", innerMap.get("key"));
assertEquals(23.04, ((Double) innerMap.get("key1")).doubleValue(), 0);
assertEquals(2, innerMap.size());
Collection innerCollection = (Collection) iterator.next();
assertEquals(3, innerCollection.size());
Iterator innerIterator = innerCollection.iterator();
assertTrue(innerIterator.hasNext());
assertEquals(1, ((Integer) innerIterator.next()).intValue());
assertTrue(innerIterator.hasNext());
assertEquals("a", innerIterator.next());
assertTrue(innerIterator.hasNext());
assertEquals(3, ((Integer) innerIterator.next()).intValue());
assertFalse(innerIterator.hasNext());
assertFalse(iterator.hasNext());
}
public void testNewCollection() throws Exception {
JSONCollection collection = new JSONCollection();
assertTrue(collection.isEmpty());
}
public void testNewMap() throws Exception {
JSONMap map = new JSONMap();
assertTrue(map.isEmpty());
}
public void testMapAddiition() throws Exception {
JSONMap map = new JSONMap();
Set set = map.entrySet();
set.add(new JsonTestMockMapEntry("boolean", new Boolean(true)));
set.add(new JsonTestMockMapEntry("double", new Double(23.45)));
set.add(new JsonTestMockMapEntry("integer", new Integer(56)));
set.add(new JsonTestMockMapEntry("long", new Long(89)));
set.add(new JsonTestMockMapEntry("string", "testString"));
HashSet hashSet = new HashSet();
hashSet.add("15");
hashSet.add(new Double(45.01));
HashSet etalonSet = (HashSet) hashSet.clone();
HashMap hashMap = new HashMap();
hashMap.put("16", new Boolean(false));
hashMap.put("key", new Double(145.01));
HashMap etalonMap = (HashMap) hashMap.clone();
set.add(new JsonTestMockMapEntry("collection", hashSet));
set.add(new JsonTestMockMapEntry("map", hashMap));
assertEquals(Boolean.TRUE, map.get("boolean"));
assertEquals(new Double(23.45), map.get("double"));
assertEquals(new Integer(56), map.get("integer"));
assertEquals(new Long(89), map.get("long"));
assertEquals("testString", map.get("string"));
Collection collection = (Collection) map.get("collection");
assertTrue(etalonSet.containsAll(collection));
etalonSet.removeAll(collection);
assertTrue(etalonSet.isEmpty());
assertEquals(etalonMap, map.get("map"));
}
}
class JsonTestMockMapEntry implements Map.Entry {
private Object key;
private Object value;
public JsonTestMockMapEntry(Object key, Object value) {
super();
this.key = key;
this.value = value;
}
public Object getKey() {
return key;
}
public Object getValue() {
return value;
}
public Object setValue(Object newValue) {
Object oldValue = value;
value = newValue;
return oldValue;
}
}