View Javadoc
1   package com.github.davidmoten.rtree.internal.util;
2   
3   import static com.github.davidmoten.rtree.internal.util.BoundedPriorityQueue.create;
4   import static org.junit.Assert.assertEquals;
5   import static org.junit.Assert.assertTrue;
6   
7   import java.util.Comparator;
8   
9   import org.junit.Test;
10  
11  import com.github.davidmoten.guavamini.Sets;
12  
13  public class BoundedPriorityQueueTest {
14  
15      private static final Comparator<Integer> comparator = new Comparator<Integer>() {
16  
17          @Override
18          public int compare(Integer o1, Integer o2) {
19              return o1.compareTo(o2);
20          }
21      };
22  
23      @Test
24      public void emptyQueueAsListIsEmpty() {
25          BoundedPriorityQueue<Integer> q = create(2, comparator);
26          assertTrue(q.asList().isEmpty());
27      }
28  
29      @Test
30      public void singleItemReturnsSingleItem() {
31          BoundedPriorityQueue<Integer> q = create(2, comparator);
32          q.add(1);
33          assertEquals(Sets.newHashSet(1), Sets.newHashSet(q.asList()));
34      }
35  
36      @Test
37      public void twoItemsReturnsSingleItemWhenMaxIsOne() {
38          BoundedPriorityQueue<Integer> q = create(1, comparator);
39          q.add(1);
40          q.add(2);
41          assertEquals(Sets.newHashSet(1), Sets.newHashSet(q.asList()));
42      }
43  
44      @Test
45      public void twoItemsReturnsSingleItemWhenMaxIsOneInputOrderFlipped() {
46          BoundedPriorityQueue<Integer> q = create(1, comparator);
47          q.add(2);
48          q.add(1);
49          assertEquals(Sets.newHashSet(1), Sets.newHashSet(q.asList()));
50      }
51  
52      @Test
53      public void threeItemsReturnsTwoItemsWhenMaxIsOneInputOrderFlipped() {
54          BoundedPriorityQueue<Integer> q = create(2, comparator);
55          q.add(3);
56          q.add(2);
57          q.add(1);
58          assertEquals(Sets.newHashSet(1, 2), Sets.newHashSet(q.asList()));
59      }
60  
61      @Test
62      public void threeItemsReturnsTwoItemsWhenMaxIsOneInputOrderIncreasing() {
63          BoundedPriorityQueue<Integer> q = create(2, comparator);
64          q.add(1);
65          q.add(2);
66          q.add(3);
67          assertEquals(Sets.newHashSet(1, 2), Sets.newHashSet(q.asList()));
68      }
69  
70      @Test
71      public void threeItemsReturnsTwoItemsWhenMaxIsOneInputOrderMixed() {
72          BoundedPriorityQueue<Integer> q = create(2, comparator);
73          q.add(3);
74          q.add(1);
75          q.add(2);
76          assertEquals(Sets.newHashSet(1, 2), Sets.newHashSet(q.asList()));
77      }
78  
79      @Test
80      public void threeItemsReturnsTwoItemsWhenMaxIsOneInputOrderMixed2() {
81          BoundedPriorityQueue<Integer> q = create(2, comparator);
82          q.add(1);
83          q.add(3);
84          q.add(2);
85          assertEquals(Sets.newHashSet(1, 2), Sets.newHashSet(q.asList()));
86      }
87  
88      @Test
89      public void threeItemsReturnsThreeItemsWhenMaxIsOneInputOrderFlipped() {
90          BoundedPriorityQueue<Integer> q = create(10, comparator);
91          q.add(3);
92          q.add(2);
93          q.add(1);
94          assertEquals(Sets.newHashSet(1, 2, 3), Sets.newHashSet(q.asList()));
95      }
96  
97      @Test
98      public void threeItemsReturnsThreeItemsWhenMaxIsOneInputOrderIncreasing() {
99          BoundedPriorityQueue<Integer> q = create(10, comparator);
100         q.add(1);
101         q.add(2);
102         q.add(3);
103         assertEquals(Sets.newHashSet(1, 2, 3), Sets.newHashSet(q.asList()));
104     }
105 
106     @Test
107     public void threeItemsReturnsThreeItemsWhenMaxIsOneInputOrderMixed() {
108         BoundedPriorityQueue<Integer> q = create(10, comparator);
109         q.add(3);
110         q.add(1);
111         q.add(2);
112         assertEquals(Sets.newHashSet(1, 2, 3), Sets.newHashSet(q.asList()));
113     }
114 
115     @Test
116     public void threeItemsReturnsThreeItemsWhenMaxIsOneInputOrderMixed2() {
117         BoundedPriorityQueue<Integer> q = create(10, comparator);
118         q.add(1);
119         q.add(3);
120         q.add(2);
121         assertEquals(Sets.newHashSet(1, 2, 3), Sets.newHashSet(q.asList()));
122     }
123     
124     @Test(expected=IllegalArgumentException.class)
125     public void testInstantiateWithNegativeSizeThrowsIAE() {
126         create(-1, comparator);
127     }
128     
129     @Test(expected=IllegalArgumentException.class)
130     public void testInstantiateWithZeroSizeThrowsIAE() {
131         create(0, comparator);
132     }
133 
134     @Test(expected=NullPointerException.class)
135     public void testAddNullThrowsNPE() {
136         BoundedPriorityQueue<Integer> q = create(10, comparator);
137         q.add(null);
138     }
139     
140 }