View Javadoc

1   package com.atlassian.plugin.util;
2   
3   import org.junit.Test;
4   
5   import static org.junit.Assert.*;
6   
7   public final class TestVersionRange
8   {
9       @Test
10      public void testSingleVersion()
11      {
12          final VersionRange range = VersionRange.single("2.0");
13          assertFalse(range.isInRange("1.0"));
14          assertTrue(range.isInRange("2.0"));
15          assertFalse(range.isInRange("3.0"));
16      }
17  
18      @Test
19      public void testActualRangeWithIncludes()
20      {
21          final VersionRange range = VersionRange.include("2.0").include("4.0");
22          assertFalse(range.isInRange("1.0"));
23          assertTrue(range.isInRange("2.0"));
24          assertTrue(range.isInRange("3.0"));
25          assertTrue(range.isInRange("4.0"));
26          assertFalse(range.isInRange("5.0"));
27      }
28  
29      @Test
30      public void testActualRangeWithIncludeExclude()
31      {
32          final VersionRange range = VersionRange.include("2.0").exclude("4.0");
33          assertFalse(range.isInRange("1.0"));
34          assertTrue(range.isInRange("2.0"));
35          assertTrue(range.isInRange("3.0"));
36          assertFalse(range.isInRange("4.0"));
37          assertFalse(range.isInRange("5.0"));
38      }
39  
40      @Test
41      public void testActualRangeWithExcludeInclude()
42      {
43          final VersionRange range = VersionRange.exclude("2.0").include("4.0");
44          assertFalse(range.isInRange("1.0"));
45          assertFalse(range.isInRange("2.0"));
46          assertTrue(range.isInRange("3.0"));
47          assertTrue(range.isInRange("4.0"));
48          assertFalse(range.isInRange("5.0"));
49      }
50  
51      @Test
52      public void testActualRangeWithExcludes()
53      {
54          final VersionRange range = VersionRange.exclude("2.0").exclude("4.0");
55          assertFalse(range.isInRange("1.0"));
56          assertFalse(range.isInRange("2.0"));
57          assertTrue(range.isInRange("3.0"));
58          assertFalse(range.isInRange("4.0"));
59          assertFalse(range.isInRange("5.0"));
60      }
61  
62      @Test
63      public void testLeftUnboundedRangeWithIncludes()
64      {
65          final VersionRange range = VersionRange.unbounded().include("4.0");
66  
67          assertTrue(range.isInRange("1.0"));
68          assertTrue(range.isInRange("2.0"));
69          assertTrue(range.isInRange("3.0"));
70          assertTrue(range.isInRange("4.0"));
71          assertFalse(range.isInRange("5.0"));
72      }
73  
74      @Test
75      public void testLeftUnboundedRangeWithExcludes()
76      {
77          final VersionRange range = VersionRange.unbounded().exclude("4.0");
78  
79          assertTrue(range.isInRange("1.0"));
80          assertTrue(range.isInRange("2.0"));
81          assertTrue(range.isInRange("3.0"));
82          assertFalse(range.isInRange("4.0"));
83          assertFalse(range.isInRange("5.0"));
84      }
85  
86      @Test
87      public void testRightUnboundedRangeWithIncludes()
88      {
89          final VersionRange range = VersionRange.include("2.0").unbounded();
90  
91          assertFalse(range.isInRange("1.0"));
92          assertTrue(range.isInRange("2.0"));
93          assertTrue(range.isInRange("3.0"));
94          assertTrue(range.isInRange("4.0"));
95          assertTrue(range.isInRange("5.0"));
96      }
97  
98      @Test
99      public void testRightUnboundedRangeWithExcludes()
100     {
101         final VersionRange range = VersionRange.exclude("2.0").unbounded();
102 
103         assertFalse(range.isInRange("1.0"));
104         assertFalse(range.isInRange("2.0"));
105         assertTrue(range.isInRange("3.0"));
106         assertTrue(range.isInRange("4.0"));
107         assertTrue(range.isInRange("5.0"));
108     }
109 
110     @Test
111     public void testOrRange()
112     {
113         final VersionRange range = VersionRange.single("2.0").or(VersionRange.single("4.0"));
114 
115         assertFalse(range.isInRange("1.0"));
116         assertTrue(range.isInRange("2.0"));
117         assertFalse(range.isInRange("3.0"));
118         assertTrue(range.isInRange("4.0"));
119         assertFalse(range.isInRange("5.0"));
120     }
121 
122     @Test(expected = IllegalStateException.class)
123     public void testAllUnboundedRangeWithExcludes()
124     {
125         VersionRange.unbounded().unbounded();
126     }
127 
128     @Test
129     public void testParseSimpleVersion()
130     {
131         assertEquals(VersionRange.include("1.0").unbounded(), VersionRange.parse("1.0"));
132     }
133 
134     @Test
135     public void testParseSingleVersion()
136     {
137         assertEquals(VersionRange.single("1.0"), VersionRange.parse("[1.0]"));
138     }
139 
140     @Test
141     public void testParseUnboundedLeftVersionRightIncluded()
142     {
143         assertEquals(VersionRange.unbounded().include("1.0"), VersionRange.parse("(,1.0]"));
144     }
145 
146     @Test
147     public void testParseUnboundedLeftVersionRightExcluded()
148     {
149         assertEquals(VersionRange.unbounded().exclude("1.0"), VersionRange.parse("(,1.0)"));
150     }
151 
152     @Test
153     public void testParseUnboundedRightVersionLeftIncluded()
154     {
155         assertEquals(VersionRange.include("1.0").unbounded(), VersionRange.parse("[1.0,)"));
156     }
157 
158     @Test
159     public void testParseUnboundedRightVersionLeftExcluded()
160     {
161         assertEquals(VersionRange.exclude("1.0").unbounded(), VersionRange.parse("(1.0,)"));
162     }
163 
164     @Test
165     public void testParseRightIncludedLeftIncluded()
166     {
167         assertEquals(VersionRange.include("1.0").include("2.0"), VersionRange.parse("[1.0,2.0]"));
168     }
169 
170     @Test
171     public void testParseRightExcludedLeftIncluded()
172     {
173         assertEquals(VersionRange.exclude("1.0").include("2.0"), VersionRange.parse("(1.0,2.0]"));
174     }
175 
176     @Test
177     public void testParseRightIncludedLeftExcluded()
178     {
179         assertEquals(VersionRange.include("1.0").exclude("2.0"), VersionRange.parse("[1.0,2.0)"));
180     }
181 
182     @Test
183     public void testParseRightExcludedLeftExcluded()
184     {
185         assertEquals(VersionRange.exclude("1.0").exclude("2.0"), VersionRange.parse("(1.0,2.0)"));
186     }
187 }