package com.codeaffine.extras.launch.internal.dialog; import static com.codeaffine.extras.launch.test.LaunchModeHelper.createLaunchMode; import static org.assertj.core.api.Assertions.assertThat; import static org.eclipse.debug.core.ILaunchManager.RUN_MODE; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.core.ILaunchMode; import org.junit.Before; import org.junit.Test; public class LaunchModeActionComparatorTest { private List<LaunchModeAction> launchModes; private LaunchModeActionComparator comparator; @Test public void testRunBeforeDebugBeforeAny() { LaunchModeAction profile = addLaunchMode( ILaunchManager.PROFILE_MODE, "Profile" ); LaunchModeAction debug = addLaunchMode( ILaunchManager.DEBUG_MODE, "Debug" ); LaunchModeAction run = addLaunchMode( RUN_MODE, "Run" ); Collections.sort( launchModes, comparator ); assertThat( launchModes ).containsExactly( run, debug, profile ); } @Test public void testAlphabeticalOrder() { LaunchModeAction foo = addLaunchMode( "foo", "Foo" ); LaunchModeAction bar = addLaunchMode( "bar", "Bar" ); Collections.sort( launchModes, comparator ); assertThat( launchModes ).containsExactly( bar, foo ); } @Before public void setUp() { launchModes = new ArrayList<>(); comparator = new LaunchModeActionComparator(); } private LaunchModeAction addLaunchMode( String identifier, String label ) { ILaunchMode launchMode = createLaunchMode( identifier, label ); LaunchModeAction launchModeAction = mock( LaunchModeAction.class ); when( launchModeAction.getLaunchMode() ).thenReturn( launchMode ); launchModes.add( launchModeAction ); return launchModeAction; } }