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.DEBUG_MODE; import static org.eclipse.debug.core.ILaunchManager.RUN_MODE; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import org.eclipse.debug.core.ILaunchMode; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuCreator; import org.junit.Before; import org.junit.Test; public class LaunchModeActionTest { private LaunchModeSetting launchModeSetting; private ILaunchMode launchMode; @Test public void testGetText() { LaunchModeAction action = createLaunchModeAction(); String text = action.getText(); assertThat( text ).isNotEmpty(); } @Test public void testGetStyle() { LaunchModeAction action = createLaunchModeAction(); int style = action.getStyle(); assertThat( style ).isEqualTo( IAction.AS_RADIO_BUTTON ); } @Test public void testGetMenuCreator() { LaunchModeAction action = createLaunchModeAction(); IMenuCreator menuCreator = action.getMenuCreator(); assertThat( menuCreator ).isNull(); } @Test public void testInitialCheckState() { changeCurrentLaunchMode( launchMode ); LaunchModeAction action = createLaunchModeAction(); assertThat( action.isChecked() ).isTrue(); } @Test public void testUpdateForCurrentLaunchMode() { changeCurrentLaunchMode( createLaunchMode( DEBUG_MODE ) ); LaunchModeAction action = createLaunchModeAction(); changeCurrentLaunchMode( launchMode ); action.update(); assertThat( action.isChecked() ).isTrue(); } @Test public void testUpdateForNonCurrentLaunchMode() { LaunchModeAction action = createLaunchModeAction(); changeCurrentLaunchMode( createLaunchMode( DEBUG_MODE ) ); action.update(); assertThat( action.isChecked() ).isFalse(); } @Test public void testRun() { LaunchModeAction action = createLaunchModeAction(); action.run(); verify( launchModeSetting ).setLaunchModeId( launchMode.getIdentifier() ); } @Before public void setUp() { launchModeSetting = mock( LaunchModeSetting.class ); launchMode = createLaunchMode( RUN_MODE ); } private LaunchModeAction createLaunchModeAction() { return new LaunchModeAction( launchModeSetting, launchMode ); } private void changeCurrentLaunchMode( ILaunchMode currentLaunchMode ) { when( launchModeSetting.getLaunchMode() ).thenReturn( currentLaunchMode ); } }