/**
* Copyright (C) 2012-2014 Gist Labs, LLC. (http://gistlabs.com)
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package com.gistlabs.mechanize.document.json.node.impl;
import static org.junit.Assert.*;
import java.util.List;
import org.junit.Test;
import com.gistlabs.mechanize.document.json.exceptions.JsonException;
import com.gistlabs.mechanize.document.json.node.JsonNode;
import com.gistlabs.mechanize.document.json.node.impl.ObjectNodeImpl;
public class ArrayElementsTest extends TestElementBaseClass {
@Test
public void testArrayObjects() {
ObjectNodeImpl element = new ObjectNodeImpl(parseJson("{ \"one\" : 2, \"results\" : [ { \"a\" : 1 }, { \"b\" : 2 } ] }"));
List<JsonNode> array = element.getChildren("results");
assertNotNull(array);
assertEquals("results", array.get(0).getName());
assertEquals(element, array.get(0).getParent());
assertEquals("1", array.get(0).getAttribute("a"));
assertEquals("2", array.get(1).getAttribute("b"));
}
@Test
public void testArrayPrimitives() {
ObjectNodeImpl element = new ObjectNodeImpl(parseJson("{ \"results\" : [ 1,2] }"));
List<JsonNode> array = element.getChildren("results");
assertNotNull(array);
assertEquals(2, array.size());
assertEquals("results", array.get(0).getName());
assertEquals("1", array.get(0).getValue());
array.get(0).setValue("4");
assertEquals("results", array.get(0).getName());
assertEquals("4", array.get(0).getValue());
}
@Test
public void testNestedArrays() {
ObjectNodeImpl element = new ObjectNodeImpl(parseJson("{ \"results\" : [ [1,2], [3,4] ] }"));
List<JsonNode> array = element.getChildren("results");
assertNotNull(array);
assertEquals(2, array.size());
assertEquals("results", array.get(0).getName());
}
@Test(expected=JsonException.class)
public void testChildFails() {
ObjectNodeImpl element = new ObjectNodeImpl(parseJson("{ \"one\" : 2, \"results\" : [ { \"a\" : 1 }, { \"b\" : 2 } ] }"));
element.getChild("results");
}
@Test
public void testGetChildrenStar() {
ObjectNodeImpl element = new ObjectNodeImpl(parseJson("{ \"one\" : [2,3], \"results\" : [ { \"a\" : 1 }, { \"b\" : 2 }, ] }"));
assertEquals(2, element.getChildren("results").size());
assertEquals(4, element.getChildren("*").size());
}
}