Package siena.json.test

Source Code of siena.json.test.JsonTest

package siena.json.test;

import static siena.Json.list;
import static siena.Json.map;
import static siena.Json.sortedMap;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import junit.framework.TestCase;
import siena.Json;

public class JsonTest extends TestCase {
 
  public void testBuildEmptyList() {
    Json json = Json.list();

    assertTrue(json.isList());
    assertTrue(json.isEmpty());
   
    assertFalse(json.isBoolean());
    assertFalse(json.isMap());
    assertFalse(json.isNumber());
    assertFalse(json.isString());
   
    assertEquals(0, json.size());
    assertEquals("[]", json.toString());
  }
 
  public void testBuildEmptyMap() {
    Json json = Json.map();

    assertTrue(json.isMap());
    assertTrue(json.isEmpty());
   
    assertFalse(json.isBoolean());
    assertFalse(json.isList());
    assertFalse(json.isNumber());
    assertFalse(json.isString());
   
    assertEquals(0, json.size());
    assertEquals("{}", json.toString());
  }
 
  public void testBuildString() {
    Json json = new Json("foobar");

    assertTrue(json.isString());
   
    assertFalse(json.isBoolean());
    assertFalse(json.isList());
    assertFalse(json.isMap());
    assertFalse(json.isEmpty());
   
    assertEquals(1, json.size());
    assertEquals("\"foobar\"", json.toString());
  }
 
  public void testBuildComplex() {
    Json json = Json.list(1, 2, 3, 4, true, false, null, Json.map().put("foo", 1).put("bar", 2));

    assertEquals(1, json.at(0).asInt());
    assertEquals(2, json.at(1).asInt());
    assertEquals(3, json.at(2).asInt());
    assertEquals(4, json.at(3).asInt());
    assertTrue(json.at(4).asBoolean());
    assertFalse(json.at(5).asBoolean());
    assertTrue(json.at(6).isNull());
    assertTrue(json.at(7).isMap());
    assertEquals(2, json.at(7).size());
    assertEquals(1, json.at(7).get("foo").asInt());
    assertEquals(2, json.at(7).get("bar").asInt());
  }
 
  public void testParseList() {
    Json json = Json.loads("[true, false, null, 1234, \"foobar\"]");
   
    assertTrue(json.isList());
    assertEquals(5, json.size());
    assertTrue(json.at(0).isBoolean());
    assertTrue(json.at(0).asBoolean());
    assertTrue(json.at(1).isBoolean());
    assertFalse(json.at(1).asBoolean());
    assertTrue(json.at(2).isNull());
    assertTrue(json.at(3).isNumber());
    assertEquals(1234, json.at(3).asInt());
    assertTrue(json.at(4).isString());
    assertEquals("foobar", json.at(4).asString());
  }
 
  public void testEscapeCharacters() {
    Json json = Json.loads("[\"\\b\\f\\n\\r\\t\\\"\\/\\u0041\"]");
   
    assertTrue(json.isList());
    assertEquals(1, json.size());
    assertTrue(json.at(0).isString());
   
    assertEquals("[\"\\b\\f\\n\\r\\t\\\"\\/A\"]", json.toString());
  }
 
  public void testParseMap() {
    Json json = Json.loads("{\"foo\": 1234, \"bar\": true}");
   
    assertTrue(json.isMap());
    assertEquals(2, json.size());
   
    Json foo = json.get("foo");
    assertTrue(foo.isNumber());
    assertEquals(1234, foo.asInt());
   
    Json bar = json.get("bar");
    assertTrue(bar.isBoolean());
    assertEquals(true, bar.asBoolean());
  }
 
  public void testParseComplex() {
    Json json = null;
   
    json = Json.loads("{}");
    assertEquals("{}", json.toString());
   
    json = Json.loads("[{}]");
    assertEquals("[{}]", json.toString());
   
    json = Json.loads("{}");
    assertEquals("{}", json.toString());
   
    json = Json.loads("[{}, {}, {}]");
    assertEquals("[{}, {}, {}]", json.toString());
   
    json = Json.loads("{\"foo\": 1234, \"bar\": [1, 2, 3, [{}], true, false, null, {}]}");
   
    assertTrue(json.isMap());
    assertEquals(2, json.size());
    assertEquals(1234, json.get("foo").asInt());
   
    Json list = json.get("bar");
    assertTrue(list.isList());
    assertEquals(8, list.size());
    assertEquals(1, list.at(0).asInt());
    assertEquals(2, list.at(1).asInt());
    assertEquals(3, list.at(2).asInt());
   
    assertTrue(list.at(3).isList());
    assertEquals(1, list.at(3).size());
    assertTrue(list.at(3).at(0).isMap());
    assertTrue(list.at(3).at(0).isEmpty());
   
    assertTrue(list.at(4).asBoolean());
    assertFalse(list.at(5).asBoolean());
    assertTrue(list.at(6).isNull());
    assertTrue(list.at(7).isMap());
    assertTrue(list.at(7).isEmpty());
  }
 
  public void testPutAll() {
    Json map = Json.map().put("foo", 1).put("bar", 2);
   
    Json other = Json.map().put("baz", 3);
    other.putAll(map);
   
    assertEquals(3, other.size());
    assertEquals(3, other.get("baz").asInt());
    assertEquals(2, other.get("bar").asInt());
    assertEquals(1, other.get("foo").asInt());
  }
 
  public void testArray() {
    Json list = new Json(new Object[]{1, 2, 3});
    assertEquals(3, list.size());
    assertEquals(1, list.at(0).asInt());
    assertEquals(2, list.at(1).asInt());
    assertEquals(3, list.at(2).asInt());
    assertEquals("[1, 2, 3]", list.toString());
  }
 
  public void testCollection() {
    Json list = new Json(Arrays.asList(new Object[]{1, 2, 3}));
    assertEquals(3, list.size());
    assertEquals(1, list.at(0).asInt());
    assertEquals(2, list.at(1).asInt());
    assertEquals(3, list.at(2).asInt());
    assertEquals("[1, 2, 3]", list.toString());
  }
 
  public void testMap() {
    Map<String, Object> m = new HashMap<String, Object>();
    m.put("foo", 1);
   
    Json map = new Json(m);
    assertTrue(map.isMap());
    assertEquals(1, map.size());
    assertEquals(1, map.get("foo").asInt());
    assertEquals("{\"foo\": 1}", map.toString());
  }
 
  public void testPutComplex() {
    List<Integer> list1 = Arrays.asList(new Integer[]{1, 2, 3});
    List<String>  list2 = Arrays.asList(new String[]{"foo", "bar", "baz"});
   
    List<List<?>> objects = new ArrayList<List<?>>();;
    objects.add(list1);
    objects.add(list2);
   
    Json map = Json.map().put("foo", objects);
   
    Json list = map.get("foo");
    assertEquals(2, list.size());
   
    assertEquals(3, list.at(0).size());
    assertEquals(1, list.at(0).at(0).asInt());
    assertEquals(2, list.at(0).at(1).asInt());
    assertEquals(3, list.at(0).at(2).asInt());

    assertEquals(3, list.at(1).size());
    assertEquals("foo", list.at(1).at(0).str());
    assertEquals("bar", list.at(1).at(1).str());
    assertEquals("baz", list.at(1).at(2).str());
  }
 
  public void testAddAll() {
    Json json = Json.list(1, 2, 3);
    json.addAll(Json.list(4, 5, 6));
   
    assertEquals(6, json.size());
  }
 
  public void testAddAt() {
    Json json = Json.list(1, 3);
    json.addAt(1, 2);
   
    assertEquals(3, json.size());
    assertEquals(1, json.at(0).asInt());
    assertEquals(2, json.at(1).asInt());
    assertEquals(3, json.at(2).asInt());
  }
 
  public void testRemoveAt() {
    Json json = Json.list(1, 2, 3);
    json.removeAt(1);

    assertEquals(2, json.size());
    assertEquals(1, json.at(0).asInt());
    assertEquals(3, json.at(1).asInt());
  }
 
  public void testIndexOf() {
    Json json = Json.list(1, 2, 3, "hello", true, false, null);

    assertEquals(0, json.indexOf(1));
    assertEquals(1, json.indexOf(2));
    assertEquals(2, json.indexOf(3));
    assertEquals(3, json.indexOf("hello"));
    assertEquals(4, json.indexOf(true));
    assertEquals(5, json.indexOf(false));
    assertEquals(6, json.indexOf(null));
  }
 
  public void testRemoveKey() {
    Json json = Json.map().put("foo", "bar");
    json.remove("foo");
    assertTrue(json.isEmpty());
  }
 
  public void testSortedMap() {
    Json json = Json.sortedMap().put("1", 1).put("400", 400).put("3", 3).put("2", 2);
   
    Iterator<String> keys = json.keys().iterator();
    assertEquals("1", keys.next());
    assertEquals("2", keys.next());
    assertEquals("3", keys.next());
    assertEquals("400", keys.next());
  }
 
  public void testSortedMap2() {
    Json json = Json.sortedMap().put("2009-01", 1).put("2008-10", 400);
    Iterator<String> keys = json.keys().iterator();
    assertEquals("2008-10", keys.next());
    assertEquals("2009-01", keys.next());
  }
 
  public void testContains() {
    Json json = Json.list(1, 2, 3);
    assertTrue(json.contains(1));
    assertTrue(json.contains(2));
    assertTrue(json.contains(3));
    assertFalse(json.contains(4));
  }
 
  public void testFormatAndParseNumbers() {
    Json json = Json.loads("[1.0, 2.0, 3, 4, 5, 6.1, 1.0e12, 2e12]");
    String s = json.toString();
    assertTrue(s.contains("1.0"));
    assertTrue(s.contains("2.0"));
    assertFalse(s.contains("3.0"));
    assertFalse(s.contains("4.0"));
    assertFalse(s.contains("5.0"));
    assertTrue(s.contains("6.1"));
    assertTrue(s.contains("1.0E12"));
    assertTrue(s.contains("2.0E12"));
  }
 
  public void testRemoveAll() {
    Json list = Json.list(1, 2, 3);
    list.removeAll(Json.list(1, 2));
    assertEquals(1, list.size());
    assertEquals(3, list.at(0).asInt());
   
    Json map = Json.map().put("foo", 1).put("bar", 2);
    map.removeAll(Json.map().put("foo", 1));
    assertEquals(1, map.size());
    assertEquals(2, map.get("bar").asInt());
  }
 
  public void testSumIntegers() {
    Json map1 = Json.map().put("a", 1);
    Json map2 = Json.map().put("a", 2).put("b", 5);
   
    map1.sumIntegers(map2);

    assertEquals(3, map1.get("a").asInt());
    assertEquals(5, map1.get("b").asInt());
  }
 
  public void testSumDoubles() {
    Json map1 = Json.map().put("a", 1.5);
    Json map2 = Json.map().put("a", 2.5).put("b", 5);
   
    map1.sumReals(map2);

    assertEquals(4, map1.get("a").asInt());
    assertEquals(5, map1.get("b").asInt());
  }
 
  public void sumInteger() {
    Json map1 = Json.map().put("a", 1);
    map1.sumInteger("a", 2);
    assertEquals(3, map1.get("a").asInt());
   
    map1 = Json.map();
    map1.sumInteger("a", 2);
    assertEquals(2, map1.get("a").asInt());
  }
 
  public void sumReal() {
    Json map1 = Json.map().put("a", 1.5);
    map1.sumReal("a", 2.5);
    assertEquals(4, map1.get("a").asInt());
   
    map1 = Json.map();
    map1.sumReal("a", 2.5);
    assertEquals(2.5, map1.get("a").asInt());
  }
 
  public void testPutDefault() {
    Json map = Json.map();
    map.putDefault("a", 2);
    assertEquals(2, map.get("a").asInt());
    map.putDefault("a", 3);
    assertEquals(2, map.get("a").asInt());
  }
 
  public void testEqualsTo() {
    Json a = map();
    Json b = map();
    assertTrue(a.equalsTo(b));

    a = list();
    b = list();
    assertTrue(a.equalsTo(b));

    a = list("foo", "bar");
    b = list("foo", "bar");
    assertTrue(a.equalsTo(b));
   
    a = map().put("foo", "bar");
    b = map().put("foo", "bar");
    assertTrue(a.equalsTo(b));
   
    a = map().put("foo", list("bar"));
    b = map().put("foo", list("bar"));
    assertTrue(a.equalsTo(b));
   
    a = map();
    b = sortedMap();
    assertTrue(a.equalsTo(b));
   
    a = new Json(true);
    b = new Json(true);
    assertTrue(a.equalsTo(b));
   
    a = new Json(1);
    b = new Json(1l);
    assertTrue(a.equalsTo(b));
   
    a = new Json(1.0);
    b = new Json(1l);
    assertTrue(a.equalsTo(b));
   
    a = new Json(null);
    b = new Json(null);
    assertTrue(a.equalsTo(b));

    a = map();
    b = list();
    assertFalse(a.equalsTo(b));

    a = list();
    b = map();
    assertFalse(a.equalsTo(b));
   
    a = list(1, 2, 3, 4);
    b = list(1, 2, 3);
    assertFalse(a.equalsTo(b));
   
    a = map().put("foo", 1);
    b = map().put("bar", 1);
    assertFalse(a.equalsTo(b));
   
    a = new Json(1);
    b = new Json(null);
    assertFalse(a.equalsTo(b));
   
    a = list(1, 3);
    b = list(1, 2);
    assertFalse(a.equalsTo(b));

    a = map();
    b = map().put("1", 2);
    assertFalse(a.equalsTo(b));
   
    a = map();
    b = a;
    assertTrue(a.equalsTo(b));
  }
 
  public void testFind() {
    Json data = map().put("foo", list(1, 2, list(1, 2, map().put("bar", 1))));
    Json result = data.find("foo", 2, 2, "bar");
    assertNotNull(result);
    assertEquals(1, result.asInt());
   
    // try to call at() in a map
    result = data.find(1);
    assertNull(result);
   
    // try to call get() in a list
    result = data.find("foo", "bar");
    assertNull(result);
   
    // key not found in map
    result = data.find("bar", "baz");
    assertNull(result);
   
    // out of bounds
    result = data.find("foo", 3);
    assertNull(result);
  }
 
  public void testEnumerations() {
    Json data = list(Gender.MALE);
    assertEquals("[\"MALE\"]", data.toString());
    assertEquals(Gender.MALE.name(), data.at(0).str());
  }
 
  public enum Gender { MALE, FEMALE };

}
TOP

Related Classes of siena.json.test.JsonTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.