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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 package org.melati.util.test;
50
51 import junit.framework.TestCase;
52
53 import org.melati.util.HttpHeader;
54
55
56
57
58
59
60
61
62 public class HttpHeaderTest extends TestCase {
63
64
65
66
67 public HttpHeaderTest(String testCaseName) {
68 super(testCaseName);
69 }
70
71
72
73
74 public void testCommaSeparated() throws Exception {
75 String fields = "\"malted barley\"; q=0.5, ,wheat ,,\t oats, maize";
76
77 HttpHeader cornFields = new HttpHeader(fields);
78
79 HttpHeader.TokenAndQValueIterator taqvi = cornFields.tokenAndQValueIterator();
80 HttpHeader.TokenAndQValue taqv;
81
82 assertTrue(taqvi.hasNext());
83 taqv = taqvi.nextTokenAndQValue();
84 assertEquals("malted barley", taqv.token);
85 assertEquals(0.5f, taqv.q, 0.0001f);
86
87 assertTrue(taqvi.hasNext());
88 taqv = taqvi.nextTokenAndQValue();
89 assertEquals("wheat", taqv.token);
90 assertEquals(1.0f, taqv.q, 0.0001f);
91
92 assertTrue(taqvi.hasNext());
93 taqv = (HttpHeader.TokenAndQValue)taqvi.nextElement();
94 assertEquals("oats", taqv.token);
95 assertEquals(1.0f, taqv.q, 0.0001f);
96 try {
97 taqvi.remove();
98 assertTrue(false);
99 }
100 catch (UnsupportedOperationException e) {
101 e = null;
102 }
103
104 assertTrue(taqvi.hasMoreElements());
105 taqv = taqvi.nextTokenAndQValue();
106 assertEquals("maize", taqv.token);
107 assertEquals(1.0f, taqv.q, 0.0001f);
108
109 assertTrue(! taqvi.hasNext());
110 assertTrue(! taqvi.hasMoreElements());
111 assertTrue(taqvi.next() instanceof HttpHeader.HttpHeaderException);
112
113 try {
114 cornFields = new HttpHeader("");
115 assertTrue(false);
116 }
117 catch (HttpHeader.HttpHeaderException e) {
118 e = null;
119 }
120 catch (AssertionError e) {
121
122
123 e = null;
124 }
125
126 try {
127 cornFields = new HttpHeader(",EmptyFirst");
128 assertTrue(false);
129 }
130 catch (HttpHeader.HttpHeaderException e) {
131 e = null;
132 }
133
134 try {
135 cornFields = new HttpHeader("First . Second");
136 taqvi = cornFields.tokenAndQValueIterator();
137 taqvi.nextTokenAndQValue();
138 assertTrue(false);
139 }
140 catch (HttpHeader.HttpHeaderException e) {
141 e = null;
142 }
143
144 try {
145 cornFields = new HttpHeader("=");
146 taqvi = cornFields.tokenAndQValueIterator();
147 taqvi.nextTokenAndQValue();
148 assertTrue(false);
149 }
150 catch (HttpHeader.HttpHeaderException e) {
151 e = null;
152 }
153
154 try {
155 cornFields = new HttpHeader("hello; = 0.1");
156 taqvi = cornFields.tokenAndQValueIterator();
157 taqvi.nextTokenAndQValue();
158 assertTrue(false);
159 }
160 catch (HttpHeader.HttpHeaderException e) {
161 e = null;
162 }
163
164 try {
165 cornFields = new HttpHeader("hello; r = 0.1");
166 taqvi = cornFields.tokenAndQValueIterator();
167 taqvi.nextTokenAndQValue();
168 assertTrue(false);
169 }
170 catch (HttpHeader.HttpHeaderException e) {
171 e = null;
172 }
173
174 try {
175 cornFields = new HttpHeader("hello hello");
176 taqvi = cornFields.tokenAndQValueIterator();
177 taqvi.nextTokenAndQValue();
178 assertTrue(false);
179 }
180 catch (HttpHeader.HttpHeaderException e) {
181 e = null;
182 }
183
184 try {
185 cornFields = new HttpHeader("hello; q = p");
186 taqvi = cornFields.tokenAndQValueIterator();
187 taqvi.nextTokenAndQValue();
188 assertTrue(false);
189 }
190 catch (HttpHeader.HttpHeaderException e) {
191 e = null;
192 }
193
194 try {
195 cornFields = new HttpHeader("hello; q - 0.0");
196 taqvi = cornFields.tokenAndQValueIterator();
197 taqvi.nextTokenAndQValue();
198 assertTrue(false);
199 }
200 catch (HttpHeader.HttpHeaderException e) {
201 e = null;
202 }
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221 }
222
223 }
224