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 }