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.http2.hpack;
29
30 import org.junit.jupiter.api.Assertions;
31 import org.junit.jupiter.api.Test;
32
33 public class TestFifoLinkedList {
34
35 @Test
36 public void testAddRemoveCycle() throws Exception {
37
38 final FifoLinkedList fifoLinkedList = new FifoLinkedList();
39
40 final HPackHeader h1 = new HPackHeader("h", "1");
41 final HPackHeader h2 = new HPackHeader("h", "2");
42 final HPackHeader h3 = new HPackHeader("h", "3");
43 final HPackHeader h4 = new HPackHeader("h", "4");
44
45 for (int i = 0; i < 5; i++) {
46 Assertions.assertEquals(0, fifoLinkedList.size());
47 Assertions.assertSame(null, fifoLinkedList.getFirst());
48 Assertions.assertSame(null, fifoLinkedList.getLast());
49
50 fifoLinkedList.addFirst(h1);
51 Assertions.assertEquals(1, fifoLinkedList.size());
52 Assertions.assertSame(h1, fifoLinkedList.getFirst());
53 Assertions.assertSame(h1, fifoLinkedList.getLast());
54
55 fifoLinkedList.addFirst(h2);
56 Assertions.assertEquals(2, fifoLinkedList.size());
57 Assertions.assertSame(h2, fifoLinkedList.getFirst());
58 Assertions.assertSame(h1, fifoLinkedList.getLast());
59
60 fifoLinkedList.addFirst(h3);
61 Assertions.assertEquals(3, fifoLinkedList.size());
62 Assertions.assertSame(h3, fifoLinkedList.getFirst());
63 Assertions.assertSame(h1, fifoLinkedList.getLast());
64
65 fifoLinkedList.addFirst(h4);
66 Assertions.assertEquals(4, fifoLinkedList.size());
67 Assertions.assertSame(h4, fifoLinkedList.getFirst());
68 Assertions.assertSame(h1, fifoLinkedList.getLast());
69
70 fifoLinkedList.removeLast();
71 Assertions.assertEquals(3, fifoLinkedList.size());
72 Assertions.assertSame(h4, fifoLinkedList.getFirst());
73 Assertions.assertSame(h2, fifoLinkedList.getLast());
74
75 fifoLinkedList.removeLast();
76 Assertions.assertEquals(2, fifoLinkedList.size());
77 Assertions.assertSame(h4, fifoLinkedList.getFirst());
78 Assertions.assertSame(h3, fifoLinkedList.getLast());
79
80 fifoLinkedList.removeLast();
81 Assertions.assertEquals(1, fifoLinkedList.size());
82 Assertions.assertSame(h4, fifoLinkedList.getFirst());
83 Assertions.assertSame(h4, fifoLinkedList.getLast());
84
85 fifoLinkedList.removeLast();
86 Assertions.assertEquals(0, fifoLinkedList.size());
87 Assertions.assertSame(null, fifoLinkedList.getFirst());
88 Assertions.assertSame(null, fifoLinkedList.getLast());
89 }
90 }
91
92 @Test
93 public void testGetIndex() throws Exception {
94
95 final FifoLinkedList fifoLinkedList = new FifoLinkedList();
96
97 final HPackHeader h1 = new HPackHeader("h", "1");
98 final HPackHeader h2 = new HPackHeader("h", "2");
99 final HPackHeader h3 = new HPackHeader("h", "3");
100 final HPackHeader h4 = new HPackHeader("h", "4");
101
102 final FifoLinkedList.InternalNode node1 = fifoLinkedList.addFirst(h1);
103 final FifoLinkedList.InternalNode node2 = fifoLinkedList.addFirst(h2);
104 final FifoLinkedList.InternalNode node3 = fifoLinkedList.addFirst(h3);
105 final FifoLinkedList.InternalNode node4 = fifoLinkedList.addFirst(h4);
106
107 Assertions.assertEquals(0, fifoLinkedList.getIndex(node4));
108 Assertions.assertEquals(1, fifoLinkedList.getIndex(node3));
109 Assertions.assertEquals(2, fifoLinkedList.getIndex(node2));
110 Assertions.assertEquals(3, fifoLinkedList.getIndex(node1));
111
112 Assertions.assertEquals(4, fifoLinkedList.size());
113 Assertions.assertSame(h4, fifoLinkedList.get(0));
114 Assertions.assertSame(h3, fifoLinkedList.get(1));
115 Assertions.assertSame(h2, fifoLinkedList.get(2));
116 Assertions.assertSame(h1, fifoLinkedList.get(3));
117
118 fifoLinkedList.removeLast();
119
120 Assertions.assertEquals(0, fifoLinkedList.getIndex(node4));
121 Assertions.assertEquals(1, fifoLinkedList.getIndex(node3));
122 Assertions.assertEquals(2, fifoLinkedList.getIndex(node2));
123 Assertions.assertEquals(-1, fifoLinkedList.getIndex(node1));
124
125 Assertions.assertEquals(3, fifoLinkedList.size());
126 Assertions.assertSame(h4, fifoLinkedList.get(0));
127 Assertions.assertSame(h3, fifoLinkedList.get(1));
128 Assertions.assertSame(h2, fifoLinkedList.get(2));
129
130 fifoLinkedList.removeLast();
131
132 Assertions.assertEquals(0, fifoLinkedList.getIndex(node4));
133 Assertions.assertEquals(1, fifoLinkedList.getIndex(node3));
134 Assertions.assertEquals(-1, fifoLinkedList.getIndex(node2));
135 Assertions.assertEquals(-1, fifoLinkedList.getIndex(node1));
136
137 Assertions.assertEquals(2, fifoLinkedList.size());
138 Assertions.assertSame(h4, fifoLinkedList.get(0));
139 Assertions.assertSame(h3, fifoLinkedList.get(1));
140
141 fifoLinkedList.removeLast();
142
143 Assertions.assertEquals(0, fifoLinkedList.getIndex(node4));
144 Assertions.assertEquals(-1, fifoLinkedList.getIndex(node3));
145 Assertions.assertEquals(-1, fifoLinkedList.getIndex(node2));
146 Assertions.assertEquals(-1, fifoLinkedList.getIndex(node1));
147
148 Assertions.assertEquals(1, fifoLinkedList.size());
149 Assertions.assertSame(h4, fifoLinkedList.get(0));
150
151 fifoLinkedList.removeLast();
152
153 Assertions.assertEquals(-1, fifoLinkedList.getIndex(node4));
154 Assertions.assertEquals(-1, fifoLinkedList.getIndex(node3));
155 Assertions.assertEquals(-1, fifoLinkedList.getIndex(node2));
156 Assertions.assertEquals(-1, fifoLinkedList.getIndex(node1));
157
158 Assertions.assertEquals(0, fifoLinkedList.size());
159 }
160 }
161