ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/loops/PriorityQueueSort.java
Revision: 1.1
Committed: Mon May 2 19:19:38 2005 UTC (19 years ago) by dl
Branch: MAIN
Log Message:
Put misc performance tests into CVS

File Contents

# User Rev Content
1 dl 1.1 /*
2     * @test
3     * @synopsis Checks that a priority queue returns elements in sorted order across various operations
4     */
5    
6     import java.util.*;
7    
8     public class PriorityQueueSort {
9    
10     static class MyComparator implements Comparator<Integer> {
11     public int compare(Integer x, Integer y) {
12     int i = ((Integer)x).intValue();
13     int j = ((Integer)y).intValue();
14     if (i < j) return -1;
15     if (i > j) return 1;
16     return 0;
17     }
18     }
19    
20     public static void main(String[] args) {
21     int n = 10000;
22     if (args.length > 0)
23     n = Integer.parseInt(args[0]);
24    
25     List<Integer> sorted = new ArrayList<Integer>(n);
26     for (int i = 0; i < n; i++)
27     sorted.add(new Integer(i));
28     List<Integer> shuffled = new ArrayList<Integer>(sorted);
29     Collections.shuffle(shuffled);
30    
31     Queue<Integer> pq = new PriorityQueue<Integer>(n, new MyComparator());
32     for (Iterator<Integer> i = shuffled.iterator(); i.hasNext(); )
33     pq.add(i.next());
34    
35     List<Integer> recons = new ArrayList<Integer>();
36     while (!pq.isEmpty())
37     recons.add(pq.remove());
38     if (!recons.equals(sorted))
39     throw new RuntimeException("Sort test failed");
40    
41     recons.clear();
42     pq = new PriorityQueue<Integer>(shuffled);
43     while (!pq.isEmpty())
44     recons.add(pq.remove());
45     if (!recons.equals(sorted))
46     throw new RuntimeException("Sort test failed");
47    
48     // Remove all odd elements from queue
49     pq = new PriorityQueue<Integer>(shuffled);
50     for (Iterator<Integer> i = pq.iterator(); i.hasNext(); )
51     if ((i.next().intValue() & 1) == 1)
52     i.remove();
53     recons.clear();
54     while (!pq.isEmpty())
55     recons.add(pq.remove());
56    
57     for (Iterator<Integer> i = sorted.iterator(); i.hasNext(); )
58     if ((i.next().intValue() & 1) == 1)
59     i.remove();
60    
61     if (!recons.equals(sorted))
62     throw new RuntimeException("Iterator remove test failed.");
63     }
64     }
65