Skip to content

Commit 5bb263f

Browse files
test: config
1 parent 9a70fb9 commit 5bb263f

File tree

12 files changed

+537
-54
lines changed

12 files changed

+537
-54
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,17 @@ What is modulo...
6464

6565
@Override
6666
protected void onLoad() {
67-
ModuloAPI.getLogger().info(this, "HelloModule is loaded");
67+
info("HelloModule is loaded");
6868
}
6969

7070
@Override
7171
protected void onStart() {
72-
ModuloAPI.getLogger().info(this, "HelloModule is started");
72+
info("HelloModule is started");
7373
}
7474

7575
@Override
7676
protected void onStop() {
77-
ModuloAPI.getLogger().info(this, "HelloModule is stopped");
77+
info("HelloModule is stopped");
7878
}
7979

8080
}
@@ -106,7 +106,7 @@ What is modulo...
106106
*If you use gradle, you can use the [ModuloGradleApplication](https://github.com/ChillyCheesy/ModuloGradleApplication).*
107107

108108
## 📕 How to use it <a id="HowToUseIt"></a>
109-
See the documentation page [here](https://chillycheesy.github.io/Modulo/).
109+
See the Java documentation page [here](https://chillycheesy.github.io/Modulo/).
110110
You can also check the [wiki](https://github.com/ChillyCheesy/Modulo/wiki).
111111

112112
## 🌶 🧀 See also <a id="SeeAlso"></a>

modulo-api/src/main/java/com/chillycheesy/modulo/config/Configuration.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,25 @@ public boolean isModified() {
255255
return !properties.equals(defaultProperties);
256256
}
257257

258+
public void forEach(BiConsumer<String, String> setProperty) {
259+
getMergedProperties().entrySet().stream()
260+
.collect(Collectors.toMap(Map.Entry::getKey, e -> String.valueOf(e.getValue())))
261+
.forEach(setProperty);
262+
}
263+
264+
@Override
265+
public boolean equals(Object o) {
266+
if (this == o) return true;
267+
if (o == null || getClass() != o.getClass()) return false;
268+
Configuration that = (Configuration) o;
269+
return Objects.equals(properties, that.properties) && Objects.equals(defaultProperties, that.defaultProperties);
270+
}
271+
272+
@Override
273+
public int hashCode() {
274+
return Objects.hash(properties, defaultProperties);
275+
}
276+
258277
@Override
259278
public String toString() {
260279
return "Configuration{" +
@@ -263,9 +282,5 @@ public String toString() {
263282
'}';
264283
}
265284

266-
public void forEach(BiConsumer<String, String> setProperty) {
267-
getMergedProperties().entrySet().stream()
268-
.collect(Collectors.toMap(Map.Entry::getKey, e -> String.valueOf(e.getValue())))
269-
.forEach(setProperty);
270-
}
285+
271286
}

modulo-api/src/main/java/com/chillycheesy/modulo/config/ConfigurationLoader.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
package com.chillycheesy.modulo.config;
22

33
import com.chillycheesy.modulo.modules.Module;
4-
import com.chillycheesy.modulo.modules.ModuloEntity;
4+
import com.chillycheesy.modulo.modules.ModuleEntityAdapter;
55

66
import java.util.Objects;
77

8-
public class ConfigurationLoader implements ModuloEntity {
8+
public class ConfigurationLoader extends ModuleEntityAdapter {
99

1010
private static final String DEFAULT_CONFIG_PATH = "config.yml";
1111

1212
protected ConfigurationFactory configurationFactory;
1313
protected ConfigurationLoaderStrategy loaderStrategy;
1414
protected Configuration defaultConfiguration;
1515

16+
protected boolean autoSave = true;
17+
1618
public ConfigurationLoader(ConfigurationFactory configurationFactory, ConfigurationLoaderStrategy loaderStrategy) {
1719
this.configurationFactory = configurationFactory;
1820
this.loaderStrategy = loaderStrategy;
@@ -41,19 +43,21 @@ public void load(Module module) {
4143
defaultConfiguration = configurationFactory.createConfiguration(loaderStrategy);
4244
}
4345

44-
@Override
45-
public void start() { }
46-
4746
@Override
4847
public void stop() {
49-
configurationFactory.saveConfiguration(defaultConfiguration, loaderStrategy);
48+
if (autoSave)
49+
configurationFactory.saveConfiguration(defaultConfiguration, loaderStrategy);
5050
}
5151

5252
public void updateConfigurationLoader(ConfigurationLoader configLoader) {
5353
this.configurationFactory = configLoader.configurationFactory;
5454
this.loaderStrategy = configLoader.loaderStrategy;
5555
}
5656

57+
public void enableAutoSave(boolean autoSave) {
58+
this.autoSave = autoSave;
59+
}
60+
5761
public Configuration getConfiguration() {
5862
return defaultConfiguration;
5963
}

modulo-api/src/main/java/com/chillycheesy/modulo/config/JacksonConfigurationStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public void saveConfiguration(Configuration configuration, OutputStream outputSt
3838

3939
private ObjectNode buildNode(Configuration configuration) {
4040
final Map<String, Object> map = configuration.getMergedProperties();
41-
return buildNode(configuration, map, "");
41+
return buildNode(configuration, map);
4242
}
4343

4444
private ObjectNode buildNode(Configuration configuration, Map<String, Object> map) {
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.chillycheesy.modulo.modules;
2+
3+
public class ModuleEntityAdapter implements ModuloEntity {
4+
5+
@Override
6+
public void load(Module module) { }
7+
8+
@Override
9+
public void start() { }
10+
11+
@Override
12+
public void stop() { }
13+
14+
}
Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
package com.chillycheesy.modulo.config;
2+
3+
import org.junit.jupiter.api.BeforeEach;
4+
import org.junit.jupiter.api.Test;
5+
6+
import java.util.ArrayList;
7+
import java.util.Arrays;
8+
9+
import static org.junit.jupiter.api.Assertions.*;
10+
11+
public class ConfigurationTest {
12+
13+
private Configuration configuration;
14+
15+
@BeforeEach
16+
public void init() { configuration = new Configuration(); }
17+
18+
@Test
19+
public void testGet() {
20+
assertNull(configuration.get("key"));
21+
configuration.set("key", "value");
22+
assertEquals("value", configuration.get("key"));
23+
}
24+
25+
@Test
26+
public void testGetString() {
27+
assertEquals("", configuration.getString("key"));
28+
configuration.set("key", "value");
29+
assertEquals("value", configuration.getString("key"));
30+
}
31+
32+
@Test
33+
public void testGetInteger() {
34+
assertEquals(0, configuration.getInteger("key"));
35+
configuration.set("key", 1);
36+
assertEquals(1, configuration.getInteger("key"));
37+
}
38+
39+
@Test
40+
public void testGetDouble() {
41+
assertEquals(0.0, configuration.getDouble("key"));
42+
configuration.set("key", 1.0);
43+
assertEquals(1.0, configuration.getDouble("key"));
44+
}
45+
46+
@Test
47+
public void testGetBoolean() {
48+
assertEquals(false, configuration.getBoolean("key"));
49+
configuration.set("key", true);
50+
assertTrue(configuration.getBoolean("key"));
51+
}
52+
53+
@Test
54+
public void testGetList() {
55+
assertEquals(0, configuration.getList("key").size());
56+
configuration.set("key", new ArrayList<>());
57+
assertEquals(0, configuration.getList("key").size());
58+
configuration.set("key", Arrays.asList("a", "b", "c"));
59+
assertEquals(3, configuration.getList("key").size());
60+
}
61+
62+
@Test
63+
public void testGetWithDefaultValue() {
64+
assertEquals("wicket the Ewok", configuration.getString("ewok", "wicket the Ewok"));
65+
configuration.set("ewok", "chewbacca");
66+
assertEquals("chewbacca", configuration.getString("ewok", "wicket the Ewok"));
67+
}
68+
69+
@Test
70+
public void testGetStringWithDefaultValue() {
71+
assertEquals("wicket the Ewok", configuration.getString("ewok", "wicket the Ewok"));
72+
configuration.set("ewok", "chewbacca");
73+
assertEquals("chewbacca", configuration.getString("ewok", "wicket the Ewok"));
74+
}
75+
76+
@Test
77+
public void testGetIntegerWithDefaultValue() {
78+
assertEquals(1, configuration.getInteger("ewok", 1));
79+
configuration.set("ewok", 2);
80+
assertEquals(2, configuration.getInteger("ewok", 1));
81+
}
82+
83+
@Test
84+
public void testGetDoubleWithDefaultValue() {
85+
assertEquals(1.0, configuration.getDouble("ewok", 1.0));
86+
configuration.set("ewok", 2.0);
87+
assertEquals(2.0, configuration.getDouble("ewok", 1.0));
88+
}
89+
90+
@Test
91+
public void testGetBooleanWithDefaultValue() {
92+
assertTrue(configuration.getBoolean("ewok", true));
93+
configuration.set("ewok", false);
94+
assertFalse(configuration.getBoolean("ewok", true));
95+
}
96+
97+
@Test
98+
public void testGetListWithDefaultValue() {
99+
assertEquals(0, configuration.getList("ewok", new ArrayList<>()).size());
100+
configuration.set("ewok", Arrays.asList("a", "b", "c"));
101+
assertEquals(3, configuration.getList("ewok", new ArrayList<>()).size());
102+
}
103+
104+
105+
@Test
106+
public void testSet() {
107+
configuration.set("key", "value");
108+
assertEquals("value", configuration.get("key"));
109+
configuration.set("key", "newValue");
110+
assertEquals("newValue", configuration.get("key"));
111+
}
112+
113+
@Test
114+
public void testGetDefaultValue() {
115+
configuration.setDefault("key", "value");
116+
assertEquals("value", configuration.getDefault("key"));
117+
assertEquals("value", configuration.get("key"));
118+
configuration.set("key", "newValue");
119+
assertEquals("newValue", configuration.get("key"));
120+
}
121+
122+
@Test
123+
public void testGetDefaultStringValue() {
124+
configuration.setDefault("key", "value");
125+
assertEquals("value", configuration.getDefaultString("key"));
126+
assertEquals("value", configuration.getString("key"));
127+
configuration.set("key", "newValue");
128+
assertEquals("newValue", configuration.getString("key"));
129+
}
130+
131+
@Test
132+
public void testGetDefaultIntegerValue() {
133+
configuration.setDefault("key", 1);
134+
assertEquals(1, configuration.getDefaultInteger("key"));
135+
assertEquals(1, configuration.getInteger("key"));
136+
configuration.set("key", 2);
137+
assertEquals(2, configuration.getInteger("key"));
138+
}
139+
140+
@Test
141+
public void testGetDefaultDoubleValue() {
142+
configuration.setDefault("key", 1.0);
143+
assertEquals(1.0, configuration.getDefaultDouble("key"));
144+
assertEquals(1.0, configuration.getDouble("key"));
145+
configuration.set("key", 2.0);
146+
assertEquals(2.0, configuration.getDouble("key"));
147+
}
148+
149+
@Test
150+
public void testGetDefaultBooleanValue() {
151+
configuration.setDefault("key", true);
152+
assertTrue(configuration.getDefaultBoolean("key"));
153+
assertTrue(configuration.getBoolean("key"));
154+
configuration.set("key", false);
155+
assertFalse(configuration.getBoolean("key"));
156+
}
157+
158+
@Test
159+
public void testGetDefaultListValue() {
160+
configuration.setDefault("key", Arrays.asList("a", "b", "c"));
161+
assertEquals(3, configuration.getDefaultList("key", new ArrayList<>()).size());
162+
assertEquals(3, configuration.getList("key").size());
163+
configuration.set("key", Arrays.asList("d", "e", "f", "g"));
164+
assertEquals(4, configuration.getList("key").size());
165+
}
166+
167+
@Test
168+
public void testClear() {
169+
configuration.set("key", "value");
170+
assertEquals("value", configuration.get("key"));
171+
configuration.clear();
172+
assertNull(configuration.get("key"));
173+
}
174+
175+
@Test
176+
public void testClearDefault() {
177+
configuration.setDefault("key", "value");
178+
assertEquals("value", configuration.getDefault("key"));
179+
configuration.clearDefaults();
180+
assertNull(configuration.getDefault("key"));
181+
}
182+
183+
@Test
184+
public void testClearAll() {
185+
configuration.set("key", "value");
186+
assertEquals("value", configuration.get("key"));
187+
configuration.setDefault("key", "value2");
188+
configuration.clearAll();
189+
assertNull(configuration.getDefault("key"));
190+
assertNull(configuration.get("key"));
191+
}
192+
193+
}

0 commit comments

Comments
 (0)