View Javadoc

1   package com.atlassian.plugins.rest.common.expand.parameter;
2   
3   import static org.junit.Assert.*;
4   import org.junit.Test;
5   
6   import java.util.SortedSet;
7   
8   public class IndexParserTest
9   {
10      @Test
11      public void testParseEmptyIncludesAllIndexes()
12      {
13          Indexes indexes = IndexParser.parse("");
14          assertEquals(0, indexes.getMinIndex(1));
15          assertEquals(0, indexes.getMaxIndex(1));
16          assertEquals(1, indexes.getIndexes(1).size());
17  
18          assertEquals(0, indexes.getMinIndex(5));
19          assertEquals(4, indexes.getMaxIndex(5));
20          assertEquals(5, indexes.getIndexes(5).size());
21  
22          assertEquals(0, indexes.getMinIndex(100));
23          assertEquals(99, indexes.getMaxIndex(100));
24          assertEquals(100, indexes.getIndexes(100).size());
25      }
26  
27      @Test
28      public void testGetMinMaxIndexesInRange()
29      {
30          Indexes indexes = IndexParser.parse("0:50");
31          assertEquals(0, indexes.getMinIndex(1));
32          assertEquals(0, indexes.getMaxIndex(1));
33          assertEquals(1, indexes.getIndexes(1).size());
34          assertEquals(0, indexes.getIndexes(1).iterator().next().intValue());
35  
36          assertEquals(0, indexes.getMinIndex(5));
37          assertEquals(4, indexes.getMaxIndex(5));
38          assertEquals(5, indexes.getIndexes(5).size());
39  
40          assertEquals(0, indexes.getMinIndex(100));
41          assertEquals(50, indexes.getMaxIndex(100));
42          assertEquals(51, indexes.getIndexes(100).size());
43      }
44  
45      @Test
46      public void testGetIndexesForRange()
47      {
48          Indexes indexes = IndexParser.parse("0:5");
49          SortedSet<Integer> set = indexes.getIndexes(10);
50          assertEquals(6, set.size());
51          int val = 0;
52          for (Integer index : set)
53          {
54              assertEquals((Integer) val++, index);
55          }
56  
57          indexes = IndexParser.parse("12:");
58          set = indexes.getIndexes(10);
59          assertTrue(set.isEmpty());
60      }
61  
62      @Test
63      public void testIndexesOnEmptyList()
64      {
65          Indexes indexes = IndexParser.parse("0:50");
66          assertEquals(-1, indexes.getMinIndex(0));
67          assertEquals(-1, indexes.getMaxIndex(0));
68  
69          assertFalse(indexes.contains(-1,0));
70          assertFalse(indexes.contains(0,0));
71          assertFalse(indexes.contains(1,0));
72          assertFalse(indexes.contains(2,0));
73      }
74  
75      @Test
76      public void testSinglePositiveIndex()
77      {
78          Indexes indexes = IndexParser.parse("0");
79          assertFalse(indexes.isRange());
80          assertTrue(indexes.contains(0, 2));
81          assertFalse(indexes.contains(1, 2));
82  
83          assertEquals(-1, indexes.getMinIndex(0));
84          assertEquals(-1, indexes.getMaxIndex(0));
85  
86          assertEquals(0, indexes.getMinIndex(1));
87          assertEquals(0, indexes.getMaxIndex(1));
88  
89          indexes = IndexParser.parse("1");
90          assertFalse(indexes.contains(0, 2));
91          assertTrue(indexes.contains(1, 2));
92  
93          assertEquals(-1, indexes.getMinIndex(0));
94          assertEquals(-1, indexes.getMaxIndex(0));
95  
96          assertEquals(-1, indexes.getMinIndex(1));
97          assertEquals(-1, indexes.getMaxIndex(1));
98      }
99  
100     @Test
101     public void testSingleNegativeIndex()
102     {
103         Indexes indexes = IndexParser.parse("-1");
104         assertFalse(indexes.contains(0, 2));
105         assertTrue(indexes.contains(1, 2));
106 
107         indexes = IndexParser.parse("-2");
108         assertTrue(indexes.contains(0, 2));
109         assertFalse(indexes.contains(1, 2));
110     }
111 
112     @Test
113     public void testSimpleRange()
114     {
115         Indexes indexes = IndexParser.parse("0:3");
116         assertTrue(indexes.isRange());
117         assertTrue(indexes.contains(0, 3));
118         assertTrue(indexes.contains(1, 3));
119         assertTrue(indexes.contains(2, 3));
120         assertTrue(indexes.contains(3, 4));
121     }
122 
123     @Test
124     public void testRangeNonZeroStart()
125     {
126         Indexes indexes = IndexParser.parse("1:2");
127         assertTrue(indexes.isRange());
128         assertFalse(indexes.contains(0, 3));
129         assertTrue(indexes.contains(1, 3));
130         assertTrue(indexes.contains(2, 3));
131         assertFalse(indexes.contains(3, 4));
132     }
133 
134     @Test
135     public void testRangeSameStartEnd()
136     {
137         Indexes indexes = IndexParser.parse("2:2");
138         assertTrue(indexes.isRange());
139         assertFalse(indexes.contains(0, 3));
140         assertFalse(indexes.contains(1, 3));
141         assertTrue(indexes.contains(2, 3));
142         assertFalse(indexes.contains(3, 4));
143     }
144 
145     @Test
146     public void testRangeWithNoStart()
147     {
148         Indexes indexes = IndexParser.parse(":2");
149         assertTrue(indexes.isRange());
150         assertFalse(indexes.contains(0, 0));
151         assertEquals(-1,indexes.getMinIndex(0));
152         assertEquals(0,indexes.getMinIndex(1));
153         assertEquals(0,indexes.getMinIndex(2));
154         assertEquals(0,indexes.getMinIndex(99));
155         assertEquals(-1,indexes.getMaxIndex(0));
156         assertEquals(0,indexes.getMaxIndex(1));
157         assertEquals(1,indexes.getMaxIndex(2));
158         assertEquals(2,indexes.getMaxIndex(99));
159         assertTrue(indexes.contains(0, 3));
160         assertTrue(indexes.contains(1, 3));
161         assertTrue(indexes.contains(2, 3));
162         assertFalse(indexes.contains(3, 4));
163     }
164 
165     @Test
166     public void testRangeWithNoEnd()
167     {
168         Indexes indexes = IndexParser.parse("2:");
169         assertTrue(indexes.isRange());
170         assertEquals(-1,indexes.getMaxIndex(0));
171         assertEquals(-1,indexes.getMinIndex(0));
172         assertFalse(indexes.contains(0, 3));
173         assertFalse(indexes.contains(1, 3));
174         assertTrue(indexes.contains(2, 3));
175         assertTrue(indexes.contains(3, 4));
176     }
177 }