-
Notifications
You must be signed in to change notification settings - Fork 6
/
ArrayQueueDequeTest.java
70 lines (59 loc) · 1.98 KB
/
ArrayQueueDequeTest.java
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package queue;
import java.net.MalformedURLException;
import java.util.Deque;
/**
* @author Georgiy Korneev ([email protected])
*/
public class ArrayQueueDequeTest extends ArrayQueueTest<ArrayQueueDequeTest.QueueDeque> {
public ArrayQueueDequeTest() {
super(QueueDeque::new);
}
public static void main(final String[] args) {
new ArrayQueueDequeTest().test();
}
@Override
protected void add(final Deque<Object> deque, final QueueDeque queue, final Object element) {
if (random.nextBoolean()) {
super.add(deque, queue, element);
} else {
deque.addFirst(element);
queue.push(element);
}
}
@Override
protected void check(final Deque<Object> deque, final QueueDeque queue) {
if (random.nextBoolean()) {
super.check(deque, queue);
} else {
assertEquals("peek()", deque.getLast(), queue.peek());
}
}
@Override
protected void remove(final Deque<Object> deque, final QueueDeque queue) {
if (random.nextBoolean()) {
super.remove(deque, queue);
} else {
assertEquals("remove()", deque.removeLast(), queue.remove());
}
}
static class QueueDeque extends ArrayQueueTest.Queue {
private final ZMethod<Void> push;
private final ZMethod<Object> peek;
private final ZMethod<Object> remove;
public QueueDeque(final String className, final Mode mode) throws MalformedURLException, NoSuchMethodException, ClassNotFoundException {
super(className, mode);
push = findMethod("push", Object.class);
peek = findMethod("peek");
remove = findMethod("remove");
}
public void push(final Object element) {
push.invoke(element);
}
public Object peek() {
return peek.invoke();
}
public Object remove() {
return remove.invoke();
}
}
}