104 lines
4.6 KiB
Java
104 lines
4.6 KiB
Java
package io.gitlab.jfronny.respackopts;
|
|
|
|
import com.google.gson.reflect.TypeToken;
|
|
import io.gitlab.jfronny.respackopts.model.ConfigFile;
|
|
import io.gitlab.jfronny.respackopts.model.condition.Condition;
|
|
import org.junit.jupiter.api.BeforeAll;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import java.nio.file.Paths;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
|
|
import static io.gitlab.jfronny.respackopts.Respackopts.SAVE_ACTIONS;
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
class ConditionSerializationTest {
|
|
@BeforeAll
|
|
static void initialize() {
|
|
Respackopts.LOGGER.info("Expected error end");
|
|
Respackopts.FALLBACK_CONF_DIR = Paths.get("./test");
|
|
Respackopts.CONFIG = new ConfigFile();
|
|
SAVE_ACTIONS.add(() -> Respackopts.LOGGER.info("Save"));
|
|
Respackopts.LOGGER.info(Respackopts.FALLBACK_CONF_DIR);
|
|
}
|
|
|
|
@Test
|
|
void gsonListOrder() {
|
|
String[] expected = new String[] {"one", "two", "three", "zero", "76"};
|
|
String gson = "[\"one\", \"two\", \"three\", \"zero\", \"76\"]";
|
|
List<String> parsed = Respackopts.GSON.fromJson(gson, new TypeToken<List<String>>(){}.getType());
|
|
int i = 0;
|
|
for (String s : parsed) {
|
|
assertEquals(s, expected[i++]);
|
|
}
|
|
}
|
|
|
|
@Test
|
|
void gsonSetOrder() {
|
|
String[] expected = new String[] {"one", "two", "three", "zero", "76"};
|
|
String gson = "[\"one\", \"two\", \"three\", \"zero\", \"76\"]";
|
|
Set<String> parsed = Respackopts.GSON.fromJson(gson, new TypeToken<Set<String>>(){}.getType());
|
|
int i = 0;
|
|
for (String s : parsed) {
|
|
assertEquals(s, expected[i++]);
|
|
}
|
|
}
|
|
|
|
@Test
|
|
void gsonSingleEntryList() {
|
|
String gson = "\"someText\"";
|
|
List<String> parsed = Respackopts.GSON.fromJson(gson, new TypeToken<List<String>>(){}.getType());
|
|
assertEquals(parsed.size(), 1);
|
|
for (String s : parsed) {
|
|
assertEquals(s, "someText");
|
|
}
|
|
}
|
|
|
|
@Test
|
|
void gsonSingleEntrySet() {
|
|
String gson = "\"someText\"";
|
|
Set<String> parsed = Respackopts.GSON.fromJson(gson, new TypeToken<Set<String>>(){}.getType());
|
|
assertEquals(parsed.size(), 1);
|
|
for (String s : parsed) {
|
|
assertEquals(s, "someText");
|
|
}
|
|
}
|
|
|
|
@Test
|
|
void gsonConditionSimple() {
|
|
assertTrue(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("true", Condition.class).evaluate("test")));
|
|
assertTrue(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("{\"not\": false}", Condition.class).evaluate("test")));
|
|
assertTrue(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("[true, {\"not\": false}]", Condition.class).evaluate("test")));
|
|
assertFalse(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("[true, {\"not\": true}]", Condition.class).evaluate("test")));
|
|
}
|
|
|
|
@Test
|
|
void gsonConditionXor() {
|
|
assertTrue(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("{\"xor\": [true, false]}", Condition.class).evaluate("test")));
|
|
assertFalse(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("{\"xor\": [true, true]}", Condition.class).evaluate("test")));
|
|
assertFalse(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("{\"xor\": [false, false]}", Condition.class).evaluate("test")));
|
|
}
|
|
|
|
@Test
|
|
void gsonConditionOr() {
|
|
assertTrue(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("{\"or\": [true, false]}", Condition.class).evaluate("test")));
|
|
assertTrue(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("{\"or\": [true, true]}", Condition.class).evaluate("test")));
|
|
assertFalse(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("{\"or\": [false, false]}", Condition.class).evaluate("test")));
|
|
}
|
|
|
|
@Test
|
|
void gsonConditionNor() {
|
|
assertFalse(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("{\"nor\": [true, false]}", Condition.class).evaluate("test")));
|
|
assertFalse(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("{\"nor\": [true, true]}", Condition.class).evaluate("test")));
|
|
assertTrue(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("{\"nor\": [false, false]}", Condition.class).evaluate("test")));
|
|
}
|
|
|
|
@Test
|
|
void gsonConditionAnd() {
|
|
assertFalse(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("{\"and\": [true, false]}", Condition.class).evaluate("test")));
|
|
assertTrue(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("{\"and\": [true, true]}", Condition.class).evaluate("test")));
|
|
assertFalse(assertDoesNotThrow(() -> Respackopts.GSON.fromJson("{\"and\": [false, false]}", Condition.class).evaluate("test")));
|
|
}
|
|
}
|