forked from StarOpenSource/Engine
Add partial unit tests for some classes
Will continue creating unit tests tomorrow. These classes are now tested against: - base.Engine - base.EngineConfiguation - base.utility.Miscellaneous - base.utility.PlaceholderEngine
This commit is contained in:
parent
1797be0037
commit
4b5f9413c1
4 changed files with 223 additions and 0 deletions
|
@ -0,0 +1,87 @@
|
|||
package de.staropensource.sosengine.base.srctests;
|
||||
|
||||
import de.staropensource.sosengine.base.EngineConfiguration;
|
||||
import de.staropensource.sosengine.unittests.UnitLogger;
|
||||
import org.joor.Reflect;
|
||||
import org.junit.jupiter.api.*;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* Tests the class {@link EngineConfiguration}.
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
@DisplayName("EngineConfiguration")
|
||||
class EngineConfigurationTest {
|
||||
/**
|
||||
* The unit logger for this instance.
|
||||
*/
|
||||
private final UnitLogger logger = new UnitLogger(getClass());
|
||||
|
||||
/**
|
||||
* Initializes the {@link EngineConfiguration} class before each test.
|
||||
*/
|
||||
@BeforeEach
|
||||
void initializeClass() {
|
||||
new EngineConfiguration();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the {@link EngineConfiguration} {@code instance} to {@code null} after each test.
|
||||
*/
|
||||
@AfterEach
|
||||
void clearClass() {
|
||||
Reflect.on(EngineConfiguration.getInstance()).set("instance", null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@code loadConfiguration}.
|
||||
*/
|
||||
@Test
|
||||
@DisplayName("Method loadConfiguration")
|
||||
void testLoadConfiguration() {
|
||||
logger.testCall("testLoadConfiguration");
|
||||
|
||||
EngineConfiguration config = EngineConfiguration.getInstance();
|
||||
String group = EngineConfiguration.getGroup();
|
||||
String[] keys = new String[]{
|
||||
"debug",
|
||||
"debugShortcodeConverter",
|
||||
"errorShortcodeConverter",
|
||||
"loggerLevel",
|
||||
"loggerTemplate"
|
||||
};
|
||||
Map<String, Object> defaultValues = new HashMap<>();
|
||||
|
||||
// Load default configuration
|
||||
config.loadDefaultConfiguration();
|
||||
|
||||
// Save default values
|
||||
for (String setting : keys)
|
||||
defaultValues.put(setting, config.getSetting(setting));
|
||||
|
||||
// Load custom configuration
|
||||
Properties properties = new Properties();
|
||||
|
||||
properties.setProperty(group + "debug", "true");
|
||||
properties.setProperty(group + "debugShortcodeConverter", "true");
|
||||
properties.setProperty(group + "errorShortcodeConverter", "false");
|
||||
properties.setProperty(group + "loggerLevel", "diagnostic");
|
||||
properties.setProperty(group + "loggerTemplate", "%log_path% says: %message%");
|
||||
|
||||
config.loadConfiguration(properties);
|
||||
|
||||
// Compare custom values against default ones
|
||||
for (String setting : keys) {
|
||||
Object defaultValue = defaultValues.get(setting);
|
||||
Object customValue = config.getSetting(setting);
|
||||
|
||||
logger.diag("Comparing setting " + setting);
|
||||
assertNotEquals(defaultValue, customValue);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package de.staropensource.sosengine.base.srctests;
|
||||
|
||||
import de.staropensource.sosengine.base.Engine;
|
||||
import de.staropensource.sosengine.unittests.UnitLogger;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* Tests the class {@link EngineTest}.
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
@DisplayName("Engine")
|
||||
class EngineTest {
|
||||
/**
|
||||
* The {@link UnitLogger} for this instance.
|
||||
*/
|
||||
private final UnitLogger logger = new UnitLogger(getClass());
|
||||
|
||||
/**
|
||||
* Tests the constructor.
|
||||
*/
|
||||
@Test
|
||||
@DisplayName("Constructor")
|
||||
void testConstructor() {
|
||||
logger.testCall("testConstructor");
|
||||
|
||||
assertNotEquals(new Engine(), null, "Engine should not be null");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package de.staropensource.sosengine.base.srctests.utility;
|
||||
|
||||
import de.staropensource.sosengine.base.utility.Miscellaneous;
|
||||
import de.staropensource.sosengine.unittests.UnitLogger;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.CsvSource;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* Tests the class {@link Miscellaneous}.
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
@DisplayName("Miscellaneous")
|
||||
class MiscellaneousTest {
|
||||
/**
|
||||
* The {@link UnitLogger} for this instance.
|
||||
*/
|
||||
private final UnitLogger logger = new UnitLogger(getClass());
|
||||
|
||||
/**
|
||||
* Tests the method {@code padNumbers}.
|
||||
*/
|
||||
@ParameterizedTest
|
||||
@DisplayName("padNumbers")
|
||||
@CsvSource({
|
||||
"5, 3, 005",
|
||||
"15, 2, 15",
|
||||
"666, 2, 666",
|
||||
"5918, 6, 005918",
|
||||
"5819853, 10, 0005819853"
|
||||
})
|
||||
void testPadNumbers(int number, int length, String expected) {
|
||||
logger.testCall("testPadNumbers", number, length, expected);
|
||||
String result = Miscellaneous.padNumbers(number, length);
|
||||
assertEquals(result, expected, "Result \"" + result + "\" does not match expected output \"" + expected + "\"");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
package de.staropensource.sosengine.base.srctests.utility;
|
||||
|
||||
import de.staropensource.sosengine.base.classes.Placeholder;
|
||||
import de.staropensource.sosengine.base.utility.PlaceholderEngine;
|
||||
import de.staropensource.sosengine.unittests.UnitLogger;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.CsvSource;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* Tests the class {@link PlaceholderEngine}.
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
@DisplayName("PlaceholderEngine")
|
||||
class PlaceholderEngineTest {
|
||||
/**
|
||||
* The {@link UnitLogger} for this instance.
|
||||
*/
|
||||
private final UnitLogger logger = new UnitLogger(getClass());
|
||||
|
||||
/**
|
||||
* Tests the method {@code process}.
|
||||
*/
|
||||
@ParameterizedTest
|
||||
@DisplayName("process")
|
||||
@CsvSource({
|
||||
"Test placeholder %test%, Test placeholder TEST",
|
||||
"%invalid% must be invalid, %invalid% must be invalid",
|
||||
"This %status%!, This works!"
|
||||
})
|
||||
void testProcess(String text, String expected) {
|
||||
logger.testCall("testProcess", text, expected);
|
||||
|
||||
List<Placeholder> placeholders = new ArrayList<>();
|
||||
placeholders.add(new Placeholder() {
|
||||
@Override
|
||||
public @NotNull String getName() {
|
||||
return "test";
|
||||
}
|
||||
@Override
|
||||
public @NotNull String replace(@NotNull String text) {
|
||||
return text.replace("%" + getName() + "%", "TEST");
|
||||
}
|
||||
});
|
||||
placeholders.add(new Placeholder() {
|
||||
@Override
|
||||
public @NotNull String getName() {
|
||||
return "status";
|
||||
}
|
||||
@Override
|
||||
public @NotNull String replace(@NotNull String text) {
|
||||
return text.replace("%" + getName() + "%", "works");
|
||||
}
|
||||
});
|
||||
|
||||
text = PlaceholderEngine.getInstance().process(text, placeholders);
|
||||
|
||||
assertEquals(text, expected);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue