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