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 TestFifoBuffer {
34
35 @Test
36 public void testAddRemoveCycle() throws Exception {
37
38 final FifoBuffer fifoBuffer = new FifoBuffer(5);
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 < 20; i++) {
46 Assert.assertEquals(0, fifoBuffer.size());
47 Assert.assertSame(null, fifoBuffer.getFirst());
48 Assert.assertSame(null, fifoBuffer.getLast());
49 fifoBuffer.addFirst(h1);
50 Assert.assertSame(h1, fifoBuffer.getFirst());
51 Assert.assertSame(h1, fifoBuffer.getLast());
52 Assert.assertEquals(1, fifoBuffer.size());
53 fifoBuffer.addFirst(h2);
54 Assert.assertEquals(2, fifoBuffer.size());
55 Assert.assertSame(h2, fifoBuffer.getFirst());
56 Assert.assertSame(h1, fifoBuffer.getLast());
57 fifoBuffer.addFirst(h3);
58 Assert.assertEquals(3, fifoBuffer.size());
59 Assert.assertSame(h3, fifoBuffer.getFirst());
60 Assert.assertSame(h1, fifoBuffer.getLast());
61 fifoBuffer.addFirst(h4);
62 Assert.assertEquals(4, fifoBuffer.size());
63 Assert.assertSame(h4, fifoBuffer.getFirst());
64 Assert.assertSame(h1, fifoBuffer.getLast());
65
66 Assert.assertSame(h4, fifoBuffer.get(0));
67 Assert.assertSame(h3, fifoBuffer.get(1));
68 Assert.assertSame(h2, fifoBuffer.get(2));
69 Assert.assertSame(h1, fifoBuffer.get(3));
70
71 fifoBuffer.removeLast();
72 Assert.assertEquals(3, fifoBuffer.size());
73 Assert.assertSame(h4, fifoBuffer.getFirst());
74 Assert.assertSame(h2, fifoBuffer.getLast());
75 fifoBuffer.removeLast();
76 Assert.assertEquals(2, fifoBuffer.size());
77 Assert.assertSame(h4, fifoBuffer.getFirst());
78 Assert.assertSame(h3, fifoBuffer.getLast());
79 fifoBuffer.removeLast();
80 Assert.assertEquals(1, fifoBuffer.size());
81 Assert.assertSame(h4, fifoBuffer.getFirst());
82 Assert.assertSame(h4, fifoBuffer.getLast());
83 fifoBuffer.removeLast();
84 Assert.assertEquals(0, fifoBuffer.size());
85 Assert.assertSame(null, fifoBuffer.getFirst());
86 Assert.assertSame(null, fifoBuffer.getLast());
87 }
88 }
89
90 @Test
91 public void testExpand() throws Exception {
92
93 final HPackHeader h1 = new HPackHeader("h", "1");
94 final HPackHeader h2 = new HPackHeader("h", "2");
95 final HPackHeader h3 = new HPackHeader("h", "3");
96 final HPackHeader h4 = new HPackHeader("h", "4");
97
98 for (int i = 0; i < 10; i++) {
99
100 final FifoBuffer fifoBuffer = new FifoBuffer(1);
101
102 for (int n = 0; n < i; n++) {
103
104 fifoBuffer.addFirst(h1);
105 fifoBuffer.removeLast();
106 }
107
108 Assert.assertEquals(0, fifoBuffer.size());
109 Assert.assertSame(null, fifoBuffer.getFirst());
110 Assert.assertSame(null, fifoBuffer.getLast());
111 fifoBuffer.addFirst(h1);
112 Assert.assertSame(h1, fifoBuffer.getFirst());
113 Assert.assertSame(h1, fifoBuffer.getLast());
114 Assert.assertEquals(1, fifoBuffer.size());
115 fifoBuffer.addFirst(h2);
116 Assert.assertEquals(2, fifoBuffer.size());
117 Assert.assertSame(h2, fifoBuffer.getFirst());
118 Assert.assertSame(h1, fifoBuffer.getLast());
119 fifoBuffer.addFirst(h3);
120 Assert.assertEquals(3, fifoBuffer.size());
121 Assert.assertSame(h3, fifoBuffer.getFirst());
122 Assert.assertSame(h1, fifoBuffer.getLast());
123 fifoBuffer.addFirst(h4);
124 Assert.assertEquals(4, fifoBuffer.size());
125 Assert.assertSame(h4, fifoBuffer.getFirst());
126 Assert.assertSame(h1, fifoBuffer.getLast());
127
128 Assert.assertSame(h4, fifoBuffer.get(0));
129 Assert.assertSame(h3, fifoBuffer.get(1));
130 Assert.assertSame(h2, fifoBuffer.get(2));
131 Assert.assertSame(h1, fifoBuffer.get(3));
132 }
133 }
134
135 }
136