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.http.message;
29
30 import java.io.ByteArrayInputStream;
31 import java.io.ByteArrayOutputStream;
32 import java.io.ObjectInputStream;
33 import java.io.ObjectOutputStream;
34
35 import org.apache.http.Header;
36 import org.apache.http.HeaderIterator;
37 import org.junit.Assert;
38 import org.junit.Test;
39
40
41
42
43
44 public class TestHeaderGroup {
45
46 @Test
47 public void testConstructor() {
48 final HeaderGroup headergroup = new HeaderGroup();
49 Assert.assertNotNull(headergroup.getAllHeaders());
50 Assert.assertEquals(0, headergroup.getAllHeaders().length);
51 }
52
53 @Test
54 public void testClear() {
55 final HeaderGroup headergroup = new HeaderGroup();
56 headergroup.addHeader(new BasicHeader("name", "value"));
57 Assert.assertEquals(1, headergroup.getAllHeaders().length);
58 headergroup.clear();
59 Assert.assertEquals(0, headergroup.getAllHeaders().length);
60 }
61
62 @Test
63 public void testAddRemoveHeader() {
64 final HeaderGroup headergroup = new HeaderGroup();
65 final Header header = new BasicHeader("name", "value");
66 headergroup.addHeader(header);
67 headergroup.addHeader(null);
68 Assert.assertEquals(1, headergroup.getAllHeaders().length);
69 headergroup.removeHeader(header);
70 headergroup.removeHeader(null);
71 Assert.assertEquals(0, headergroup.getAllHeaders().length);
72 }
73
74 @Test
75 public void testUpdateHeader() {
76 final HeaderGroup headergroup = new HeaderGroup();
77 final Header header1 = new BasicHeader("name1", "value1");
78 final Header header2 = new BasicHeader("name2", "value2");
79 final Header header3 = new BasicHeader("name3", "value3");
80 headergroup.addHeader(header1);
81 headergroup.addHeader(header2);
82 headergroup.addHeader(header3);
83 headergroup.updateHeader(new BasicHeader("name2", "newvalue"));
84 headergroup.updateHeader(new BasicHeader("name4", "value4"));
85 headergroup.updateHeader(null);
86 Assert.assertEquals(4, headergroup.getAllHeaders().length);
87 Assert.assertEquals("newvalue", headergroup.getFirstHeader("name2").getValue());
88 }
89
90 @Test
91 public void testSetHeaders() {
92 final HeaderGroup headergroup = new HeaderGroup();
93 final Header header1 = new BasicHeader("name1", "value1");
94 final Header header2 = new BasicHeader("name2", "value2");
95 final Header header3 = new BasicHeader("name3", "value3");
96 headergroup.addHeader(header1);
97 headergroup.setHeaders(new Header[] { header2, header3 });
98 Assert.assertEquals(2, headergroup.getAllHeaders().length);
99 Assert.assertEquals(0, headergroup.getHeaders("name1").length);
100 Assert.assertFalse(headergroup.containsHeader("name1"));
101 Assert.assertEquals(1, headergroup.getHeaders("name2").length);
102 Assert.assertTrue(headergroup.containsHeader("name2"));
103 Assert.assertEquals(1, headergroup.getHeaders("name3").length);
104 Assert.assertTrue(headergroup.containsHeader("name3"));
105 headergroup.setHeaders(null);
106 Assert.assertEquals(0, headergroup.getAllHeaders().length);
107 }
108
109 @Test
110 public void testFirstLastHeaders() {
111 final HeaderGroup headergroup = new HeaderGroup();
112 final Header header1 = new BasicHeader("name", "value1");
113 final Header header2 = new BasicHeader("name", "value2");
114 final Header header3 = new BasicHeader("name", "value3");
115 headergroup.setHeaders(new Header[] { header1, header2, header3 });
116
117 Assert.assertNull(headergroup.getFirstHeader("whatever"));
118 Assert.assertNull(headergroup.getLastHeader("whatever"));
119
120 Assert.assertEquals("value1", headergroup.getFirstHeader("name").getValue());
121 Assert.assertEquals("value3", headergroup.getLastHeader("name").getValue());
122 }
123
124 @Test
125 public void testCondensedHeader() {
126 final HeaderGroup headergroup = new HeaderGroup();
127 Assert.assertNull(headergroup.getCondensedHeader("name"));
128
129 final Header header1 = new BasicHeader("name", "value1");
130 final Header header2 = new BasicHeader("name", "value2");
131 final Header header3 = new BasicHeader("name", "value3");
132 headergroup.setHeaders(new Header[] { header1, header2, header3 });
133
134 Assert.assertEquals("value1, value2, value3", headergroup.getCondensedHeader("name").getValue());
135
136 headergroup.setHeaders(new Header[] { header1 });
137 Assert.assertEquals(header1, headergroup.getCondensedHeader("name"));
138 }
139
140 @Test
141 public void testIterator() {
142 final HeaderGroup headergroup = new HeaderGroup();
143 final HeaderIterator i = headergroup.iterator();
144 Assert.assertNotNull(i);
145 Assert.assertFalse(i.hasNext());
146 }
147
148 @Test
149 public void testHeaderRemove() {
150 final HeaderGroup headergroup = new HeaderGroup();
151 final Header header1 = new BasicHeader("name", "value1");
152 final Header header2 = new BasicHeader("name", "value2");
153 final Header header3 = new BasicHeader("name", "value3");
154 headergroup.setHeaders(new Header[] { header1, header2, header3 });
155 final HeaderIterator i = headergroup.iterator();
156 Assert.assertNotNull(i);
157 Assert.assertTrue(i.hasNext());
158 i.next();
159 Assert.assertTrue(i.hasNext());
160 i.next();
161 i.remove();
162 Assert.assertEquals(2, headergroup.getAllHeaders().length);
163 Assert.assertTrue(i.hasNext());
164 i.next();
165 i.remove();
166 Assert.assertEquals(1, headergroup.getAllHeaders().length);
167 Assert.assertFalse(i.hasNext());
168 }
169
170 @Test
171 public void testCloning() throws Exception {
172 final HeaderGroup orig = new HeaderGroup();
173 final Header header1 = new BasicHeader("name", "value1");
174 final Header header2 = new BasicHeader("name", "value2");
175 final Header header3 = new BasicHeader("name", "value3");
176 orig.setHeaders(new Header[] { header1, header2, header3 });
177 final HeaderGroup clone = (HeaderGroup) orig.clone();
178 final Header[] headers1 = orig.getAllHeaders();
179 final Header[] headers2 = clone.getAllHeaders();
180 Assert.assertNotNull(headers1);
181 Assert.assertNotNull(headers2);
182 Assert.assertEquals(3, headers2.length);
183 Assert.assertEquals(headers1.length, headers2.length);
184 for (int i = 0; i < headers1.length; i++) {
185 Assert.assertEquals(headers1[i].getName(), headers2[i].getName());
186 Assert.assertEquals(headers1[i].getValue(), headers2[i].getValue());
187 }
188 }
189
190 @Test
191 public void testSerialization() throws Exception {
192 final HeaderGroup orig = new HeaderGroup();
193 final Header header1 = new BasicHeader("name", "value1");
194 final Header header2 = new BasicHeader("name", "value2");
195 final Header header3 = new BasicHeader("name", "value3");
196 orig.setHeaders(new Header[] { header1, header2, header3 });
197 final ByteArrayOutputStream outbuffer = new ByteArrayOutputStream();
198 final ObjectOutputStream outStream = new ObjectOutputStream(outbuffer);
199 outStream.writeObject(orig);
200 outStream.close();
201 final byte[] raw = outbuffer.toByteArray();
202 final ByteArrayInputStream inBuffer = new ByteArrayInputStream(raw);
203 final ObjectInputStream inStream = new ObjectInputStream(inBuffer);
204 final HeaderGroup clone = (HeaderGroup) inStream.readObject();
205 final Header[] headers1 = orig.getAllHeaders();
206 final Header[] headers2 = clone.getAllHeaders();
207 Assert.assertNotNull(headers1);
208 Assert.assertNotNull(headers2);
209 Assert.assertEquals(headers1.length, headers2.length);
210 for (int i = 0; i < headers1.length; i++) {
211 Assert.assertEquals(headers1[i].getName(), headers2[i].getName());
212 Assert.assertEquals(headers1[i].getValue(), headers2[i].getValue());
213 }
214 }
215
216 }