View Javadoc

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