Skip to content

Commit e9526e5

Browse files
Merge pull request #482 from SimonC4/EnumFix
Enum fix
2 parents 88d9042 + 77afcdc commit e9526e5

File tree

2 files changed

+38
-17
lines changed

2 files changed

+38
-17
lines changed

engine/src/main/java/org/destinationsol/GameOptions.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import com.badlogic.gdx.Gdx;
1919
import com.badlogic.gdx.Input;
20+
import com.google.common.base.Enums;
2021
import org.destinationsol.menu.Resolution;
2122
import org.destinationsol.menu.ResolutionProvider;
2223

@@ -185,9 +186,9 @@ public GameOptions(boolean mobile, SolFileReader solFileReader) {
185186
x = reader.getInt("x", 1366);
186187
y = reader.getInt("y", 768);
187188
fullscreen = reader.getBoolean("fullscreen", false);
188-
controlType = mobile ? ControlType.KEYBOARD : ControlType.valueOf(reader.getString("controlType", "MIXED"));
189-
sfxVolume = Volume.valueOf(reader.getString("sfxVolume", "MAX"));
190-
musicVolume = Volume.valueOf(reader.getString("musicVolume", "MAX"));
189+
controlType = mobile ? ControlType.KEYBOARD : Enums.getIfPresent(ControlType.class, reader.getString("controlType", "MIXED")).or(ControlType.MIXED);
190+
sfxVolume = Enums.getIfPresent(Volume.class, reader.getString("sfxVolume", "MAX")).or(Volume.MAX);
191+
musicVolume = Enums.getIfPresent(Volume.class, reader.getString("musicVolume", "MAX")).or(Volume.MAX);
191192
keyUpMouseName = reader.getString("keyUpMouse", DEFAULT_MOUSE_UP);
192193
keyDownMouseName = reader.getString("keyDownMouse", DEFAULT_MOUSE_DOWN);
193194
keyUpName = reader.getString("keyUp", DEFAULT_UP);

engine/src/test/java/org/destinationsol/IniReaderTest.java

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.destinationsol;
1717

18+
import com.google.common.base.Enums;
1819
import org.junit.Before;
1920
import org.junit.Test;
2021

@@ -48,37 +49,42 @@ public void initIniReader() {
4849
"intKey = 5\n" +
4950
"invalidIntKey = 3.4\n" +
5051
"anotherInvalidIntKey = two\n" +
52+
"blankIntKey = \n" +
5153
"floatKey = 6\n" +
5254
"anotherFloatKey = 7.3f\n" +
5355
"invalidFloatKey = 8,6\n" +
5456
"anotherInvalidFloatKey = hi\n" +
57+
"enumInvalid = 1\n" +
58+
"enumEmpty =\n" +
59+
"enumValid = KEYBOARD\n" +
5560
"UnicodeKey çáč🧝 = unicodevalue áśǵj́ḱĺóí⋄«»⋄⋄ǫő";
5661
iniReader = new IniReader(new BufferedReader(new StringReader(iniFileContents)));
5762
}
5863

5964
@Test
6065
public void testInputHandling() {
61-
assertEquals(iniReader.getString("missingKey", "correctValue"), "correctValue");
62-
assertEquals(iniReader.getString("terrible key name", "wrongValue"), "terrible key value");
63-
assertEquals(iniReader.getString("partLineCommentKey", "wrongValue"), "correctValue1");
64-
assertEquals(iniReader.getString("doubleRequestedKey", "wrongValue"), "validValue2");
65-
assertEquals(iniReader.getString("doubleRequestedKey", "wrongValue"), "validValue2");
66-
assertEquals(iniReader.getString("this shouldn't throw exception", "correctValue"), "correctValue");
67-
assertEquals(iniReader.getString("UnicodeKey çáč🧝", "wrongValue"), "unicodevalue áśǵj́ḱĺóí⋄«»⋄⋄ǫő");
66+
assertEquals("correctValue", iniReader.getString("missingKey", "correctValue"));
67+
assertEquals("terrible key value", iniReader.getString("terrible key name", "wrongValue"));
68+
assertEquals("correctValue1", iniReader.getString("partLineCommentKey", "wrongValue"));
69+
assertEquals("validValue2", iniReader.getString("doubleRequestedKey", "wrongValue"));
70+
assertEquals("validValue2", iniReader.getString("doubleRequestedKey", "wrongValue"));
71+
assertEquals("correctValue", iniReader.getString("this shouldn't throw exception", "correctValue"));
72+
assertEquals("unicodevalue áśǵj́ḱĺóí⋄«»⋄⋄ǫő", iniReader.getString("UnicodeKey çáč🧝", "wrongValue"));
6873
}
6974

7075
@Test
7176
public void testGetString() {
72-
assertEquals(iniReader.getString("asdfghjk", "correctValue"), "correctValue");
73-
assertEquals(iniReader.getString("validStringKey", "wrongValue"), "validString");
77+
assertEquals("correctValue", iniReader.getString("asdfghjk", "correctValue"));
78+
assertEquals("validString", iniReader.getString("validStringKey", "wrongValue"));
7479
}
7580

7681
@Test
7782
public void testGetInt() {
78-
assertEquals(iniReader.getInt("asdfghjk", 55), 55);
79-
assertEquals(iniReader.getInt("intKey", 0), 5);
80-
assertEquals(iniReader.getInt("invalidIntKey", 56), 56);
81-
assertEquals(iniReader.getInt("anotherInvalidIntKey", 57), 57);
83+
assertEquals(55, iniReader.getInt("asdfghjk", 55));
84+
assertEquals(5, iniReader.getInt("intKey", 0));
85+
assertEquals(56, iniReader.getInt("invalidIntKey", 56));
86+
assertEquals(57, iniReader.getInt("anotherInvalidIntKey", 57));
87+
assertEquals(58, iniReader.getInt("blankIntKey", 58));
8288
}
8389

8490
@Test
@@ -102,5 +108,19 @@ public void testGetFloat() {
102108
assertTrue(Float.compare(iniReader.getFloat("anotherInvalidFloatKey", 7.8f), 7.8f) == 0);
103109
}
104110

105-
//TODO ADD MOAR TESTS
111+
@Test
112+
public void testEnums() {
113+
// When no value exists in the file, use the defaultValue in getString.
114+
assertEquals(GameOptions.ControlType.MIXED, Enums.getIfPresent(GameOptions.ControlType.class, iniReader.getString("enumDefault", "MIXED")).or(GameOptions.ControlType.KEYBOARD));
115+
assertEquals(GameOptions.ControlType.MIXED, Enums.getIfPresent(GameOptions.ControlType.class, iniReader.getString("enumDefault", "MIXED")).or(GameOptions.ControlType.MIXED));
116+
assertEquals(GameOptions.ControlType.KEYBOARD, Enums.getIfPresent(GameOptions.ControlType.class, iniReader.getString("enumEmpty", "KEYBOARD")).or(GameOptions.ControlType.MIXED));
117+
118+
// When the value in the file isn't a valid enum, use the default value in getIfPresent
119+
assertEquals(GameOptions.ControlType.MIXED, Enums.getIfPresent(GameOptions.ControlType.class, iniReader.getString("enumInvalid", "KEYBOARD")).or(GameOptions.ControlType.MIXED));
120+
assertEquals(GameOptions.ControlType.MIXED, Enums.getIfPresent(GameOptions.ControlType.class, iniReader.getString("enumInvalid", "MIXED")).or(GameOptions.ControlType.MIXED));
121+
122+
// When the value is in the file, use that value regardless of the default values.
123+
assertEquals(GameOptions.ControlType.KEYBOARD, Enums.getIfPresent(GameOptions.ControlType.class, iniReader.getString("enumValid", "MIXED")).or(GameOptions.ControlType.MIXED));
124+
}
125+
106126
}

0 commit comments

Comments
 (0)