-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathArrayQueueDequeTest.java
More file actions
61 lines (53 loc) · 2.12 KB
/
Copy pathArrayQueueDequeTest.java
File metadata and controls
61 lines (53 loc) · 2.12 KB
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
import java.net.MalformedURLException;
import java.util.Deque;
/**
* @author Georgiy Korneev (kgeorgiy@kgeorgiy.info)
*/
public class ArrayQueueDequeTest extends ArrayQueueTest<ArrayQueueDequeTest.QueueDeque> {
public static void main(final String[] args) throws MalformedURLException, ClassNotFoundException, NoSuchMethodException {
new ArrayQueueDequeTest().test();
}
@Override
protected QueueDeque create(final String className, final Mode mode) throws NoSuchMethodException, ClassNotFoundException, MalformedURLException {
return new QueueDeque(className, mode);
}
@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(); }
}
}