package com.codeaffine.extras.launch.internal.dialog;
import static org.assertj.core.api.Assertions.assertThat;
import static org.eclipse.debug.core.ILaunchManager.RUN_MODE;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.jface.preference.PreferenceStore;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import com.codeaffine.extras.launch.test.LaunchConfigRule;
public class LaunchConfigStarterPDETest {
@Rule
public final LaunchConfigRule launchConfigRule = new LaunchConfigRule();
private DebugUIPreferences preferences;
private ILaunchManager launchManager;
private ILaunchConfiguration launchConfig;
@Before
public void setUp() throws CoreException {
preferences = new DebugUIPreferences( new PreferenceStore() );
launchManager = DebugPlugin.getDefault().getLaunchManager();
launchConfig = launchConfigRule.createPublicLaunchConfig().doSave();
}
@Test(expected=NullPointerException.class)
public void testConstructorWithNullLaunchMode() {
new LaunchConfigStarter( preferences, null );
}
@Test(expected=NullPointerException.class)
public void testConstructorWithNullPreferences() {
new LaunchConfigStarter( null, launchManager.getLaunchMode( RUN_MODE ) );
}
@Test
public void testStart() {
startLaunchConfig( launchConfig );
assertThat( launchManager.getLaunches() ).hasSize( 1 );
assertThat( launchManager.getLaunches()[ 0 ].getLaunchConfiguration() ).isEqualTo( launchConfig );
}
@Test
public void testStartWithDisabledTerminateAndRelaunch() {
preferences.setTerminateBeforeRelaunch( false );
startLaunchConfig( launchConfig );
startLaunchConfig( launchConfig );
assertThat( launchManager.getLaunches() ).hasSize( 2 );
assertThat( launchManager.getLaunches()[ 0 ].getLaunchConfiguration() ).isEqualTo( launchConfig );
assertThat( launchManager.getLaunches()[ 1 ].getLaunchConfiguration() ).isEqualTo( launchConfig );
}
@Test
public void testStartWithEnabledTerminateAndRelaunch() {
preferences.setTerminateBeforeRelaunch( true );
startLaunchConfig( launchConfig );
startLaunchConfig( launchConfig );
assertThat( launchManager.getLaunches() ).hasSize( 1 );
assertThat( launchManager.getLaunches()[ 0 ].getLaunchConfiguration() ).isEqualTo( launchConfig );
}
private void startLaunchConfig( ILaunchConfiguration launchConfig ) {
new LaunchConfigStarter( preferences, launchManager.getLaunchMode( RUN_MODE ), launchConfig ).start();
}
}