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.HeaderElement;
36 import org.apache.http.util.CharArrayBuffer;
37 import org.junit.Assert;
38 import org.junit.Test;
39
40
41
42
43
44 public class TestBufferedHeader {
45
46 @Test
47 public void testBasicConstructor() {
48 final CharArrayBuffer buf = new CharArrayBuffer(32);
49 buf.append("name: value");
50 final BufferedHeader header = new BufferedHeader(buf);
51 Assert.assertEquals("name", header.getName());
52 Assert.assertEquals("value", header.getValue());
53 Assert.assertSame(buf, header.getBuffer());
54 Assert.assertEquals(5, header.getValuePos());
55 }
56
57 @Test
58 public void testInvalidName() {
59 try {
60 new BufferedHeader(null);
61 Assert.fail("IllegalArgumentException should have been thrown");
62 } catch (final IllegalArgumentException ex) {
63
64 }
65 }
66
67 @Test
68 public void testHeaderElements() {
69 final CharArrayBuffer buf = new CharArrayBuffer(32);
70 buf.append("name: element1 = value1, element2; param1 = value1, element3");
71 final BufferedHeader header = new BufferedHeader(buf);
72 final HeaderElement[] elements = header.getElements();
73 Assert.assertNotNull(elements);
74 Assert.assertEquals(3, elements.length);
75 Assert.assertEquals("element1", elements[0].getName());
76 Assert.assertEquals("value1", elements[0].getValue());
77 Assert.assertEquals("element2", elements[1].getName());
78 Assert.assertEquals(null, elements[1].getValue());
79 Assert.assertEquals("element3", elements[2].getName());
80 Assert.assertEquals(null, elements[2].getValue());
81 Assert.assertEquals(1, elements[1].getParameters().length);
82 }
83
84 @Test
85 public void testCloning() throws Exception {
86 final CharArrayBuffer buf = new CharArrayBuffer(32);
87 buf.append("name: value");
88 final BufferedHeader orig = new BufferedHeader(buf);
89 final BufferedHeader clone = (BufferedHeader) orig.clone();
90 Assert.assertEquals(orig.getName(), clone.getName());
91 Assert.assertEquals(orig.getValue(), clone.getValue());
92 }
93
94 @Test
95 public void testSerialization() throws Exception {
96 final CharArrayBuffer buf = new CharArrayBuffer(32);
97 buf.append("name: value");
98 final BufferedHeader orig = new BufferedHeader(buf);
99 final ByteArrayOutputStream outbuffer = new ByteArrayOutputStream();
100 final ObjectOutputStream outStream = new ObjectOutputStream(outbuffer);
101 outStream.writeObject(orig);
102 outStream.close();
103 final byte[] raw = outbuffer.toByteArray();
104 final ByteArrayInputStream inBuffer = new ByteArrayInputStream(raw);
105 final ObjectInputStream inStream = new ObjectInputStream(inBuffer);
106 final BufferedHeader clone = (BufferedHeader) inStream.readObject();
107 Assert.assertEquals(orig.getName(), clone.getName());
108 Assert.assertEquals(orig.getValue(), clone.getValue());
109 }
110
111 }
112