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
114 try {
115 cornFields = new HttpHeader(",EmptyFirst");
116 assertTrue(false);
117 }
118 catch (HttpHeader.HttpHeaderException e) {
119 e = null;
120 }
121
122 try {
123 cornFields = new HttpHeader("First . Second");
124 taqvi = cornFields.tokenAndQValueIterator();
125 taqvi.nextTokenAndQValue();
126 assertTrue(false);
127 }
128 catch (HttpHeader.HttpHeaderException e) {
129 e = null;
130 }
131
132 try {
133 cornFields = new HttpHeader("=");
134 taqvi = cornFields.tokenAndQValueIterator();
135 taqvi.nextTokenAndQValue();
136 assertTrue(false);
137 }
138 catch (HttpHeader.HttpHeaderException e) {
139 e = null;
140 }
141
142 try {
143 cornFields = new HttpHeader("hello; = 0.1");
144 taqvi = cornFields.tokenAndQValueIterator();
145 taqvi.nextTokenAndQValue();
146 assertTrue(false);
147 }
148 catch (HttpHeader.HttpHeaderException e) {
149 e = null;
150 }
151
152 try {
153 cornFields = new HttpHeader("hello; r = 0.1");
154 taqvi = cornFields.tokenAndQValueIterator();
155 taqvi.nextTokenAndQValue();
156 assertTrue(false);
157 }
158 catch (HttpHeader.HttpHeaderException e) {
159 e = null;
160 }
161
162 try {
163 cornFields = new HttpHeader("hello hello");
164 taqvi = cornFields.tokenAndQValueIterator();
165 taqvi.nextTokenAndQValue();
166 assertTrue(false);
167 }
168 catch (HttpHeader.HttpHeaderException e) {
169 e = null;
170 }
171
172 try {
173 cornFields = new HttpHeader("hello; q = p");
174 taqvi = cornFields.tokenAndQValueIterator();
175 taqvi.nextTokenAndQValue();
176 assertTrue(false);
177 }
178 catch (HttpHeader.HttpHeaderException e) {
179 e = null;
180 }
181
182 try {
183 cornFields = new HttpHeader("hello; q - 0.0");
184 taqvi = cornFields.tokenAndQValueIterator();
185 taqvi.nextTokenAndQValue();
186 assertTrue(false);
187 }
188 catch (HttpHeader.HttpHeaderException e) {
189 e = null;
190 }
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209 }
210
211 }
212