Skip to content

Commit e89ea00

Browse files
committed
Prepare classes
Add ReleaseVersionTest Add Lombok
1 parent 9a0f3ab commit e89ea00

8 files changed

Lines changed: 298 additions & 0 deletions

File tree

.idea/compiler.xml

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build.gradle

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ repositories {
1212
dependencies {
1313
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.2'
1414
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.2'
15+
16+
compileOnly 'org.projectlombok:lombok:1.18.20'
17+
annotationProcessor 'org.projectlombok:lombok:1.18.20'
18+
19+
testCompileOnly 'org.projectlombok:lombok:1.18.20'
20+
testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'
1521
}
1622

1723
test {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.lezurex.githubversionchecker;
2+
3+
public class GithubVersionChecker {
4+
5+
/**
6+
* Username where the targeted repo is located
7+
*/
8+
private final String username;
9+
/**
10+
* Name of the repository on GitHub
11+
*/
12+
private final String repo;
13+
14+
/**
15+
* @param username Username where the targeted repo is located
16+
* @param repo Name of the repository on GitHub
17+
*/
18+
public GithubVersionChecker(String username, String repo) {
19+
this.username = username;
20+
this.repo = repo;
21+
}
22+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package com.lezurex.githubversionchecker;
2+
3+
import com.lezurex.githubversionchecker.exceptions.InvalidVersionString;
4+
import lombok.Getter;
5+
import lombok.Setter;
6+
7+
import java.io.Serializable;
8+
import java.util.regex.Matcher;
9+
import java.util.regex.Pattern;
10+
11+
@Getter
12+
@Setter
13+
public class ReleaseVersion implements Comparable<ReleaseVersion>, Serializable {
14+
15+
private int major = 0;
16+
private int minor = 0;
17+
private int patch = 0;
18+
19+
public ReleaseVersion(int major) {
20+
this.major = major;
21+
}
22+
23+
public ReleaseVersion(int major, int minor) {
24+
this.major = major;
25+
this.minor = minor;
26+
}
27+
28+
public ReleaseVersion(int major, int minor, int patch) {
29+
this.major = major;
30+
this.minor = minor;
31+
this.patch = patch;
32+
}
33+
34+
public ReleaseVersion(String versionString) {
35+
36+
}
37+
38+
private void parseVersionString(String s) {
39+
final Pattern pattern = Pattern.compile("[vV]?(\\d+)\\.(\\d+)\\.(\\d+)");
40+
final Matcher matcher = pattern.matcher(s);
41+
42+
if (matcher.find()) {
43+
for (int i = 1; i < matcher.groupCount(); i++) {
44+
if (i == 1) this.major = Integer.parseInt(matcher.group());
45+
if (i == 2) this.minor = Integer.parseInt(matcher.group());
46+
if (i == 3) this.patch = Integer.parseInt(matcher.group());
47+
}
48+
} else throw new InvalidVersionString(s);
49+
}
50+
51+
@Override
52+
public int compareTo(ReleaseVersion other) {
53+
if (this.major > other.major) return 1;
54+
if (this.major < other.major) return -1;
55+
56+
if (this.minor > other.minor) return 1;
57+
if (this.minor < other.minor) return -1;
58+
59+
if (this.patch > other.patch) return 1;
60+
if (this.patch < other.patch) return -1;
61+
return 0;
62+
}
63+
64+
@Override
65+
public String toString() {
66+
return String.format("v%d.%d.%d", major, minor, patch);
67+
}
68+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.lezurex.githubversionchecker;
2+
3+
public enum VersionState {
4+
5+
UP_TO_DATE,
6+
OUTDATED,
7+
NEWER
8+
9+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.lezurex.githubversionchecker.exceptions;
2+
3+
import lombok.Getter;
4+
5+
@Getter
6+
public class InvalidVersionString extends RuntimeException {
7+
8+
private final String versionString;
9+
10+
public InvalidVersionString(String versionString) {
11+
this.versionString = versionString;
12+
}
13+
14+
@Override
15+
public String getMessage() {
16+
return String.format("Unable to parse version string: \"%s\"%nPlease report this error if you believe this string should be valid!", versionString);
17+
}
18+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.lezurex.githubversionchecker.exceptions;
2+
3+
import lombok.Getter;
4+
5+
@Getter
6+
public class RepoNotFoundException extends RuntimeException {
7+
8+
private final String username;
9+
private final String repo;
10+
11+
public RepoNotFoundException(String username, String repo) {
12+
this.username = username;
13+
this.repo = repo;
14+
}
15+
16+
@Override
17+
public String getMessage() {
18+
return String.format("Repo %s/%s couldn't be found on GitHub! Does it exist and", username, repo);
19+
}
20+
}
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
package com.lezurex.githubversionchecker;
2+
3+
import org.junit.jupiter.api.DisplayName;
4+
import org.junit.jupiter.api.Test;
5+
6+
import static org.junit.jupiter.api.Assertions.*;
7+
8+
class ReleaseVersionTest {
9+
10+
@Test
11+
@DisplayName("Major greater")
12+
void majorGreater() {
13+
ReleaseVersion v1;
14+
ReleaseVersion v2;
15+
16+
v1 = new ReleaseVersion(2);
17+
v2 = new ReleaseVersion(1);
18+
assertEquals(1, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
19+
20+
v1 = new ReleaseVersion(10, 2);
21+
v2 = new ReleaseVersion(9, 99);
22+
assertEquals(1, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
23+
24+
v1 = new ReleaseVersion(5, 3, 10);
25+
v2 = new ReleaseVersion(4, 89, 4);
26+
assertEquals(1, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
27+
}
28+
29+
@Test
30+
@DisplayName("Major smaller")
31+
void majorSmaller() {
32+
ReleaseVersion v1;
33+
ReleaseVersion v2;
34+
35+
v1 = new ReleaseVersion(1);
36+
v2 = new ReleaseVersion(2);
37+
assertEquals(-1, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
38+
39+
v1 = new ReleaseVersion(9, 99);
40+
v2 = new ReleaseVersion(10, 2);
41+
assertEquals(-1, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
42+
43+
v1 = new ReleaseVersion(4, 89, 4);
44+
v2 = new ReleaseVersion(5, 3, 10);
45+
assertEquals(-1, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
46+
}
47+
48+
@Test
49+
@DisplayName("Major equals")
50+
void majorEquals() {
51+
ReleaseVersion v1;
52+
ReleaseVersion v2;
53+
54+
v1 = new ReleaseVersion(1);
55+
v2 = new ReleaseVersion(1);
56+
assertEquals(0, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
57+
58+
v1 = new ReleaseVersion(9, 99);
59+
v2 = new ReleaseVersion(9, 99);
60+
assertEquals(0, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
61+
62+
v1 = new ReleaseVersion(4, 89, 4);
63+
v2 = new ReleaseVersion(4, 89, 4);
64+
assertEquals(0, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
65+
}
66+
67+
@Test
68+
@DisplayName("Minor greater")
69+
void minorGreater() {
70+
ReleaseVersion v1;
71+
ReleaseVersion v2;
72+
73+
v1 = new ReleaseVersion(1, 3);
74+
v2 = new ReleaseVersion(1, 1);
75+
assertEquals(1, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
76+
77+
v1 = new ReleaseVersion(10, 99, 10);
78+
v2 = new ReleaseVersion(10, 2, 10);
79+
assertEquals(1, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
80+
}
81+
82+
@Test
83+
@DisplayName("Minor smaller")
84+
void minorSmaller() {
85+
ReleaseVersion v1;
86+
ReleaseVersion v2;
87+
88+
v1 = new ReleaseVersion(1, 1);
89+
v2 = new ReleaseVersion(1, 3);
90+
assertEquals(-1, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
91+
92+
v1 = new ReleaseVersion(10, 2, 10);
93+
v2 = new ReleaseVersion(10, 99, 10);
94+
assertEquals(-1, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
95+
}
96+
97+
@Test
98+
@DisplayName("Minor equals")
99+
void minorEquals() {
100+
ReleaseVersion v1;
101+
ReleaseVersion v2;
102+
103+
v1 = new ReleaseVersion(1, 3);
104+
v2 = new ReleaseVersion(1, 3);
105+
assertEquals(0, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
106+
107+
v1 = new ReleaseVersion(9, 99, 10);
108+
v2 = new ReleaseVersion(9, 99, 10);
109+
assertEquals(0, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
110+
}
111+
112+
@Test
113+
@DisplayName("Patch greater")
114+
void patchGreater() {
115+
ReleaseVersion v1;
116+
ReleaseVersion v2;
117+
118+
v1 = new ReleaseVersion(10, 99, 12);
119+
v2 = new ReleaseVersion(10, 99, 10);
120+
assertEquals(1, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
121+
}
122+
123+
@Test
124+
@DisplayName("Minor smaller")
125+
void patchSmaller() {
126+
ReleaseVersion v1;
127+
ReleaseVersion v2;
128+
129+
v1 = new ReleaseVersion(10, 99, 10);
130+
v2 = new ReleaseVersion(10, 99, 12);
131+
assertEquals(-1, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
132+
}
133+
134+
@Test
135+
@DisplayName("Minor equals")
136+
void patchEquals() {
137+
ReleaseVersion v1;
138+
ReleaseVersion v2;
139+
140+
v1 = new ReleaseVersion(9, 99, 10);
141+
v2 = new ReleaseVersion(9, 99, 10);
142+
assertEquals(0, v1.compareTo(v2), String.format("%s vs %s failed", v1, v2));
143+
}
144+
145+
}

0 commit comments

Comments
 (0)