1 9 10 package test.dom4j; 11 12 import junit.framework.Test; 13 import junit.framework.TestSuite; 14 import junit.textui.TestRunner; 15 import org.dom4j.Document; 16 import org.dom4j.Element; 17 18 import java.util.Iterator ; 19 import java.util.List ; 20 21 22 27 public class TestIterator extends AbstractTestCase { 28 29 protected Document iterDocument; 30 private static final int NUMELE = 10; 31 32 public static void main( String [] args ) { 33 TestRunner.run( suite() ); 34 } 35 36 public static Test suite() { 37 return new TestSuite( TestIterator.class ); 38 } 39 40 public TestIterator(String name) { 41 super(name); 42 } 43 44 protected void setUp() throws Exception { 45 iterDocument = createDocument(); 46 47 Element root = iterDocument.addElement( "root" ); 48 49 for (int i = 0; i < NUMELE; i++) { 50 root.addElement( "iterator test") 51 .addAttribute( "instance", Integer.toString(i)); 52 } 53 } 54 55 58 public void testElementCount() throws Exception { 59 Element root = iterDocument.getRootElement(); 60 assertTrue( "Has root element", root != null ); 61 62 List elements = root.elements( "iterator test" ); 63 int elementSize = elements.size(); 64 assertTrue( "Root has " + elementSize + " children", 65 elements != null && elementSize == NUMELE ); 66 67 } 68 69 public void testPlainIteration() throws Exception { 70 Element root = iterDocument.getRootElement(); 71 List elements = root.elements( "iterator test" ); 72 Iterator iter = root.elementIterator( "iterator test" ); 73 int elementSize = elements.size(); 74 75 int count = 0; 76 for (; iter.hasNext();) { 77 Element e = (Element) iter.next(); 78 assertTrue("instance " + e.attribute("instance").getValue() + 79 " equals "+ count, 80 e.attribute("instance").getValue().equals( 81 Integer.toString(count))); 82 count++; 83 } 84 85 assertTrue( elementSize + " elements iterated", count == elementSize ); 86 } 87 88 public void testSkipAlternates() throws Exception { 89 Element root = iterDocument.getRootElement(); 90 List elements = root.elements( "iterator test" ); 91 Iterator iter = root.elementIterator( "iterator test" ); 92 int elementSize = elements.size(); 93 int count = 0; 94 for (; iter.hasNext();) { 95 Element e = (Element) iter.next(); 96 assertTrue("instance " + e.attribute("instance").getValue() + 97 " equals "+ count*2, 98 e.attribute("instance").getValue().equals( 99 Integer.toString(count*2))); 100 iter.next(); 101 count++; 102 } 103 assertTrue( (elementSize/2) + " alternate elements iterated", 104 count == (elementSize/2) ); 105 } 106 107 public void testNoHasNext() throws Exception { 108 Element root = iterDocument.getRootElement(); 109 List elements = root.elements( "iterator test" ); 110 Iterator iter = root.elementIterator( "iterator test" ); 111 int elementSize = elements.size(); 112 int count = 0; 113 Element e = null; 114 for (; count < elementSize; ) { 115 e = (Element) iter.next(); 116 assertTrue("instance " + e.attribute("instance").getValue() + 117 " equals "+ count, 118 e.attribute("instance").getValue().equals( 119 Integer.toString(count))); 120 System.out.println("instance " + 121 e.attribute("instance").getValue() + 122 " equals "+ count); 123 count++; 124 } 125 try { 126 e = (Element) iter.next(); 127 if (e != null) { 128 assertTrue( "no more elements,value instead is " + 130 e.attribute("instance").getValue(), e == null); 131 } 132 } 133 catch (Exception exp) { 134 assertTrue( "Real iterators throw NoSuchElementException", 135 exp instanceof java.util.NoSuchElementException ); 136 } 137 } 138 139 public void testExtraHasNexts() throws Exception { 140 Element root = iterDocument.getRootElement(); 141 List elements = root.elements( "iterator test" ); 142 Iterator iter = root.elementIterator( "iterator test" ); 143 int elementSize = elements.size(); 144 int count = 0; 145 for (; iter.hasNext();) { 146 Element e = (Element) iter.next(); 147 assertTrue("instance " + e.attribute("instance").getValue() + 148 " equals "+ count, 149 e.attribute("instance").getValue().equals( 150 Integer.toString(count))); 151 iter.hasNext(); 152 count++; 153 } 154 assertTrue( elementSize + " elements iterated with extra hasNexts", 155 count == elementSize ); 156 } 157 } 158 159 160 161 162 206 | Popular Tags |