#450 Fix YAML export of enum values
- Move writing logic to PropertyType - Remove unused double property type - Add sample enum property type to tests
This commit is contained in:
@@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableMap;
|
||||
import fr.xephi.authme.ReflectionTestUtils;
|
||||
import fr.xephi.authme.settings.domain.Property;
|
||||
import fr.xephi.authme.settings.properties.TestConfiguration;
|
||||
import fr.xephi.authme.settings.properties.TestEnum;
|
||||
import fr.xephi.authme.settings.propertymap.PropertyMap;
|
||||
import fr.xephi.authme.util.WrapperMock;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
@@ -48,12 +49,12 @@ public class NewSettingIntegrationTest {
|
||||
Map<Property<?>, Object> expectedValues = ImmutableMap.<Property<?>, Object>builder()
|
||||
.put(TestConfiguration.DURATION_IN_SECONDS, 22)
|
||||
.put(TestConfiguration.SYSTEM_NAME, "Custom sys name")
|
||||
.put(TestConfiguration.RATIO_LIMIT, -4.1)
|
||||
.put(TestConfiguration.RATIO_ORDER, TestEnum.FIRST)
|
||||
.put(TestConfiguration.RATIO_FIELDS, Arrays.asList("Australia", "Burundi", "Colombia"))
|
||||
.put(TestConfiguration.VERSION_NUMBER, 2492)
|
||||
.put(TestConfiguration.SKIP_BORING_FEATURES, false)
|
||||
.put(TestConfiguration.BORING_COLORS, Arrays.asList("beige", "gray"))
|
||||
.put(TestConfiguration.DUST_LEVEL, 0.81)
|
||||
.put(TestConfiguration.DUST_LEVEL, 2)
|
||||
.put(TestConfiguration.USE_COOL_FEATURES, true)
|
||||
.put(TestConfiguration.COOL_OPTIONS, Arrays.asList("Dinosaurs", "Explosions", "Big trucks"))
|
||||
.build();
|
||||
@@ -81,12 +82,12 @@ public class NewSettingIntegrationTest {
|
||||
Map<Property<?>, Object> expectedValues = ImmutableMap.<Property<?>, Object>builder()
|
||||
.put(TestConfiguration.DURATION_IN_SECONDS, 22)
|
||||
.put(TestConfiguration.SYSTEM_NAME, "[TestDefaultValue]")
|
||||
.put(TestConfiguration.RATIO_LIMIT, 3.0)
|
||||
.put(TestConfiguration.RATIO_ORDER, TestEnum.SECOND)
|
||||
.put(TestConfiguration.RATIO_FIELDS, Arrays.asList("Australia", "Burundi", "Colombia"))
|
||||
.put(TestConfiguration.VERSION_NUMBER, 32046)
|
||||
.put(TestConfiguration.SKIP_BORING_FEATURES, false)
|
||||
.put(TestConfiguration.BORING_COLORS, Collections.EMPTY_LIST)
|
||||
.put(TestConfiguration.DUST_LEVEL, 0.2)
|
||||
.put(TestConfiguration.DUST_LEVEL, -1)
|
||||
.put(TestConfiguration.USE_COOL_FEATURES, false)
|
||||
.put(TestConfiguration.COOL_OPTIONS, Arrays.asList("Dinosaurs", "Explosions", "Big trucks"))
|
||||
.build();
|
||||
@@ -129,12 +130,12 @@ public class NewSettingIntegrationTest {
|
||||
Map<Property<?>, Object> expectedValues = ImmutableMap.<Property<?>, Object>builder()
|
||||
.put(TestConfiguration.DURATION_IN_SECONDS, 20)
|
||||
.put(TestConfiguration.SYSTEM_NAME, "A 'test' name")
|
||||
.put(TestConfiguration.RATIO_LIMIT, -41.8)
|
||||
.put(TestConfiguration.RATIO_ORDER, TestEnum.FOURTH)
|
||||
.put(TestConfiguration.RATIO_FIELDS, Arrays.asList("Australia\\", "\tBurundi'", "Colombia?\n''"))
|
||||
.put(TestConfiguration.VERSION_NUMBER, -1337)
|
||||
.put(TestConfiguration.SKIP_BORING_FEATURES, false)
|
||||
.put(TestConfiguration.BORING_COLORS, Arrays.asList("it's a difficult string!", "gray\nwith new lines\n"))
|
||||
.put(TestConfiguration.DUST_LEVEL, 0.2)
|
||||
.put(TestConfiguration.DUST_LEVEL, -1)
|
||||
.put(TestConfiguration.USE_COOL_FEATURES, true)
|
||||
.put(TestConfiguration.COOL_OPTIONS, Collections.EMPTY_LIST)
|
||||
.put(additionalProperties.get(0), additionalProperties.get(0).getDefaultValue())
|
||||
|
||||
@@ -2,6 +2,7 @@ package fr.xephi.authme.settings;
|
||||
|
||||
import fr.xephi.authme.settings.domain.Property;
|
||||
import fr.xephi.authme.settings.properties.TestConfiguration;
|
||||
import fr.xephi.authme.settings.properties.TestEnum;
|
||||
import fr.xephi.authme.settings.propertymap.PropertyMap;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.junit.Test;
|
||||
@@ -37,7 +38,7 @@ public class NewSettingTest {
|
||||
|
||||
setReturnValue(file, TestConfiguration.VERSION_NUMBER, 20);
|
||||
setReturnValue(file, TestConfiguration.SKIP_BORING_FEATURES, true);
|
||||
setReturnValue(file, TestConfiguration.RATIO_LIMIT, 4.25);
|
||||
setReturnValue(file, TestConfiguration.RATIO_ORDER, TestEnum.THIRD);
|
||||
setReturnValue(file, TestConfiguration.SYSTEM_NAME, "myTestSys");
|
||||
|
||||
// when / then
|
||||
@@ -45,7 +46,7 @@ public class NewSettingTest {
|
||||
|
||||
assertThat(settings.getProperty(TestConfiguration.VERSION_NUMBER), equalTo(20));
|
||||
assertThat(settings.getProperty(TestConfiguration.SKIP_BORING_FEATURES), equalTo(true));
|
||||
assertThat(settings.getProperty(TestConfiguration.RATIO_LIMIT), equalTo(4.25));
|
||||
assertThat(settings.getProperty(TestConfiguration.RATIO_ORDER), equalTo(TestEnum.THIRD));
|
||||
assertThat(settings.getProperty(TestConfiguration.SYSTEM_NAME), equalTo("myTestSys"));
|
||||
|
||||
assertDefaultValue(TestConfiguration.DURATION_IN_SECONDS, settings);
|
||||
@@ -60,8 +61,8 @@ public class NewSettingTest {
|
||||
when(config.getInt(eq(property.getPath()), anyInt())).thenReturn((Integer) value);
|
||||
} else if (value instanceof Boolean) {
|
||||
when(config.getBoolean(eq(property.getPath()), anyBoolean())).thenReturn((Boolean) value);
|
||||
} else if (value instanceof Double) {
|
||||
when(config.getDouble(eq(property.getPath()), anyDouble())).thenReturn((Double) value);
|
||||
} else if (value instanceof Enum<?>) {
|
||||
when(config.getString(property.getPath())).thenReturn(((Enum<?>) value).name());
|
||||
} else {
|
||||
throw new UnsupportedOperationException("Value has unsupported type '"
|
||||
+ (value == null ? "null" : value.getClass().getSimpleName()) + "'");
|
||||
|
||||
@@ -13,7 +13,6 @@ import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.contains;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.mockito.Matchers.anyBoolean;
|
||||
import static org.mockito.Matchers.anyDouble;
|
||||
import static org.mockito.Matchers.anyInt;
|
||||
import static org.mockito.Matchers.anyString;
|
||||
import static org.mockito.Matchers.eq;
|
||||
@@ -33,8 +32,6 @@ public class PropertyTypeTest {
|
||||
|
||||
when(configuration.getBoolean(eq("bool.path.test"), anyBoolean())).thenReturn(true);
|
||||
when(configuration.getBoolean(eq("bool.path.wrong"), anyBoolean())).thenAnswer(secondParameter());
|
||||
when(configuration.getDouble(eq("double.path.test"), anyDouble())).thenReturn(-6.4);
|
||||
when(configuration.getDouble(eq("double.path.wrong"), anyDouble())).thenAnswer(secondParameter());
|
||||
when(configuration.getInt(eq("int.path.test"), anyInt())).thenReturn(27);
|
||||
when(configuration.getInt(eq("int.path.wrong"), anyInt())).thenAnswer(secondParameter());
|
||||
when(configuration.getString(eq("str.path.test"), anyString())).thenReturn("Test value");
|
||||
@@ -69,31 +66,6 @@ public class PropertyTypeTest {
|
||||
assertThat(result, equalTo(true));
|
||||
}
|
||||
|
||||
/* Double */
|
||||
@Test
|
||||
public void shouldGetDoubleValue() {
|
||||
// given
|
||||
Property<Double> property = Property.newProperty(PropertyType.DOUBLE, "double.path.test", 3.8);
|
||||
|
||||
// when
|
||||
double result = property.getFromFile(configuration);
|
||||
|
||||
// then
|
||||
assertThat(result, equalTo(-6.4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldGetDoubleDefault() {
|
||||
// given
|
||||
Property<Double> property = Property.newProperty(PropertyType.DOUBLE, "double.path.wrong", 12.0);
|
||||
|
||||
// when
|
||||
double result = property.getFromFile(configuration);
|
||||
|
||||
// then
|
||||
assertThat(result, equalTo(12.0));
|
||||
}
|
||||
|
||||
/* Integer */
|
||||
@Test
|
||||
public void shouldGetIntValue() {
|
||||
|
||||
@@ -19,8 +19,8 @@ public final class TestConfiguration implements SettingsClass {
|
||||
public static final Property<String> SYSTEM_NAME =
|
||||
newProperty("test.systemName", "[TestDefaultValue]");
|
||||
|
||||
public static final Property<Double> RATIO_LIMIT =
|
||||
newProperty(PropertyType.DOUBLE, "sample.ratio.limit", 3.0);
|
||||
public static final Property<TestEnum> RATIO_ORDER =
|
||||
newProperty(TestEnum.class, "sample.ratio.order", TestEnum.SECOND);
|
||||
|
||||
public static final Property<List<String>> RATIO_FIELDS =
|
||||
newProperty(PropertyType.STRING_LIST, "sample.ratio.fields", "a", "b", "c");
|
||||
@@ -34,8 +34,8 @@ public final class TestConfiguration implements SettingsClass {
|
||||
public static final Property<List<String>> BORING_COLORS =
|
||||
newProperty(PropertyType.STRING_LIST, "features.boring.colors");
|
||||
|
||||
public static final Property<Double> DUST_LEVEL =
|
||||
newProperty(PropertyType.DOUBLE, "features.boring.dustLevel", 0.2);
|
||||
public static final Property<Integer> DUST_LEVEL =
|
||||
newProperty(PropertyType.INTEGER, "features.boring.dustLevel", -1);
|
||||
|
||||
public static final Property<Boolean> USE_COOL_FEATURES =
|
||||
newProperty("features.cool.enabled", false);
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package fr.xephi.authme.settings.properties;
|
||||
|
||||
/**
|
||||
* Test enum used in {@link TestConfiguration}.
|
||||
*/
|
||||
public enum TestEnum {
|
||||
|
||||
FIRST,
|
||||
|
||||
SECOND,
|
||||
|
||||
THIRD,
|
||||
|
||||
FOURTH
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user