1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections4;
18
19 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
20 import static org.junit.jupiter.api.Assertions.assertSame;
21 import static org.junit.jupiter.api.Assertions.assertThrows;
22 import static org.junit.jupiter.api.Assertions.assertTrue;
23
24 import java.util.LinkedList;
25 import java.util.Queue;
26
27 import org.apache.commons.collections4.functors.TruePredicate;
28 import org.apache.commons.collections4.queue.PredicatedQueue;
29 import org.apache.commons.collections4.queue.SynchronizedQueue;
30 import org.apache.commons.collections4.queue.TransformedQueue;
31 import org.apache.commons.collections4.queue.UnmodifiableQueue;
32 import org.junit.jupiter.api.Test;
33
34
35
36
37 public class QueueUtilsTest {
38
39 protected Predicate<Object> truePredicate = TruePredicate.truePredicate();
40 protected Transformer<Object, Object> nopTransformer = TransformerUtils.nopTransformer();
41
42 @Test
43 public void testEmptyQueue() {
44 final Queue<Object> queue = QueueUtils.emptyQueue();
45 assertInstanceOf(UnmodifiableQueue.class, queue, "Returned object should be an UnmodifiableQueue.");
46 assertTrue(queue.isEmpty(), "Returned queue is not empty.");
47
48 assertThrows(UnsupportedOperationException.class, () -> queue.add(new Object()),
49 "Expecting UnsupportedOperationException for empty queue.");
50 }
51
52 @Test
53 public void testPredicatedQueue() {
54 final Queue<Object> queue = QueueUtils.predicatedQueue(new LinkedList<>(), truePredicate);
55 assertInstanceOf(PredicatedQueue.class, queue, "Returned object should be a PredicatedQueue.");
56
57 assertThrows(NullPointerException.class, () -> QueueUtils.predicatedQueue(null, truePredicate),
58 "Expecting NullPointerException for null queue.");
59
60 assertThrows(NullPointerException.class, () -> QueueUtils.predicatedQueue(new LinkedList<>(), null),
61 "Expecting NullPointerException for null predicate.");
62 }
63
64 @Test
65 public void testSynchronizedQueue() {
66 final Queue<Object> queue = QueueUtils.synchronizedQueue(new LinkedList<>());
67 assertInstanceOf(SynchronizedQueue.class, queue, "Returned object should be a SynchronizedQueue.");
68
69 assertThrows(NullPointerException.class, () -> QueueUtils.synchronizedQueue(null),
70 "Expecting NullPointerException for null queue.");
71 }
72
73 @Test
74 public void testTransformedQueue() {
75 final Queue<Object> queue = QueueUtils.transformingQueue(new LinkedList<>(), nopTransformer);
76 assertInstanceOf(TransformedQueue.class, queue, "Returned object should be an TransformedQueue.");
77
78 assertThrows(NullPointerException.class, () -> QueueUtils.transformingQueue(null, nopTransformer),
79 "Expecting NullPointerException for null queue.");
80
81 assertThrows(NullPointerException.class, () -> QueueUtils.transformingQueue(new LinkedList<>(), null),
82 "Expecting NullPointerException for null transformer.");
83 }
84
85 @Test
86 public void testUnmodifiableQueue() {
87 final Queue<Object> queue = QueueUtils.unmodifiableQueue(new LinkedList<>());
88 assertInstanceOf(UnmodifiableQueue.class, queue, "Returned object should be an UnmodifiableQueue.");
89
90 assertThrows(NullPointerException.class, () -> QueueUtils.unmodifiableQueue(null),
91 "Expecting NullPointerException for null queue.");
92
93 assertSame(queue, QueueUtils.unmodifiableQueue(queue), "UnmodifiableQueue shall not be decorated");
94 }
95
96 }