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.hc.core5.http;
29
30 import static org.hamcrest.MatcherAssert.assertThat;
31
32 import org.apache.hc.core5.util.Tokenizer;
33 import org.hamcrest.CoreMatchers;
34 import org.junit.jupiter.api.Assertions;
35 import org.junit.jupiter.api.Test;
36
37 public class TestProtocolVersion {
38
39 private static final ProtocolVersion PROTOCOL_VERSION_0_0 = new ProtocolVersion("a", 0, 0);
40 private static final ProtocolVersion PROTOCOL_VERSION_1_0 = new ProtocolVersion("b", 1, 0);
41 private static final ProtocolVersion PROTOCOL_VERSION_1_2 = new ProtocolVersion("c", 1, 2);
42
43 @Test
44 public void testEqualsMajorMinor() {
45 Assertions.assertTrue(PROTOCOL_VERSION_0_0.equals(0, 0));
46 Assertions.assertTrue(PROTOCOL_VERSION_1_0.equals(1, 0));
47 Assertions.assertTrue(PROTOCOL_VERSION_1_2.equals(1, 2));
48
49 Assertions.assertFalse(PROTOCOL_VERSION_1_2.equals(2, 0));
50 }
51
52 @Test
53 public void testParseBasic() throws Exception {
54 assertThat(ProtocolVersion.parse("PROTO/1"), CoreMatchers.equalTo(new ProtocolVersion("PROTO", 1, 0)));
55 assertThat(ProtocolVersion.parse("PROTO/1.1"), CoreMatchers.equalTo(new ProtocolVersion("PROTO", 1, 1)));
56 assertThat(ProtocolVersion.parse("PROTO/1.2"), CoreMatchers.equalTo(new ProtocolVersion("PROTO", 1, 2)));
57 assertThat(ProtocolVersion.parse("PROTO/1.3 "), CoreMatchers.equalTo(new ProtocolVersion("PROTO", 1, 3)));
58 assertThat(ProtocolVersion.parse("PROTO/000.0000 "), CoreMatchers.equalTo(new ProtocolVersion("PROTO", 0, 0)));
59 assertThat(ProtocolVersion.parse("PROTO/22.356"), CoreMatchers.equalTo(new ProtocolVersion("PROTO", 22, 356)));
60 }
61
62 @Test
63 public void testParseBuffer() throws Exception {
64 final Tokenizer.Cursor cursor = new Tokenizer.Cursor(1, 13);
65 assertThat(ProtocolVersion.parse(" PROTO/1.2,0000", cursor, Tokenizer.delimiters(',')), CoreMatchers.equalTo(new ProtocolVersion("PROTO", 1, 2)));
66 assertThat(cursor.getPos(), CoreMatchers.equalTo(10));
67 }
68
69 @Test
70 public void testParseFailure() throws Exception {
71 Assertions.assertThrows(ParseException.class, () -> ProtocolVersion.parse("/1"));
72 Assertions.assertThrows(ParseException.class, () -> ProtocolVersion.parse(" /1"));
73 Assertions.assertThrows(ParseException.class, () -> ProtocolVersion.parse("PROTO/"));
74 Assertions.assertThrows(ParseException.class, () -> ProtocolVersion.parse("PROTO/1A"));
75 Assertions.assertThrows(ParseException.class, () -> ProtocolVersion.parse("PROTO/1.A"));
76 Assertions.assertThrows(ParseException.class, () -> ProtocolVersion.parse("PROTO/1.1 huh?"));
77 }
78
79 }