package com.codeaffine.extras.launch.internal.dialog; import static org.assertj.core.api.Assertions.assertThat; import static org.eclipse.debug.core.ILaunchManager.DEBUG_MODE; import static org.eclipse.debug.core.ILaunchManager.RUN_MODE; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.junit.Rule; import org.junit.Test; import com.codeaffine.extras.launch.test.LaunchConfigRule; public class LaunchTerminatorPDETest { @Rule public final LaunchConfigRule launchConfigRule = new LaunchConfigRule(); @Test(expected=NullPointerException.class) public void testConstructorWithNullArgument() { new LaunchTerminator( null ); } @Test public void testTerminateLaunches() throws CoreException { ILaunchConfiguration launchConfig = launchConfigRule.createPublicLaunchConfig().doSave(); ILaunch launch = launchConfig.launch( RUN_MODE, new NullProgressMonitor() ); new LaunchTerminator( launchConfig ).terminateLaunches(); assertThat( launch.isTerminated() ).isTrue(); } @Test public void testTerminateLaunchesWithMultipleLaunches() throws CoreException { ILaunchConfiguration launchConfig = launchConfigRule.createPublicLaunchConfig().doSave(); ILaunch launch1 = launchConfig.launch( RUN_MODE, new NullProgressMonitor() ); ILaunch launch2 = launchConfig.launch( DEBUG_MODE, new NullProgressMonitor() ); new LaunchTerminator( launchConfig ).terminateLaunches(); assertThat( launch1.isTerminated() ).isTrue(); assertThat( launch2.isTerminated() ).isTrue(); } @Test public void testTerminateLaunchesWithTerminatedLaunch() throws CoreException { ILaunchConfiguration launchConfig = launchConfigRule.createPublicLaunchConfig().doSave(); ILaunch launch = launchConfig.launch( RUN_MODE, new NullProgressMonitor() ); launch.terminate(); new LaunchTerminator( launchConfig ).terminateLaunches(); assertThat( launch.isTerminated() ).isTrue(); } @Test public void testTerminateLaunchesWithUnrelatedLaunch() throws CoreException { ILaunchConfiguration unrelatedLaunchConfig = launchConfigRule.createPrivateLaunchConfig().doSave(); ILaunch unrelatedLaunch = unrelatedLaunchConfig.launch( RUN_MODE, new NullProgressMonitor() ); ILaunchConfiguration launchConfig = launchConfigRule.createPublicLaunchConfig().doSave(); new LaunchTerminator( launchConfig ).terminateLaunches(); assertThat( unrelatedLaunch.isTerminated() ).isFalse(); } @Test public void testTerminateLaunchesWithDeletedLaunchConfig() throws CoreException { ILaunchConfiguration unrelatedLaunchConfig = launchConfigRule.createPrivateLaunchConfig().doSave(); ILaunch unrelatedLaunch = unrelatedLaunchConfig.launch( RUN_MODE, new NullProgressMonitor() ); ILaunchConfiguration launchConfig = launchConfigRule.createPublicLaunchConfig().doSave(); unrelatedLaunchConfig.delete(); new LaunchTerminator( launchConfig ).terminateLaunches(); assertThat( unrelatedLaunch.isTerminated() ).isFalse(); } @Test public void testTerminateLaunchesWithRenamedLaunchConfig() throws CoreException { ILaunchConfiguration launchConfig = launchConfigRule.createPublicLaunchConfig().doSave(); ILaunch launch = launchConfig.launch( RUN_MODE, new NullProgressMonitor() ); launchConfigRule.renameLaunchConfig( launchConfig ); new LaunchTerminator( launchConfig ).terminateLaunches(); assertThat( launch.isTerminated() ).isFalse(); } }