20 |
|
import java.util.concurrent.Executors; |
21 |
|
import java.util.concurrent.ExecutorService; |
22 |
|
import java.util.concurrent.PriorityBlockingQueue; |
23 |
+ |
import java.util.concurrent.ThreadLocalRandom; |
24 |
|
|
25 |
|
import junit.framework.Test; |
26 |
|
|
34 |
|
|
35 |
|
public static class InitialCapacity extends BlockingQueueTest { |
36 |
|
protected BlockingQueue emptyCollection() { |
37 |
< |
return new PriorityBlockingQueue(SIZE); |
37 |
> |
ThreadLocalRandom rnd = ThreadLocalRandom.current(); |
38 |
> |
int initialCapacity = rnd.nextInt(1, SIZE); |
39 |
> |
return new PriorityBlockingQueue(initialCapacity); |
40 |
|
} |
41 |
|
} |
42 |
|
|
47 |
|
public static Test suite() { |
48 |
|
class Implementation implements CollectionImplementation { |
49 |
|
public Class<?> klazz() { return PriorityBlockingQueue.class; } |
50 |
< |
public Collection emptyCollection() { return new PriorityBlockingQueue(); } |
50 |
> |
public Collection emptyCollection() { |
51 |
> |
return new PriorityBlockingQueue(); |
52 |
> |
} |
53 |
|
public Object makeElement(int i) { return i; } |
54 |
|
public boolean isConcurrent() { return true; } |
55 |
|
public boolean permitsNulls() { return false; } |
56 |
|
} |
57 |
< |
return newTestSuite(PriorityBlockingQueueTest.class, |
58 |
< |
new Generic().testSuite(), |
59 |
< |
new InitialCapacity().testSuite(), |
60 |
< |
CollectionTest.testSuite(new Implementation())); |
57 |
> |
class ComparatorImplementation implements CollectionImplementation { |
58 |
> |
public Class<?> klazz() { return PriorityBlockingQueue.class; } |
59 |
> |
public Collection emptyCollection() { |
60 |
> |
ThreadLocalRandom rnd = ThreadLocalRandom.current(); |
61 |
> |
int initialCapacity = rnd.nextInt(1, 10); |
62 |
> |
return new PriorityBlockingQueue( |
63 |
> |
initialCapacity, new MyReverseComparator()); |
64 |
> |
} |
65 |
> |
public Object makeElement(int i) { return i; } |
66 |
> |
public boolean isConcurrent() { return true; } |
67 |
> |
public boolean permitsNulls() { return false; } |
68 |
> |
} |
69 |
> |
return newTestSuite( |
70 |
> |
PriorityBlockingQueueTest.class, |
71 |
> |
new Generic().testSuite(), |
72 |
> |
new InitialCapacity().testSuite(), |
73 |
> |
CollectionTest.testSuite(new Implementation()), |
74 |
> |
CollectionTest.testSuite(new ComparatorImplementation())); |
75 |
|
} |
76 |
|
|
77 |
|
/** Sample Comparator */ |
78 |
< |
static class MyReverseComparator implements Comparator { |
78 |
> |
static class MyReverseComparator implements Comparator, java.io.Serializable { |
79 |
|
public int compare(Object x, Object y) { |
80 |
|
return ((Comparable)y).compareTo(x); |
81 |
|
} |