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 IteratorTest extends AbstractTestCase { 22 private static final int NUMELE = 10; 23 24 protected Document iterDocument; 25 26 public static void main(String [] args) { 27 TestRunner.run(IteratorTest.class); 28 } 29 30 protected void setUp() throws Exception { 31 super.setUp(); 32 iterDocument = DocumentHelper.createDocument(); 33 34 Element root = iterDocument.addElement("root"); 35 36 for (int i = 0; i < NUMELE; i++) { 37 root.addElement("iterator test").addAttribute("instance", 38 Integer.toString(i)); 39 } 40 } 41 42 public void testElementCount() throws Exception { 45 Element root = iterDocument.getRootElement(); 46 assertTrue("Has root element", root != null); 47 48 List elements = root.elements("iterator test"); 49 int elementSize = elements.size(); 50 assertTrue("Root has " + elementSize + " children", (elements != null) 51 && (elementSize == NUMELE)); 52 } 53 54 public void testPlainIteration() throws Exception { 55 Element root = iterDocument.getRootElement(); 56 List elements = root.elements("iterator test"); 57 Iterator iter = root.elementIterator("iterator test"); 58 int elementSize = elements.size(); 59 60 int count = 0; 61 62 for (; iter.hasNext();) { 63 Element e = (Element) iter.next(); 64 assertEquals("instance " + e.attribute("instance").getValue() 65 + " equals " + count, e.attribute("instance").getValue(), 66 Integer.toString(count)); 67 count++; 68 } 69 70 assertTrue(elementSize + " elements iterated", count == elementSize); 71 } 72 73 public void testSkipAlternates() throws Exception { 74 Element root = iterDocument.getRootElement(); 75 List elements = root.elements("iterator test"); 76 Iterator iter = root.elementIterator("iterator test"); 77 int elementSize = elements.size(); 78 int count = 0; 79 80 for (; iter.hasNext();) { 81 Element e = (Element) iter.next(); 82 assertEquals("instance " + e.attribute("instance").getValue() 83 + " equals " + (count * 2), e.attribute("instance") 84 .getValue(), Integer.toString(count * 2)); 85 iter.next(); 86 count++; 87 } 88 89 assertTrue((elementSize / 2) + " alternate elements iterated", 90 count == (elementSize / 2)); 91 } 92 93 public void testNoHasNext() throws Exception { 94 Element root = iterDocument.getRootElement(); 95 List elements = root.elements("iterator test"); 96 Iterator iter = root.elementIterator("iterator test"); 97 int elementSize = elements.size(); 98 int count = 0; 99 Element e = null; 100 101 for (; count < elementSize;) { 102 e = (Element) iter.next(); 103 assertEquals("instance " + e.attribute("instance").getValue() 104 + " equals " + count, e.attribute("instance").getValue(), 105 Integer.toString(count)); 106 System.out.println("instance " + e.attribute("instance").getValue() 107 + " equals " + count); 108 count++; 109 } 110 111 try { 112 e = (Element) iter.next(); 113 114 if (e != null) { 115 assertTrue("no more elements,value instead is " 117 + e.attribute("instance").getValue(), e == null); 118 } 119 } catch (Exception exp) { 120 assertTrue("Real iterators throw NoSuchElementException", 121 exp instanceof java.util.NoSuchElementException ); 122 } 123 } 124 125 public void testExtraHasNexts() throws Exception { 126 Element root = iterDocument.getRootElement(); 127 List elements = root.elements("iterator test"); 128 Iterator iter = root.elementIterator("iterator test"); 129 int elementSize = elements.size(); 130 int count = 0; 131 132 for (; iter.hasNext();) { 133 Element e = (Element) iter.next(); 134 assertEquals("instance " + e.attribute("instance").getValue() 135 + " equals " + count, e.attribute("instance").getValue(), 136 Integer.toString(count)); 137 iter.hasNext(); 138 count++; 139 } 140 141 assertTrue(elementSize + " elements iterated with extra hasNexts", 142 count == elementSize); 143 } 144 } 145 146 182
| Popular Tags
|