Skip to content

Commit ad1e914

Browse files
committed
feat: convenience methods for comparing versions
1 parent f6c7602 commit ad1e914

File tree

2 files changed

+80
-0
lines changed

2 files changed

+80
-0
lines changed

src/main/java/edu/kit/datamanager/ro_crate/special/CrateVersion.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,20 @@ private static CrateVersion crateVersionOfConformsTo(String conformsTo) {
9292
}
9393
return null;
9494
}
95+
96+
public boolean isGreaterThan(CrateVersion other) {
97+
return this.compareTo(other) > 0;
98+
}
99+
100+
public boolean isGreaterOrEqualThan(CrateVersion other) {
101+
return this.compareTo(other) >= 0;
102+
}
103+
104+
public boolean isLowerThan(CrateVersion other) {
105+
return this.compareTo(other) < 0;
106+
}
107+
108+
public boolean isLowerOrEqualThan(CrateVersion other) {
109+
return this.compareTo(other) <= 0;
110+
}
95111
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package edu.kit.datamanager.ro_crate.special;
2+
3+
import static org.junit.jupiter.api.Assertions.assertFalse;
4+
import static org.junit.jupiter.api.Assertions.assertNotNull;
5+
import static org.junit.jupiter.api.Assertions.assertTrue;
6+
7+
import java.util.Arrays;
8+
9+
import org.junit.jupiter.api.Test;
10+
11+
public class CrateVersionTest {
12+
13+
@Test
14+
public void testIsGreaterThan() {
15+
assertTrue(CrateVersion.V1P2_DRAFT.isGreaterThan(CrateVersion.V1P1));
16+
assertFalse(CrateVersion.V1P1.isGreaterThan(CrateVersion.V1P2_DRAFT));
17+
}
18+
19+
@Test
20+
public void testIsGreaterOrEqualThan() {
21+
assertTrue(CrateVersion.LATEST_UNSTABLE.isGreaterOrEqualThan(CrateVersion.LATEST_STABLE));
22+
assertTrue(CrateVersion.V1P2_DRAFT.isGreaterOrEqualThan(CrateVersion.V1P1));
23+
assertFalse(CrateVersion.V1P1.isGreaterOrEqualThan(CrateVersion.V1P2_DRAFT));
24+
}
25+
26+
@Test
27+
public void testIsLowerThan() {
28+
assertTrue(CrateVersion.V1P1.isLowerThan(CrateVersion.V1P2_DRAFT));
29+
assertFalse(CrateVersion.V1P2_DRAFT.isLowerThan(CrateVersion.V1P1));
30+
}
31+
32+
@Test
33+
public void testIsLowerOrEqualThan() {
34+
assertTrue(CrateVersion.LATEST_STABLE.isLowerOrEqualThan(CrateVersion.LATEST_UNSTABLE));
35+
assertTrue(CrateVersion.V1P1.isLowerOrEqualThan(CrateVersion.V1P2_DRAFT));
36+
assertFalse(CrateVersion.V1P2_DRAFT.isLowerOrEqualThan(CrateVersion.V1P1));
37+
}
38+
39+
@Test
40+
void testFromSpecUri() {
41+
// fromSpecUri has to work with the internally stored values
42+
Arrays.stream(CrateVersion.values())
43+
.forEach(version -> assertTrue(CrateVersion.fromSpecUri(version.conformsTo).isPresent()));
44+
// but it has to fail for other values
45+
assertTrue(CrateVersion.fromSpecUri("https://example.com/my/profile/1.1").isEmpty());
46+
}
47+
48+
@Test
49+
void testGetConformsToUri() {
50+
// getConformsToUri assumes internally to never throw, and therefore to never
51+
// return null.
52+
Arrays.stream(CrateVersion.values())
53+
.forEach(version -> assertNotNull(version));
54+
}
55+
56+
@Test
57+
void testIsStable() {
58+
assertTrue(CrateVersion.LATEST_STABLE.isStable());
59+
assertTrue(CrateVersion.V1P1.isStable());
60+
61+
assertFalse(CrateVersion.LATEST_UNSTABLE.isStable());
62+
assertFalse(CrateVersion.V1P2_DRAFT.isStable());
63+
}
64+
}

0 commit comments

Comments
 (0)