1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections4.iterators;
18
19 import static org.easymock.EasyMock.createMock;
20 import static org.easymock.EasyMock.expect;
21 import static org.easymock.EasyMock.replay;
22 import static org.junit.jupiter.api.Assertions.assertThrows;
23
24 import java.util.Iterator;
25
26 import org.junit.jupiter.api.BeforeEach;
27 import org.junit.jupiter.api.Test;
28 import org.w3c.dom.Element;
29 import org.w3c.dom.Node;
30 import org.w3c.dom.NodeList;
31 import org.w3c.dom.Text;
32
33
34
35
36 public class NodeListIteratorTest extends AbstractIteratorTest<Node> {
37
38
39 private Node[] nodes;
40
41
42
43 private boolean createIteratorWithStandardConstr = true;
44
45
46
47
48 public NodeListIteratorTest() {
49 super(NodeListIteratorTest.class.getSimpleName());
50 }
51
52 @Override
53 public Iterator<Node> makeEmptyIterator() {
54 final NodeList emptyNodeList = new NodeList() {
55 @Override
56 public int getLength() {
57 return 0;
58 }
59 @Override
60 public Node item(final int index) {
61 throw new IndexOutOfBoundsException();
62 }
63 };
64
65 if (createIteratorWithStandardConstr) {
66 return new NodeListIterator(emptyNodeList);
67 }
68 final Node parentNode = createMock(Node.class);
69 expect(parentNode.getChildNodes()).andStubReturn(emptyNodeList);
70 replay(parentNode);
71
72 return new NodeListIterator(parentNode);
73 }
74
75 @Override
76 public Iterator<Node> makeObject() {
77 final NodeList nodeList = new NodeList() {
78 @Override
79 public int getLength() {
80 return nodes.length;
81 }
82 @Override
83 public Node item(final int index) {
84 return nodes[index];
85 }
86 };
87
88 return new NodeListIterator(nodeList);
89 }
90
91 @BeforeEach
92 protected void setUp() throws Exception {
93
94
95 createIteratorWithStandardConstr = true;
96
97
98 final Node node1 = createMock(Element.class);
99 final Node node2 = createMock(Element.class);
100 final Node node3 = createMock(Text.class);
101 final Node node4 = createMock(Element.class);
102 nodes = new Node[] {node1, node2, node3, node4};
103
104 replay(node1);
105 replay(node2);
106 replay(node3);
107 replay(node4);
108 }
109
110 @Override
111 public boolean supportsRemove() {
112 return false;
113 }
114
115
116
117
118 @Test
119 public void testEmptyIteratorWithNodeConstructor(){
120 createIteratorWithStandardConstr = false;
121 testEmptyIterator();
122 }
123
124
125
126
127 @Test
128 public void testFullIteratorWithNodeConstructor(){
129 createIteratorWithStandardConstr = false;
130 testFullIterator();
131 }
132
133 @Test
134 public void testNullConstructor() {
135 assertThrows(NullPointerException.class, () -> new NodeListIterator((Node) null));
136 }
137
138 }