diff --git a/launchbar/org.eclipse.launchbar.core.tests/META-INF/MANIFEST.MF b/launchbar/org.eclipse.launchbar.core.tests/META-INF/MANIFEST.MF index 862b2d5997e..23ab35b2ecc 100644 --- a/launchbar/org.eclipse.launchbar.core.tests/META-INF/MANIFEST.MF +++ b/launchbar/org.eclipse.launchbar.core.tests/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.launchbar.core.tests;singleton:=true -Bundle-Version: 1.0.100.qualifier +Bundle-Version: 1.0.200.qualifier Fragment-Host: org.eclipse.launchbar.core;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.junit;bundle-version="[4.13.2,5)", diff --git a/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/LaunchBarManagerTest.java b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/LaunchBarManagerTest.java index 799e2f82a44..094ff29d1a0 100644 --- a/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/LaunchBarManagerTest.java +++ b/launchbar/org.eclipse.launchbar.core.tests/src/org/eclipse/launchbar/core/internal/LaunchBarManagerTest.java @@ -27,6 +27,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; @@ -37,6 +38,7 @@ import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.core.ILaunchMode; import org.eclipse.launchbar.core.DefaultLaunchDescriptor; +import org.eclipse.launchbar.core.ILaunchBarListener; import org.eclipse.launchbar.core.ILaunchConfigurationProvider; import org.eclipse.launchbar.core.ILaunchDescriptor; import org.eclipse.launchbar.core.ILaunchDescriptorType; @@ -45,6 +47,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.osgi.service.prefs.BackingStoreException; public class LaunchBarManagerTest { @@ -56,12 +59,14 @@ public class LaunchBarManagerTest { *
This is a dummy launch object
* @@ -70,17 +75,25 @@ public class LaunchBarManagerTest { *+ * Test that when activeLaunchDescriptorChanged event is fired,launch bar has + * a stable/correct state. + *
+ * Verifies that when "activeLaunchDescriptorChanged" event is fired, Launch bar
+ * manager has finished update launch mode and launch target for that descriptor
+ *
+ * @throws CoreException
+ */
+ @Test
+ public void launchBarStateTest_LaunchDescriptorChanged() throws CoreException {
+ // Dummy listener to collect data from the launch bar
+ AtomicReference
+ * Test that when activeLaunchTargetChanged event is fired,launch bar has
+ * a stable/correct state.
+ *
+ * Verifies that when "activeLaunchTargetChanged" event is fired, Launch bar
+ * manager has finished update launch mode for that descriptor
+ *
+ * @throws CoreException
+ */
+ @Test
+ public void launchBarStateTest_LaunchTargetChanged() throws CoreException {
+ // Dummy listener to collect data from the launch bar
+ AtomicReference
+ * Test that when activeLaunchModeChanged event is fired, launch bar has
+ * a stable/correct state.
+ *
+ * Verifies that when "activeLaunchModeChanged" event is fired, all active
+ * fields in launch bar manager are up-to-date
+ *
+ * @throws CoreException
+ */
+ @Test
+ public void launchBarStateTest_LaunchModeChanged() throws CoreException {
+ // Dummy listener to collect data from the launch bar
+ AtomicReference>> launchBarState = new AtomicReference<>();
+ launchBarState.set(new ArrayList<>());
+ ILaunchBarListener launchBarListener = createLaunchBarListener(launchBarState);
+ // Add initial active value to launch bar
+ ILaunchDescriptor desc_no1 = launchBarManagerMock.launchObjectAdded(launchObject_no1);
+ ILaunchTarget target_no1 = targetManagerMock.getLaunchTarget(targetTypeId, targetId_no1);
+ launchBarManagerMock.setActiveLaunchTarget(target_no1);
+ // Change active values on launch bar
+ launchBarManagerMock.launchObjectAdded(launchObject_no2);
+ ILaunchTarget target_no2 = targetManagerMock.getLaunchTarget(targetTypeId, targetId_no2);
+ launchBarManagerMock.setActiveLaunchTarget(target_no2);
+ launchBarManagerMock.setActiveLaunchMode(launchManagerMock.getLaunchMode(runMode));
+ // Add launch bar listener and start test
+ launchBarManagerMock.addListener(launchBarListener);
+ // Change active launch descriptor
+ launchBarManagerMock.setActiveLaunchDescriptor(desc_no1);
+ // Launch bar state when receive the event notification should be:
+ // launch descriptor: launchObject_no1
+ // launch target: targetId_no1
+ // launch mode: preferredMode_no1
+ for (var stateMap : launchBarState.get()) {
+ assertEquals(launchObject_no1, ((ILaunchDescriptor) stateMap.get(attr_activeDesc)).getName());
+ assertEquals(targetId_no1, ((ILaunchTarget) stateMap.get(attr_activeTarget)).getId());
+ assertEquals(preferredMode_no1, ((ILaunchMode) stateMap.get(attr_activeMode)).getIdentifier());
+ }
+ }
+
+ /**
+ *
>> launchBarState = new AtomicReference<>();
+ launchBarState.set(new ArrayList<>());
+ ILaunchBarListener launchBarListener = createLaunchBarListener(launchBarState);
+ // Add initial active value to launch bar
+ launchBarManagerMock.launchObjectAdded(launchObject_no1);
+ ILaunchTarget target_no1 = targetManagerMock.getLaunchTarget(targetTypeId, targetId_no1);
+ launchBarManagerMock.setActiveLaunchTarget(target_no1);
+ // Change active values on launch bar
+ ILaunchTarget target_local = targetManagerMock.getLocalLaunchTarget();
+ launchBarManagerMock.setActiveLaunchTarget(target_local);
+ // Add launch bar listener and start test
+ launchBarManagerMock.addListener(launchBarListener);
+ // Change active launch target
+ launchBarManagerMock.setActiveLaunchTarget(target_no1);
+ // Launch bar state should be:
+ // launch descriptor: launchObject_no1
+ // launch target: targetId_no1
+ // launch mode: preferredMode_no1
+ for (var stateMap : launchBarState.get()) {
+ assertEquals(launchObject_no1, ((ILaunchDescriptor) stateMap.get(attr_activeDesc)).getName());
+ assertEquals(targetId_no1, ((ILaunchTarget) stateMap.get(attr_activeTarget)).getId());
+ assertEquals(preferredMode_no1, ((ILaunchMode) stateMap.get(attr_activeMode)).getIdentifier());
+ }
+ }
+
+ /**
+ *
>> launchBarState = new AtomicReference<>();
+ launchBarState.set(new ArrayList<>());
+ ILaunchBarListener launchBarListener = createLaunchBarListener(launchBarState);
+ // Add initial active value to launch bar
+ launchBarManagerMock.launchObjectAdded(launchObject_no1);
+ ILaunchTarget target_no1 = targetManagerMock.getLaunchTarget(targetTypeId, targetId_no1);
+ launchBarManagerMock.setActiveLaunchTarget(target_no1);
+ // Add launch bar listener and start test
+ launchBarManagerMock.addListener(launchBarListener);
+ // Change active mode
+ launchBarManagerMock.setActiveLaunchMode(launchManagerMock.getLaunchMode(runMode));
+ // Launch bar state should be:
+ // launch descriptor: launchObject_no1
+ // launch target: targetId_no1
+ // launch mode: Run
+ for (var stateMap : launchBarState.get()) {
+ assertEquals(launchObject_no1, ((ILaunchDescriptor) stateMap.get(attr_activeDesc)).getName());
+ assertEquals(targetId_no1, ((ILaunchTarget) stateMap.get(attr_activeTarget)).getId());
+ assertEquals(runMode, ((ILaunchMode) stateMap.get(attr_activeMode)).getIdentifier());
+ }
+ }
+
private ILaunchDescriptor createLaunchDescriptorMock(Object launchObject) throws CoreException {
ILaunchDescriptorType descriptorType = mock(ILaunchDescriptorType.class);
ILaunchDescriptor descriptor = mock(ILaunchDescriptor.class);
@@ -506,7 +639,7 @@ private ILaunchConfigurationType createLaunchConfigType(String launchConfigTypeI
}
private ILaunchConfigurationProvider creatLaunchConfigProvier(ILaunchConfigurationType launchConfigType,
- ILaunchDescriptor desc, String preferredMode) throws CoreException {
+ ILaunchDescriptor desc, String preferredMode, String supportTargetTypeId) throws CoreException {
ILaunchConfigurationProvider configProvider = mock(ILaunchConfigurationProvider.class);
ILaunchConfiguration launchConfig = mock(ILaunchConfiguration.class);
doReturn(launchConfig).when(configProvider).getLaunchConfiguration(eq(desc), any(ILaunchTarget.class));
@@ -515,7 +648,8 @@ private ILaunchConfigurationProvider creatLaunchConfigProvier(ILaunchConfigurati
doReturn(launchConfig).when(desc).getAdapter(ILaunchConfiguration.class);
doAnswer(invocation -> {
ILaunchTarget target = (ILaunchTarget) invocation.getArguments()[1];
- return target.getTypeId().equals(ILaunchTargetManager.localLaunchTargetTypeId);
+ return target.getTypeId().equals(supportTargetTypeId)
+ || target.getTypeId().equals(ILaunchTargetManager.localLaunchTargetTypeId);
}).when(configProvider).supports(eq(desc), any(ILaunchTarget.class));
doReturn(preferredMode).when(configProvider).getPreferredLaunchModeId(eq(desc), any(ILaunchTarget.class));
return configProvider;
@@ -542,13 +676,26 @@ private IConfigurationElement createConfigElementMockForConfigProvider(String de
private ILaunchTargetManager createLaunchTargetManagerMock() {
ILaunchTargetManager targetManager = mock(ILaunchTargetManager.class);
- ILaunchTarget localTarget = mock(ILaunchTarget.class);
- doReturn(ILaunchTargetManager.localLaunchTargetTypeId).when(localTarget).getTypeId();
- doReturn("Local").when(localTarget).getId(); //$NON-NLS-1$
- doReturn(new ILaunchTarget[] { localTarget }).when(targetManager).getLaunchTargets();
+ ILaunchTarget localTarget = createLaunchTargetMock(ILaunchTargetManager.localLaunchTargetTypeId, "Local");//$NON-NLS-1$
+ ILaunchTarget dummyTarget_no1 = createLaunchTargetMock(targetTypeId, targetId_no1);
+ ILaunchTarget dummyTarget_no2 = createLaunchTargetMock(targetTypeId, targetId_no2);
+ doReturn(new ILaunchTarget[] { localTarget, dummyTarget_no1, dummyTarget_no2 }).when(targetManager)
+ .getLaunchTargets();
+ doReturn(localTarget).when(targetManager).getLocalLaunchTarget();
+ doReturn(localTarget).when(targetManager).getLaunchTarget(ILaunchTargetManager.localLaunchTargetTypeId,
+ "Local");
+ doReturn(dummyTarget_no1).when(targetManager).getLaunchTarget(targetTypeId, targetId_no1);
+ doReturn(dummyTarget_no2).when(targetManager).getLaunchTarget(targetTypeId, targetId_no2);
return targetManager;
}
+ private ILaunchTarget createLaunchTargetMock(String typeId, String id) {
+ ILaunchTarget localTarget = mock(ILaunchTarget.class);
+ doReturn(typeId).when(localTarget).getTypeId();
+ doReturn(id).when(localTarget).getId(); //$NON-NLS-1$
+ return localTarget;
+ }
+
private ILaunchManager createLaunchManagerMock(Map
>> launchBarState) {
+ return new ILaunchBarListener() {
+ @Override
+ public void activeLaunchDescriptorChanged(ILaunchDescriptor descriptor) {
+ Map