@Test
public void testGetChildren() {
final Element root = new Element(NAME);
assertEquals(null, root.getLastChild());
final Element child1 = root.addElement(NAME1);
final Element child2 = root.addElement(NAME2);
final Element child3 = root.addElement(NAME1);
child3.addAttribute(NAME, VALUE);
final Comment child4 = root.addComment("Hello");
assertEquals(4, root.getChildrenCount());
assertTrue(root.hasChildren(Element.class));
assertTrue(root.hasChildren(Comment.class));
assertFalse(root.hasChildren(Text.class));
assertEquals(child4, root.getLastChild());
assertEquals(child1, root.getChild(Element.class));
assertEquals(child1, root.getElementNamed(NAME1));
assertEquals(3, root.getChildrenCount(Element.class));
assertEquals(2, root.getChildrenCount(Element.class, Element.named(NAME1)));
assertEquals(child2, root.getChild(Element.class, Element.named(NAME2)));
assertEquals(child2, root.getChildAt(Element.class, Element.named(NAME2), 0));
assertEquals(null, root.getChildAt(Element.class, Element.named(NAME2), 1));
assertEquals(child3, root.getChildAt(2));
assertEquals(child3, root.getChildAt(Element.class, 2));
assertEquals(child4, root.getChildAt(Comment.class, 0));
assertEquals(3, Iterables.size(root.getElements()));
assertEquals(1, Iterables.size(root.getComments()));
assertEquals(0, Iterables.size(root.getTexts()));
assertEquals(child3, root.getElementNamedWithAttribute(NAME1, NAME, VALUE));
}