Skip to content

Commit bb8728a

Browse files
committed
Add "copy from" test
1 parent 683103e commit bb8728a

1 file changed

Lines changed: 33 additions & 18 deletions

File tree

src/test/java/net/thenextlvl/perworlds/GroupSettingsTest.java

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package net.thenextlvl.perworlds;
22

33
import net.thenextlvl.perworlds.group.PaperGroupSettings;
4+
import org.jspecify.annotations.NullMarked;
45
import org.junit.jupiter.api.DisplayName;
56
import org.junit.jupiter.api.Test;
67
import org.junit.jupiter.params.ParameterizedTest;
@@ -23,23 +24,37 @@
2324
import static org.junit.jupiter.api.Assertions.assertFalse;
2425
import static org.junit.jupiter.api.Assertions.assertTrue;
2526

26-
public class GroupSettingsTest {
27+
@NullMarked
28+
public final class GroupSettingsTest {
2729
@Test
2830
@DisplayName("settings providers count")
2931
public void testSettingsProvidersCount() {
30-
var count = Arrays.stream(GroupSettings.class.getMethods())
32+
final var count = Arrays.stream(GroupSettings.class.getMethods())
3133
.filter(method -> method.getReturnType() != Void.class)
3234
.filter(method -> method.getParameterCount() == 1)
3335
.filter(method -> method.getParameterTypes()[0] == boolean.class)
3436
.count();
3537
assertEquals(settings.size(), count, "Found more settings than expected");
3638
}
3739

40+
@Test
41+
@DisplayName("Copy from")
42+
public void testCopyFrom() {
43+
final var source = new PaperGroupSettings();
44+
final var target = new PaperGroupSettings();
45+
settings.forEach((s, setting) -> {
46+
setting.setter().accept(source, false);
47+
setting.setter().accept(target, true);
48+
target.copyFrom(source);
49+
assertFalse(setting.getter().apply(target), "Copy did not properly update its value: " + s);
50+
});
51+
}
52+
3853
@ParameterizedTest
3954
@MethodSource("settingsProvider")
4055
@DisplayName("Getters and Setters")
41-
public void testSettings(BiConsumer<GroupSettings, Boolean> setter, Function<GroupSettings, Boolean> getter) {
42-
var settings = new PaperGroupSettings();
56+
public void testSettings(final BiConsumer<GroupSettings, Boolean> setter, final Function<GroupSettings, Boolean> getter) {
57+
final var settings = new PaperGroupSettings();
4358
setter.accept(settings, true);
4459
assertTrue(getter.apply(settings), "Setter did not properly update its value");
4560
setter.accept(settings, false);
@@ -49,18 +64,18 @@ public void testSettings(BiConsumer<GroupSettings, Boolean> setter, Function<Gro
4964
@Test
5065
@DisplayName("group option command")
5166
public void testAllOptionsRegistered() throws Exception {
52-
var path = Path.of("src/main/java/net/thenextlvl/perworlds/command/GroupOptionCommand.java");
53-
var content = Files.readAllLines(path, StandardCharsets.UTF_8).stream()
67+
final var path = Path.of("src/main/java/net/thenextlvl/perworlds/command/GroupOptionCommand.java");
68+
final var content = Files.readAllLines(path, StandardCharsets.UTF_8).stream()
5469
.map(String::strip)
5570
.filter(s -> !s.isEmpty() && !s.startsWith("//"))
5671
.collect(Collectors.joining("\n"));
5772

58-
var pattern = Pattern.compile("option\\(\"([^\"]+)\"");
59-
var matcher = pattern.matcher(content);
60-
var options = new HashSet<>(settings.keySet());
73+
final var pattern = Pattern.compile("option\\(\"([^\"]+)\"");
74+
final var matcher = pattern.matcher(content);
75+
final var options = new HashSet<>(settings.keySet());
6176

6277
while (matcher.find()) {
63-
var option = matcher.group(1);
78+
final var option = matcher.group(1);
6479
assertTrue(options.remove(option), "Unknown option '" + option + "'");
6580
}
6681

@@ -71,19 +86,19 @@ public void testAllOptionsRegistered() throws Exception {
7186
@Test
7287
@DisplayName("option name matches method references")
7388
public void testOptionNameMatchesMethodReferences() throws Exception {
74-
var path = Path.of("src/main/java/net/thenextlvl/perworlds/command/GroupOptionCommand.java");
75-
var content = Files.readAllLines(path, StandardCharsets.UTF_8).stream()
89+
final var path = Path.of("src/main/java/net/thenextlvl/perworlds/command/GroupOptionCommand.java");
90+
final var content = Files.readAllLines(path, StandardCharsets.UTF_8).stream()
7691
.map(String::strip)
7792
.filter(s -> !s.isEmpty() && !s.startsWith("//"))
7893
.collect(Collectors.joining("\n"));
7994

80-
var pattern = Pattern.compile("option\\(\"([^\"]+)\"\\s*,\\s*GroupSettings::([a-zA-Z0-9_]+)\\s*,\\s*GroupSettings::([a-zA-Z0-9_]+)");
81-
var matcher = pattern.matcher(content);
95+
final var pattern = Pattern.compile("option\\(\"([^\"]+)\"\\s*,\\s*GroupSettings::([a-zA-Z0-9_]+)\\s*,\\s*GroupSettings::([a-zA-Z0-9_]+)");
96+
final var matcher = pattern.matcher(content);
8297

8398
while (matcher.find()) {
84-
var optionName = matcher.group(1);
85-
var getter = matcher.group(2);
86-
var setter = matcher.group(3);
99+
final var optionName = matcher.group(1);
100+
final var getter = matcher.group(2);
101+
final var setter = matcher.group(3);
87102
assertEquals(optionName, getter, "Option name and getter should match: \"" + optionName + "\" != \"" + getter + "\"");
88103
assertEquals(optionName, setter, "Option name and setter should match: \"" + optionName + "\" != \"" + setter + "\"");
89104
}
@@ -151,7 +166,7 @@ private static Stream<Arguments> settingsProvider() {
151166
));
152167
}
153168

154-
private static Arguments arguments(String name, BiConsumer<GroupSettings, Boolean> setter, Function<GroupSettings, Boolean> getter) {
169+
private static Arguments arguments(final String name, final BiConsumer<GroupSettings, Boolean> setter, final Function<GroupSettings, Boolean> getter) {
155170
return Arguments.argumentSet(name, setter, getter);
156171
}
157172
}

0 commit comments

Comments
 (0)