blob: fb6f19a41aa07649865e2eb04c17c7c273ef784f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2013 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation
*
******************************************************************************/
package org.eclipse.persistence.tools.utility.tests;
import java.io.StringReader;
import junit.framework.TestCase;
import org.eclipse.persistence.tools.utility.XMLTools;
import org.eclipse.persistence.tools.utility.iterable.IterableTools;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
@SuppressWarnings("nls")
public class XMLToolsReadTests
extends TestCase
{
private Document testDocument;
private Node rootNode;
public XMLToolsReadTests(String name) {
super(name);
}
@Override
protected void setUp() throws Exception {
super.setUp();
this.testDocument = this.buildTestDocument();
this.rootNode = XMLTools.getChild(this.testDocument, "root-element");
}
private Document buildTestDocument() {
return XMLTools.parse(new StringReader(this.buildTestDocumentString()));
}
private String buildTestDocumentString() {
StringBuffer sb = new StringBuffer(2000);
sb.append("<?xml version = '1.0' encoding = 'UTF-8'?>");
sb.append("<root-element>");
sb.append( "<element-0>");
sb.append( "<element-0-text-1>some text</element-0-text-1>");
sb.append( "<element-0-text-2></element-0-text-2>");
sb.append( "<element-0-text-3/>");
sb.append( "<element-0-non-text>");
sb.append( "<element-0-non-text-child>");
sb.append( "</element-0-non-text-child>");
sb.append( "</element-0-non-text>");
sb.append( "</element-0>");
sb.append( "<element-1>");
sb.append( "<element-1-int>42</element-1-int>");
sb.append( "<element-1-boolean-true-1>true</element-1-boolean-true-1>");
sb.append( "<element-1-boolean-true-2>T</element-1-boolean-true-2>");
sb.append( "<element-1-boolean-true-3>1</element-1-boolean-true-3>");
sb.append( "<element-1-boolean-false-1>false</element-1-boolean-false-1>");
sb.append( "<element-1-boolean-false-2>F</element-1-boolean-false-2>");
sb.append( "<element-1-boolean-false-3>0</element-1-boolean-false-3>");
sb.append( "</element-1>");
sb.append( "<element-2>");
sb.append( "<element-2.0>");
sb.append( "</element-2.0>");
sb.append( "<element-2.0>");
sb.append( "</element-2.0>");
sb.append( "<element-2.0>");
sb.append( "</element-2.0>");
sb.append( "</element-2>");
sb.append( "<element-3>element 3 contents</element-3>");
sb.append("</root-element>");
return sb.toString();
}
@Override
protected void tearDown() throws Exception {
TestTools.clear(this);
super.tearDown();
}
public void testGetChild() {
assertEquals("element-1", XMLTools.getChild(this.rootNode, "element-1").getNodeName());
assertEquals("element-3", XMLTools.getChild(this.rootNode, "element-3").getNodeName());
assertEquals(null, XMLTools.getChild(this.rootNode, "element-1x"));
}
public void testGetChildren() {
Iterable<Node> children = XMLTools.getChildren(this.rootNode);
assertEquals(4, IterableTools.size(children));
for (int i = 1; i < 4; i++) {
assertEquals("element-" + i, IterableTools.get(children, i).getNodeName());
}
}
public void testGetChildrenNamed() {
Node element2Node = XMLTools.getChild(this.rootNode, "element-2");
Iterable<Node> children = XMLTools.getChildren(element2Node, "element-2.0");
assertEquals(3, IterableTools.size(children));
for (int i = 0; i < 3; i++) {
assertEquals("element-2.0", IterableTools.get(children, i).getNodeName());
}
}
public void testGetTextContent() {
Node node = XMLTools.getChild(this.rootNode, "element-0");
Node childNode = XMLTools.getChild(node, "element-0-text-1");
assertEquals("some text", XMLTools.getTextContent(childNode));
childNode = XMLTools.getChild(node, "element-0-text-2");
assertEquals("", XMLTools.getTextContent(childNode));
childNode = XMLTools.getChild(node, "element-0-text-3");
assertEquals("", XMLTools.getTextContent(childNode));
childNode = XMLTools.getChild(node, "element-0-non-text");
boolean exCaught = false;
try {
String text = XMLTools.getTextContent(childNode);
text = text.toString();
} catch (IllegalArgumentException ex) {
exCaught = true;
}
assertTrue(exCaught);
}
public void testGetChildTextContent() {
assertEquals("element 3 contents", XMLTools.getChildTextContent(this.rootNode, "element-3"));
}
public void testGetChildTextContentDefaultValue() {
assertEquals("element 3 contents", XMLTools.getChildTextContent(this.rootNode, "element-3", "default value 3"));
assertEquals("default value 4", XMLTools.getChildTextContent(this.rootNode, "element-4", "default value 4"));
}
public void testGetChildIntContent() {
Node node = XMLTools.getChild(this.rootNode, "element-1");
assertEquals(42, XMLTools.getChildIntContent(node, "element-1-int"));
}
public void testGetChildIntContentDefaultValue() {
Node node = XMLTools.getChild(this.rootNode, "element-1");
assertEquals(42, XMLTools.childIntContent(node, "element-1-int", 99));
assertEquals(99, XMLTools.childIntContent(node, "element-1-int-x", 99));
}
public void testGetChildBooleanContent() {
Node node = XMLTools.getChild(this.rootNode, "element-1");
assertTrue(XMLTools.getChildBooleanContent(node, "element-1-boolean-true-1"));
assertTrue(XMLTools.getChildBooleanContent(node, "element-1-boolean-true-2"));
assertTrue(XMLTools.getChildBooleanContent(node, "element-1-boolean-true-3"));
assertFalse(XMLTools.getChildBooleanContent(node, "element-1-boolean-false-1"));
assertFalse(XMLTools.getChildBooleanContent(node, "element-1-boolean-false-2"));
assertFalse(XMLTools.getChildBooleanContent(node, "element-1-boolean-false-3"));
}
public void testGetChildBooleanContentDefaultValue() {
Node node = XMLTools.getChild(this.rootNode, "element-1");
assertTrue(XMLTools.getChildBooleanContent(node, "element-1-boolean-true-1", false));
assertTrue(XMLTools.getChildBooleanContent(node, "element-1-boolean-true-2", false));
assertTrue(XMLTools.getChildBooleanContent(node, "element-1-boolean-true-3", false));
assertFalse(XMLTools.getChildBooleanContent(node, "element-1-boolean-true-bogus", false));
assertFalse(XMLTools.getChildBooleanContent(node, "element-1-boolean-false-1", true));
assertFalse(XMLTools.getChildBooleanContent(node, "element-1-boolean-false-2", true));
assertFalse(XMLTools.getChildBooleanContent(node, "element-1-boolean-false-3", true));
assertTrue(XMLTools.getChildBooleanContent(node, "element-1-boolean-false-bogus", true));
}
}