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.Assert;
31 import org.junit.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 Assert.assertEquals(0, fifoLinkedList.size());
47 Assert.assertSame(null, fifoLinkedList.getFirst());
48 Assert.assertSame(null, fifoLinkedList.getLast());
49
50 fifoLinkedList.addFirst(h1);
51 Assert.assertEquals(1, fifoLinkedList.size());
52 Assert.assertSame(h1, fifoLinkedList.getFirst());
53 Assert.assertSame(h1, fifoLinkedList.getLast());
54
55 fifoLinkedList.addFirst(h2);
56 Assert.assertEquals(2, fifoLinkedList.size());
57 Assert.assertSame(h2, fifoLinkedList.getFirst());
58 Assert.assertSame(h1, fifoLinkedList.getLast());
59
60 fifoLinkedList.addFirst(h3);
61 Assert.assertEquals(3, fifoLinkedList.size());
62 Assert.assertSame(h3, fifoLinkedList.getFirst());
63 Assert.assertSame(h1, fifoLinkedList.getLast());
64
65 fifoLinkedList.addFirst(h4);
66 Assert.assertEquals(4, fifoLinkedList.size());
67 Assert.assertSame(h4, fifoLinkedList.getFirst());
68 Assert.assertSame(h1, fifoLinkedList.getLast());
69
70 fifoLinkedList.removeLast();
71 Assert.assertEquals(3, fifoLinkedList.size());
72 Assert.assertSame(h4, fifoLinkedList.getFirst());
73 Assert.assertSame(h2, fifoLinkedList.getLast());
74
75 fifoLinkedList.removeLast();
76 Assert.assertEquals(2, fifoLinkedList.size());
77 Assert.assertSame(h4, fifoLinkedList.getFirst());
78 Assert.assertSame(h3, fifoLinkedList.getLast());
79
80 fifoLinkedList.removeLast();
81 Assert.assertEquals(1, fifoLinkedList.size());
82 Assert.assertSame(h4, fifoLinkedList.getFirst());
83 Assert.assertSame(h4, fifoLinkedList.getLast());
84
85 fifoLinkedList.removeLast();
86 Assert.assertEquals(0, fifoLinkedList.size());
87 Assert.assertSame(null, fifoLinkedList.getFirst());
88 Assert.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 Assert.assertEquals(0, fifoLinkedList.getIndex(node4));
108 Assert.assertEquals(1, fifoLinkedList.getIndex(node3));
109 Assert.assertEquals(2, fifoLinkedList.getIndex(node2));
110 Assert.assertEquals(3, fifoLinkedList.getIndex(node1));
111
112 Assert.assertEquals(4, fifoLinkedList.size());
113 Assert.assertSame(h4, fifoLinkedList.get(0));
114 Assert.assertSame(h3, fifoLinkedList.get(1));
115 Assert.assertSame(h2, fifoLinkedList.get(2));
116 Assert.assertSame(h1, fifoLinkedList.get(3));
117
118 fifoLinkedList.removeLast();
119
120 Assert.assertEquals(0, fifoLinkedList.getIndex(node4));
121 Assert.assertEquals(1, fifoLinkedList.getIndex(node3));
122 Assert.assertEquals(2, fifoLinkedList.getIndex(node2));
123 Assert.assertEquals(-1, fifoLinkedList.getIndex(node1));
124
125 Assert.assertEquals(3, fifoLinkedList.size());
126 Assert.assertSame(h4, fifoLinkedList.get(0));
127 Assert.assertSame(h3, fifoLinkedList.get(1));
128 Assert.assertSame(h2, fifoLinkedList.get(2));
129
130 fifoLinkedList.removeLast();
131
132 Assert.assertEquals(0, fifoLinkedList.getIndex(node4));
133 Assert.assertEquals(1, fifoLinkedList.getIndex(node3));
134 Assert.assertEquals(-1, fifoLinkedList.getIndex(node2));
135 Assert.assertEquals(-1, fifoLinkedList.getIndex(node1));
136
137 Assert.assertEquals(2, fifoLinkedList.size());
138 Assert.assertSame(h4, fifoLinkedList.get(0));
139 Assert.assertSame(h3, fifoLinkedList.get(1));
140
141 fifoLinkedList.removeLast();
142
143 Assert.assertEquals(0, fifoLinkedList.getIndex(node4));
144 Assert.assertEquals(-1, fifoLinkedList.getIndex(node3));
145 Assert.assertEquals(-1, fifoLinkedList.getIndex(node2));
146 Assert.assertEquals(-1, fifoLinkedList.getIndex(node1));
147
148 Assert.assertEquals(1, fifoLinkedList.size());
149 Assert.assertSame(h4, fifoLinkedList.get(0));
150
151 fifoLinkedList.removeLast();
152
153 Assert.assertEquals(-1, fifoLinkedList.getIndex(node4));
154 Assert.assertEquals(-1, fifoLinkedList.getIndex(node3));
155 Assert.assertEquals(-1, fifoLinkedList.getIndex(node2));
156 Assert.assertEquals(-1, fifoLinkedList.getIndex(node1));
157
158 Assert.assertEquals(0, fifoLinkedList.size());
159 }
160 }
161