1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.core5.http.message;
29
30 import java.util.Iterator;
31 import java.util.NoSuchElementException;
32
33 import org.apache.hc.core5.http.Header;
34 import org.junit.jupiter.api.Assertions;
35 import org.junit.jupiter.api.Test;
36
37
38
39
40
41
42 public class TestBasicTokenIterator {
43
44 @Test
45 public void testSingleHeader() {
46 Header[] headers = new Header[]{
47 new BasicHeader("Name", "token0,token1, token2 , token3")
48 };
49 Iterator<Header> hit = new BasicHeaderIterator(headers, null);
50 Iterator<String> ti = new BasicTokenIterator(hit);
51
52 Assertions.assertTrue(ti.hasNext());
53 Assertions.assertEquals("token0", "token0", ti.next());
54 Assertions.assertTrue(ti.hasNext());
55 Assertions.assertEquals("token1", "token1", ti.next());
56 Assertions.assertTrue(ti.hasNext());
57 Assertions.assertEquals("token2", "token2", ti.next());
58 Assertions.assertTrue(ti.hasNext());
59 Assertions.assertEquals("token3", "token3", ti.next());
60 Assertions.assertFalse(ti.hasNext());
61
62
63 headers = new Header[]{
64 new BasicHeader("Name", "token0")
65 };
66 hit = new BasicHeaderIterator(headers, null);
67 ti = new BasicTokenIterator(hit);
68
69 Assertions.assertTrue(ti.hasNext());
70 Assertions.assertEquals("token0", "token0", ti.next());
71 Assertions.assertFalse(ti.hasNext());
72 }
73
74
75 @Test
76 public void testMultiHeader() {
77 final Header[] headers = new Header[]{
78 new BasicHeader("Name", "token0,token1"),
79 new BasicHeader("Name", ""),
80 new BasicHeader("Name", "token2"),
81 new BasicHeader("Name", " "),
82 new BasicHeader("Name", "token3 "),
83 new BasicHeader("Name", ","),
84 new BasicHeader("Name", "token4"),
85 };
86 final Iterator<Header> hit = new BasicHeaderIterator(headers, null);
87 final Iterator<String> ti = new BasicTokenIterator(hit);
88
89 Assertions.assertTrue(ti.hasNext());
90 Assertions.assertEquals("token0", "token0", ti.next());
91 Assertions.assertTrue(ti.hasNext());
92 Assertions.assertEquals("token1", "token1", ti.next());
93 Assertions.assertTrue(ti.hasNext());
94 Assertions.assertEquals("token2", "token2", ti.next());
95 Assertions.assertTrue(ti.hasNext());
96 Assertions.assertEquals("token3", "token3", ti.next());
97 Assertions.assertTrue(ti.hasNext());
98 Assertions.assertEquals("token4", "token4", ti.next());
99 Assertions.assertFalse(ti.hasNext());
100 }
101
102
103 @Test
104 public void testEmpty() {
105 final Header[] headers = new Header[]{
106 new BasicHeader("Name", " "),
107 new BasicHeader("Name", ""),
108 new BasicHeader("Name", ","),
109 new BasicHeader("Name", " ,, "),
110 };
111 Iterator<Header> hit = new BasicHeaderIterator(headers, null);
112 Iterator<String> ti = new BasicTokenIterator(hit);
113
114 Assertions.assertFalse(ti.hasNext());
115
116
117 hit = new BasicHeaderIterator(headers, "empty");
118 ti = new BasicTokenIterator(hit);
119
120 Assertions.assertFalse(ti.hasNext());
121 }
122
123
124 @Test
125 public void testValueStart() {
126 final Header[] headers = new Header[]{
127 new BasicHeader("Name", "token0"),
128 new BasicHeader("Name", " token1"),
129 new BasicHeader("Name", ",token2"),
130 new BasicHeader("Name", " ,token3"),
131 new BasicHeader("Name", ", token4"),
132 new BasicHeader("Name", " , token5"),
133 };
134 final Iterator<Header> hit = new BasicHeaderIterator(headers, null);
135 final Iterator<String> ti = new BasicTokenIterator(hit);
136
137 Assertions.assertTrue(ti.hasNext());
138 Assertions.assertEquals("token0", "token0", ti.next());
139 Assertions.assertTrue(ti.hasNext());
140 Assertions.assertEquals("token1", "token1", ti.next());
141 Assertions.assertTrue(ti.hasNext());
142 Assertions.assertEquals("token2", "token2", ti.next());
143 Assertions.assertTrue(ti.hasNext());
144 Assertions.assertEquals("token3", "token3", ti.next());
145 Assertions.assertTrue(ti.hasNext());
146 Assertions.assertEquals("token4", "token4", ti.next());
147 Assertions.assertTrue(ti.hasNext());
148 Assertions.assertEquals("token5", "token5", ti.next());
149 Assertions.assertFalse(ti.hasNext());
150 }
151
152
153 @Test
154 public void testValueEnd() {
155 final Header[] headers = new Header[]{
156 new BasicHeader("Name", "token0"),
157 new BasicHeader("Name", "token1 "),
158 new BasicHeader("Name", "token2,"),
159 new BasicHeader("Name", "token3 ,"),
160 new BasicHeader("Name", "token4, "),
161 new BasicHeader("Name", "token5 , "),
162 };
163 final Iterator<Header> hit = new BasicHeaderIterator(headers, null);
164 final Iterator<String> ti = new BasicTokenIterator(hit);
165
166 Assertions.assertTrue(ti.hasNext());
167 Assertions.assertEquals("token0", "token0", ti.next());
168 Assertions.assertTrue(ti.hasNext());
169 Assertions.assertEquals("token1", "token1", ti.next());
170 Assertions.assertTrue(ti.hasNext());
171 Assertions.assertEquals("token2", "token2", ti.next());
172 Assertions.assertTrue(ti.hasNext());
173 Assertions.assertEquals("token3", "token3", ti.next());
174 Assertions.assertTrue(ti.hasNext());
175 Assertions.assertEquals("token4", "token4", ti.next());
176 Assertions.assertTrue(ti.hasNext());
177 Assertions.assertEquals("token5", "token5", ti.next());
178 Assertions.assertFalse(ti.hasNext());
179 }
180
181 @Test
182 public void testWrongPublic() {
183 Assertions.assertThrows(NullPointerException.class, () -> new BasicTokenIterator(null));
184
185 final Header[] headers = new Header[]{
186 new BasicHeader("Name", " "),
187 new BasicHeader("Name", ""),
188 new BasicHeader("Name", ","),
189 new BasicHeader("Name", " ,, "),
190 };
191 final Iterator<Header> hit = new BasicHeaderIterator(headers, null);
192 final Iterator<String> ti = new BasicTokenIterator(hit);
193
194 Assertions.assertThrows(NoSuchElementException.class, () -> ti.next());
195 Assertions.assertThrows(UnsupportedOperationException.class, () -> ti.remove());
196 }
197
198 }