package com.codeaffine.extras.launch.internal.dialog; import static com.codeaffine.extras.launch.test.LaunchModeHelper.TEST_LAUNCH_MODE; import static org.assertj.core.api.Assertions.assertThat; import static org.eclipse.debug.core.ILaunchManager.DEBUG_MODE; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.debug.core.ILaunchMode; import org.eclipse.debug.ui.ILaunchGroup; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import com.codeaffine.extras.launch.internal.dialog.LaunchModeComputer; import com.codeaffine.extras.launch.test.LaunchConfigRule; public class LaunchModeComputerPDETest { @Rule public final LaunchConfigRule launchConfigRule = new LaunchConfigRule(); private ILaunchConfigurationWorkingCopy launchConfig; @Before public void setUp() throws CoreException { launchConfig = launchConfigRule.createPublicLaunchConfig(); } @Test(expected = NullPointerException.class) public void testConstructorWithNullLaunchConfig() { new LaunchModeComputer( null, getSupportedMode() ); } @Test public void testComputeLaunchModeWithSupportedMode() { ILaunchMode supportedMode = getSupportedMode(); ILaunchMode launchMode = computeLaunchMode( supportedMode ); assertThat( launchMode ).isEqualTo( supportedMode ); } @Test public void testComputeLaunchModeWithUnsupportedMode() { ILaunchMode unsupportedMode = getUnsupportedMode(); ILaunchMode launchMode = computeLaunchMode( unsupportedMode ); assertThat( launchMode ).isEqualTo( getSupportedMode() ); } @Test public void testComputeLaunchModeWithNullLaunchMode() { ILaunchMode launchMode = computeLaunchMode( null ); assertThat( launchMode ).isEqualTo( getSupportedMode() ); } @Test public void testComputeLaunchModeWithDeletedLaunchConfig() throws CoreException { ILaunchMode supportedMode = getSupportedMode(); ILaunchConfiguration deletedLaunchConfig = launchConfig.doSave(); deletedLaunchConfig.delete(); ILaunchMode launchMode = new LaunchModeComputer( deletedLaunchConfig, supportedMode ).computeLaunchMode(); assertThat( launchMode ).isNull(); } @Test public void testComputeLaunchGroupWithSupportedMode() { ILaunchMode supportedMode = getSupportedMode(); ILaunchGroup launchMode = computeLaunchGroup( supportedMode ); assertThat( launchMode.getMode() ).isEqualTo( supportedMode.getIdentifier() ); } @Test public void testComputeLaunchGroupWithUnsupportedMode() { ILaunchMode unsupportedMode = getUnsupportedMode(); ILaunchGroup launchMode = computeLaunchGroup( unsupportedMode ); assertThat( launchMode.getMode() ).isEqualTo( getSupportedMode().getIdentifier() ); } @Test public void testComputeLaunchGroupWithNullLaunchMode() { ILaunchGroup launchGroup = computeLaunchGroup( null ); assertThat( launchGroup.getMode() ).isEqualTo( getSupportedMode().getIdentifier() ); } @Test public void testComputeLaunchGroupWithDeletedLaunchConfig() throws CoreException { ILaunchMode supportedMode = getSupportedMode(); ILaunchConfiguration deletedLaunchConfig = launchConfig.doSave(); deletedLaunchConfig.delete(); ILaunchGroup launchGroup = new LaunchModeComputer( deletedLaunchConfig, supportedMode ).computeLaunchGroup(); assertThat( launchGroup ).isNull(); } private ILaunchMode computeLaunchMode( ILaunchMode preferredLaunchMode ) { return new LaunchModeComputer( launchConfig, preferredLaunchMode ).computeLaunchMode(); } private ILaunchGroup computeLaunchGroup( ILaunchMode preferredLaunchMode ) { return new LaunchModeComputer( launchConfig, preferredLaunchMode ).computeLaunchGroup(); } private static ILaunchMode getSupportedMode() { return DebugPlugin.getDefault().getLaunchManager().getLaunchMode( DEBUG_MODE ); } private static ILaunchMode getUnsupportedMode() { return DebugPlugin.getDefault().getLaunchManager().getLaunchMode( TEST_LAUNCH_MODE ); } }