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 }