11package net .thenextlvl .perworlds ;
22
33import net .thenextlvl .perworlds .group .PaperGroupSettings ;
4+ import org .jspecify .annotations .NullMarked ;
45import org .junit .jupiter .api .DisplayName ;
56import org .junit .jupiter .api .Test ;
67import org .junit .jupiter .params .ParameterizedTest ;
2324import static org .junit .jupiter .api .Assertions .assertFalse ;
2425import 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