1 7 8 package org.dom4j; 9 10 import junit.textui.TestRunner; 11 12 import java.util.Iterator ; 13 import java.util.List ; 14 15 21 public class ContentTest extends AbstractTestCase { 22 protected DocumentFactory factory = new DocumentFactory(); 23 24 public static void main(String [] args) { 25 TestRunner.run(ContentTest.class); 26 } 27 28 public void testRoot() throws Exception { 31 Element root = document.getRootElement(); 32 assertTrue("Has root element", root != null); 33 34 List authors = root.elements("author"); 35 assertTrue("Root has children", (authors != null) 36 && (authors.size() == 2)); 37 38 Element author1 = (Element) authors.get(0); 39 Element author2 = (Element) authors.get(1); 40 41 assertTrue("Author1 is James", author1.attributeValue("name").equals( 42 "James")); 43 assertTrue("Author2 is Bob", author2.attributeValue("name").equals( 44 "Bob")); 45 46 testGetAttributes(author1); 47 testGetAttributes(author2); 48 } 49 50 public void testContent() throws Exception { 51 Element root = document.getRootElement(); 52 assertTrue("Has root element", root != null); 53 54 List content = root.content(); 55 assertTrue("Root has content", (content != null) 56 && (content.size() >= 2)); 57 58 boolean iterated = false; 59 60 for (Iterator iter = content.iterator(); iter.hasNext();) { 61 Object object = iter.next(); 62 assertTrue("Content object is a node", object instanceof Node); 63 iterated = true; 64 } 65 66 assertTrue("Iteration completed", iterated); 67 } 68 69 public void testGetNode() throws Exception { 70 Element root = document.getRootElement(); 71 assertTrue("Has root element", root != null); 72 73 int count = root.nodeCount(); 74 assertTrue("Root has correct node count", count == 2); 75 76 boolean iterated = false; 77 78 for (int i = 0; i < count; i++) { 79 Node node = root.node(i); 80 assertTrue("Valid node returned from node()", node != null); 81 iterated = true; 82 } 83 84 assertTrue("Iteration completed", iterated); 85 } 86 87 public void testGetXPathNode() throws Exception { 88 Element root = document.getRootElement(); 89 assertTrue("Has root element", root != null); 90 91 int count = root.nodeCount(); 92 assertTrue("Root has correct node count", count == 2); 93 94 boolean iterated = false; 95 96 for (int i = 0; i < count; i++) { 97 Node node = root.getXPathResult(i); 98 assertTrue("Valid node returned from node()", node != null); 99 assertTrue("Node supports the parent relationship", node 100 .supportsParent()); 101 iterated = true; 102 } 103 104 assertTrue("Iteration completed", iterated); 105 } 106 107 public void testOrderOfPI() throws Exception { 108 Document document = factory.createDocument(); 109 document.addProcessingInstruction("xml-stylesheet", 110 "type=\"text/xsl\" HREF=\"...\""); 111 document.addElement("root"); 112 113 List list = document.content(); 114 115 assertNotNull(list); 116 assertEquals(2, list.size()); 117 118 Object pi = list.get(0); 119 Object root = list.get(1); 120 121 assertTrue("First element is not a PI", 122 pi instanceof ProcessingInstruction); 123 assertTrue("Second element is an element", root instanceof Element); 124 125 String xml = "<?xml version=\"1.0\" ?>\n" 126 + "<?xml-stylesheet type=\"text/xsl\" HREF=\"foo\" ?>\n" 127 + "<root/>"; 128 document = DocumentHelper.parseText(xml); 129 130 list = document.content(); 131 132 assertNotNull(list); 133 assertEquals(2, list.size()); 134 pi = list.get(0); 135 root = list.get(1); 136 137 assertTrue("First element is not a PI", 138 pi instanceof ProcessingInstruction); 139 assertTrue("Second element is an element", root instanceof Element); 140 } 141 142 public void testAddingInTheMiddle() throws Exception { 143 Document doc = factory.createDocument(); 144 Element root = doc.addElement("html"); 145 Element header = root.addElement("header"); 146 Element footer = root.addElement("footer"); 147 148 List list = root.content(); 150 Element foo = factory.createElement("foo"); 151 list.add(1, foo); 152 153 assertTrue(list.size() == 3); 155 assertTrue(list.get(0) == header); 156 assertTrue(list.get(1) == foo); 157 assertTrue(list.get(2) == footer); 158 } 159 160 public void testAddAtIndex() throws Exception { 161 Document doc = factory.createDocument(); 162 Element root = doc.addElement("html"); 163 Element header = root.addElement("header"); 164 Element body = root.addElement("body"); 165 166 Element foo = factory.createElement("foo"); 167 Element bar = factory.createElement("bar"); 168 169 List content = header.content(); 170 content.add(0, foo); 171 content.add(0, bar); 172 173 assertEquals("foo", header.node(1).getName()); 174 assertEquals("bar", header.node(0).getName()); 175 176 foo = factory.createElement("foo"); 177 bar = factory.createElement("bar"); 178 179 content = body.content(); 180 content.add(0, foo); 181 content.add(1, bar); 182 183 assertEquals("foo", body.node(0).getName()); 184 assertEquals("bar", body.node(1).getName()); 185 } 186 187 public void testAddAtIndex2() throws Exception { 188 Document doc = factory.createDocument(); 189 Element parent = doc.addElement("parent"); 190 Element child = parent.addElement("child"); 191 Element anotherChild = factory.createElement("child2"); 192 193 List elements = parent.elements(); 194 int index = elements.indexOf(child); 195 196 assertEquals(0, index); 197 198 elements.add(1, anotherChild); 199 elements = parent.elements(); 200 assertEquals(child, elements.get(0)); 201 assertEquals(anotherChild, elements.get(1)); 202 } 203 204 protected void testGetAttributes(Element author) throws Exception { 207 String definedName = "name"; 208 String undefinedName = "undefined-attribute-name"; 209 String defaultValue = "** Default Value **"; 210 211 String value = author.attributeValue(definedName, defaultValue); 212 assertTrue("Defined value doesn't return specified default value", 213 value != defaultValue); 214 215 value = author.attributeValue(undefinedName, defaultValue); 216 assertTrue("Undefined value returns specified default value", 217 value == defaultValue); 218 } 219 } 220 221 257
| Popular Tags
|