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;
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.junit.Assert;
36 import org.junit.Test;
37
38
39
40
41
42 public class TestHttpVersion {
43
44 @Test
45 public void testHttpVersionInvalidConstructorInput() throws Exception {
46 try {
47 new HttpVersion(-1, -1);
48 Assert.fail("IllegalArgumentException should have been thrown");
49 } catch (final IllegalArgumentException e) {
50
51 }
52 try {
53 new HttpVersion(0, -1);
54 Assert.fail("IllegalArgumentException should have been thrown");
55 } catch (final IllegalArgumentException e) {
56
57 }
58 }
59
60 @Test
61 public void testHttpVersionEquality() throws Exception {
62 final HttpVersion ver1 = new HttpVersion(1, 1);
63 final HttpVersion ver2 = new HttpVersion(1, 1);
64
65 Assert.assertEquals(ver1.hashCode(), ver2.hashCode());
66 Assert.assertTrue(ver1.equals(ver1));
67 Assert.assertTrue(ver1.equals(ver2));
68 Assert.assertTrue(ver1.equals(ver1));
69 Assert.assertTrue(ver1.equals(ver2));
70
71 Assert.assertFalse(ver1.equals(new Float(1.1)));
72
73 Assert.assertTrue((new HttpVersion(0, 9)).equals(HttpVersion.HTTP_0_9));
74 Assert.assertTrue((new HttpVersion(1, 0)).equals(HttpVersion.HTTP_1_0));
75 Assert.assertTrue((new HttpVersion(1, 1)).equals(HttpVersion.HTTP_1_1));
76 Assert.assertFalse((new HttpVersion(1, 1)).equals(HttpVersion.HTTP_1_0));
77
78 Assert.assertTrue
79 ((new ProtocolVersion("HTTP", 0, 9)).equals(HttpVersion.HTTP_0_9));
80 Assert.assertTrue
81 ((new ProtocolVersion("HTTP", 1, 0)).equals(HttpVersion.HTTP_1_0));
82 Assert.assertTrue
83 ((new ProtocolVersion("HTTP", 1, 1)).equals(HttpVersion.HTTP_1_1));
84 Assert.assertFalse
85 ((new ProtocolVersion("http", 1, 1)).equals(HttpVersion.HTTP_1_1));
86
87 Assert.assertTrue
88 (HttpVersion.HTTP_0_9.equals(new ProtocolVersion("HTTP", 0, 9)));
89 Assert.assertTrue
90 (HttpVersion.HTTP_1_0.equals(new ProtocolVersion("HTTP", 1, 0)));
91 Assert.assertTrue
92 (HttpVersion.HTTP_1_1.equals(new ProtocolVersion("HTTP", 1, 1)));
93 Assert.assertFalse
94 (HttpVersion.HTTP_1_1.equals(new ProtocolVersion("http", 1, 1)));
95 }
96
97 @Test
98 public void testHttpVersionComparison() {
99 Assert.assertTrue(HttpVersion.HTTP_0_9.lessEquals(HttpVersion.HTTP_1_1));
100 Assert.assertTrue(HttpVersion.HTTP_0_9.greaterEquals(HttpVersion.HTTP_0_9));
101 Assert.assertFalse(HttpVersion.HTTP_0_9.greaterEquals(HttpVersion.HTTP_1_0));
102
103 Assert.assertTrue(HttpVersion.HTTP_1_0.compareToVersion(HttpVersion.HTTP_1_1) < 0);
104 Assert.assertTrue(HttpVersion.HTTP_1_0.compareToVersion(HttpVersion.HTTP_0_9) > 0);
105 Assert.assertTrue(HttpVersion.HTTP_1_0.compareToVersion(HttpVersion.HTTP_1_0) == 0);
106 }
107
108 @Test
109 public void testCloning() throws Exception {
110 final HttpVersion orig = HttpVersion.HTTP_1_1;
111 final HttpVersion clone = (HttpVersion) orig.clone();
112 Assert.assertEquals(orig, clone);
113 }
114
115 @Test
116 public void testSerialization() throws Exception {
117 final HttpVersion orig = HttpVersion.HTTP_1_1;
118 final ByteArrayOutputStream outbuffer = new ByteArrayOutputStream();
119 final ObjectOutputStream outStream = new ObjectOutputStream(outbuffer);
120 outStream.writeObject(orig);
121 outStream.close();
122 final byte[] raw = outbuffer.toByteArray();
123 final ByteArrayInputStream inBuffer = new ByteArrayInputStream(raw);
124 final ObjectInputStream inStream = new ObjectInputStream(inBuffer);
125 final HttpVersion clone = (HttpVersion) inStream.readObject();
126 Assert.assertEquals(orig, clone);
127 }
128
129 }
130