1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.collect;
18
19 import static java.util.Arrays.asList;
20
21 import com.google.common.testing.NullPointerTester;
22 import com.google.common.testing.SerializableTester;
23
24 import junit.framework.TestCase;
25
26 import java.util.NoSuchElementException;
27
28
29
30
31
32
33 public class EvictingQueueTest extends TestCase {
34
35 public void testCreateWithNegativeSize() throws Exception {
36 try {
37 EvictingQueue.create(-1);
38 fail();
39 } catch (IllegalArgumentException expected) {
40 }
41 }
42
43 public void testCreateWithZeroSize() throws Exception {
44 EvictingQueue<String> queue = EvictingQueue.create(0);
45 assertEquals(0, queue.size());
46
47 assertTrue(queue.add("hi"));
48 assertEquals(0, queue.size());
49
50 assertTrue(queue.offer("hi"));
51 assertEquals(0, queue.size());
52
53 assertFalse(queue.remove("hi"));
54 assertEquals(0, queue.size());
55
56 try {
57 queue.element();
58 fail();
59 } catch (NoSuchElementException expected) {}
60
61 assertNull(queue.peek());
62 assertNull(queue.poll());
63 try {
64 queue.remove();
65 fail();
66 } catch (NoSuchElementException expected) {}
67 }
68
69 public void testRemainingCapacity_maxSize0() {
70 EvictingQueue<String> queue = EvictingQueue.create(0);
71 assertEquals(0, queue.remainingCapacity());
72 }
73
74 public void testRemainingCapacity_maxSize1() {
75 EvictingQueue<String> queue = EvictingQueue.create(1);
76 assertEquals(1, queue.remainingCapacity());
77 queue.add("hi");
78 assertEquals(0, queue.remainingCapacity());
79 }
80
81 public void testRemainingCapacity_maxSize3() {
82 EvictingQueue<String> queue = EvictingQueue.create(3);
83 assertEquals(3, queue.remainingCapacity());
84 queue.add("hi");
85 assertEquals(2, queue.remainingCapacity());
86 queue.add("hi");
87 assertEquals(1, queue.remainingCapacity());
88 queue.add("hi");
89 assertEquals(0, queue.remainingCapacity());
90 }
91
92 public void testEvictingAfterOne() throws Exception {
93 EvictingQueue<String> queue = EvictingQueue.create(1);
94 assertEquals(0, queue.size());
95 assertEquals(1, queue.remainingCapacity());
96
97 assertTrue(queue.add("hi"));
98 assertEquals("hi", queue.element());
99 assertEquals("hi", queue.peek());
100 assertEquals(1, queue.size());
101 assertEquals(0, queue.remainingCapacity());
102
103 assertTrue(queue.add("there"));
104 assertEquals("there", queue.element());
105 assertEquals("there", queue.peek());
106 assertEquals(1, queue.size());
107 assertEquals(0, queue.remainingCapacity());
108
109 assertEquals("there", queue.remove());
110 assertEquals(0, queue.size());
111 assertEquals(1, queue.remainingCapacity());
112 }
113
114 public void testEvictingAfterThree() throws Exception {
115 EvictingQueue<String> queue = EvictingQueue.create(3);
116 assertEquals(0, queue.size());
117 assertEquals(3, queue.remainingCapacity());
118
119 assertTrue(queue.add("one"));
120 assertTrue(queue.add("two"));
121 assertTrue(queue.add("three"));
122 assertEquals("one", queue.element());
123 assertEquals("one", queue.peek());
124 assertEquals(3, queue.size());
125 assertEquals(0, queue.remainingCapacity());
126
127 assertTrue(queue.add("four"));
128 assertEquals("two", queue.element());
129 assertEquals("two", queue.peek());
130 assertEquals(3, queue.size());
131 assertEquals(0, queue.remainingCapacity());
132
133 assertEquals("two", queue.remove());
134 assertEquals(2, queue.size());
135 assertEquals(1, queue.remainingCapacity());
136 }
137
138 public void testAddAll() throws Exception {
139 EvictingQueue<String> queue = EvictingQueue.create(3);
140 assertEquals(0, queue.size());
141 assertEquals(3, queue.remainingCapacity());
142
143 assertTrue(queue.addAll(asList("one", "two", "three")));
144 assertEquals("one", queue.element());
145 assertEquals("one", queue.peek());
146 assertEquals(3, queue.size());
147 assertEquals(0, queue.remainingCapacity());
148
149 assertTrue(queue.addAll(asList("four")));
150 assertEquals("two", queue.element());
151 assertEquals("two", queue.peek());
152 assertEquals(3, queue.size());
153 assertEquals(0, queue.remainingCapacity());
154
155 assertEquals("two", queue.remove());
156 assertEquals(2, queue.size());
157 assertEquals(1, queue.remainingCapacity());
158 }
159
160 public void testNullPointerExceptions() {
161 NullPointerTester tester = new NullPointerTester();
162 tester.testAllPublicStaticMethods(EvictingQueue.class);
163 tester.testAllPublicConstructors(EvictingQueue.class);
164 EvictingQueue<String> queue = EvictingQueue.create(5);
165
166 queue.add("one");
167 tester.testAllPublicInstanceMethods(queue);
168 }
169
170 public void testSerialization() {
171 EvictingQueue<String> original = EvictingQueue.create(5);
172 original.add("one");
173 original.add("two");
174 original.add("three");
175
176 EvictingQueue<String> copy = SerializableTester.reserialize(original);
177 assertEquals(copy.maxSize, original.maxSize);
178 assertEquals("one", copy.remove());
179 assertEquals("two", copy.remove());
180 assertEquals("three", copy.remove());
181 assertTrue(copy.isEmpty());
182 }
183 }