--- /dev/null
+package net.pterodactylus.sone.core;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.nullValue;
+import static org.mockito.Mockito.mock;
+
+import net.pterodactylus.sone.core.Options.Option;
+
+import org.junit.Test;
+
+/**
+ * Unit test for {@link Options}.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public class OptionsTest {
+
+ private final Options options = new Options();
+
+ @Test
+ public void booleanOptionIsAdded() {
+ Option<Boolean> booleanOption = mock(Option.class);
+ options.addBooleanOption("test", booleanOption);
+ assertThat(options.getBooleanOption("test"), is(booleanOption));
+ assertThat(options.getBooleanOption("not-test"), nullValue());
+ }
+
+ @Test
+ public void integerOptionIsAdded() {
+ Option<Integer> integerOption = mock(Option.class);
+ options.addIntegerOption("test", integerOption);
+ assertThat(options.getIntegerOption("test"), is(integerOption));
+ assertThat(options.getIntegerOption("not-test"), nullValue());
+ }
+
+ @Test
+ public void stringOptionIsAdded() {
+ Option<String> stringOption = mock(Option.class);
+ options.addStringOption("test", stringOption);
+ assertThat(options.getStringOption("test"), is(stringOption));
+ assertThat(options.getStringOption("not-test"), nullValue());
+ }
+
+ @Test
+ public void enumOptionIsAdded() {
+ Option<TestEnum> enumOption = mock(Option.class);
+ options.addEnumOption("test", enumOption);
+ assertThat(options.<TestEnum>getEnumOption("test"), is(enumOption));
+ assertThat(options.<TestEnum>getEnumOption("not-test"), nullValue());
+ }
+
+ private enum TestEnum {TEST, NOT_TEST}
+
+}