// Path: graceland-platform/src/main/java/io/graceland/plugin/Plugin.java
// public interface Plugin extends Module {
// }
// 
// Path: graceland-platform/src/test/java/io/graceland/testing/TestModes.java
// public enum TestModes {
//     DEV,
//     PROD
// }


import java.util.List;
import org.junit.Test;
import io.graceland.plugin.Plugin;
import io.graceland.testing.TestModes;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
package io.graceland.application;





public class ModalApplicationTest extends ApplicationTest {

    private static final String[] ARGS_MISSING = new String[]{"server", "config.yml"};
    private static final String[] ARGS_DEV = new String[]{"server", "config.yml", "--DEV"};
    private static final String[] ARGS_PROD = new String[]{"server", "config.yml", "--PROD"};
    private static final String[] ARGS_NOT_VALID = new String[]{"server", "config.yml", "--NOTFOUND"};
    private static final String[] ARGS_BAD_CASE = new String[]{"server", "config.yml", "--dev"};

    private Plugin plugin1 = mock(Plugin.class);
    private Plugin plugin2 = mock(Plugin.class);
    private Plugin plugin3 = mock(Plugin.class);
    private Plugin plugin4 = mock(Plugin.class);

    @Override
    protected Application newApplication() {
// Path: graceland-platform/src/main/java/io/graceland/plugin/Plugin.java
// public interface Plugin extends Module {
// }
// 
// Path: graceland-platform/src/test/java/io/graceland/testing/TestModes.java
// public enum TestModes {
//     DEV,
//     PROD
// }


// Path: graceland-platform/src/test/java/io/graceland/application/ModalApplicationTest.java
import java.util.List;
import org.junit.Test;
import io.graceland.plugin.Plugin;
import io.graceland.testing.TestModes;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;

package io.graceland.application;





public class ModalApplicationTest extends ApplicationTest {

    private static final String[] ARGS_MISSING = new String[]{"server", "config.yml"};
    private static final String[] ARGS_DEV = new String[]{"server", "config.yml", "--DEV"};
    private static final String[] ARGS_PROD = new String[]{"server", "config.yml", "--PROD"};
    private static final String[] ARGS_NOT_VALID = new String[]{"server", "config.yml", "--NOTFOUND"};
    private static final String[] ARGS_BAD_CASE = new String[]{"server", "config.yml", "--dev"};

    private Plugin plugin1 = mock(Plugin.class);
    private Plugin plugin2 = mock(Plugin.class);
    private Plugin plugin3 = mock(Plugin.class);
    private Plugin plugin4 = mock(Plugin.class);

    @Override
    protected Application newApplication() {
        return new ModalApplication<TestModes>(TestModes.class, TestModes.PROD, ARGS_MISSING) {