Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java')
-rw-r--r--tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java75
1 files changed, 74 insertions, 1 deletions
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java
index b3e9bd29573..bd4e8457b1a 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EPartServiceTest.java
@@ -10464,6 +10464,45 @@ public class EPartServiceTest extends TestCase {
assertNull("The part should no longer be reachable", ref.get());
}
+ public void testsEventWithExceptions() {
+ MApplication application = ApplicationFactoryImpl.eINSTANCE
+ .createApplication();
+
+ MWindow window = BasicFactoryImpl.eINSTANCE.createWindow();
+ application.getChildren().add(window);
+ application.setSelectedElement(window);
+
+ MPartStack partStack = BasicFactoryImpl.eINSTANCE.createPartStack();
+ window.getChildren().add(partStack);
+ window.setSelectedElement(partStack);
+
+ MPart partA = BasicFactoryImpl.eINSTANCE.createPart();
+ window.getChildren().add(partA);
+ window.setSelectedElement(partA);
+
+ MPart partB = BasicFactoryImpl.eINSTANCE.createPart();
+ window.getChildren().add(partB);
+
+ initialize(applicationContext, application);
+ getEngine().createGui(window);
+
+ EPartService partService = window.getContext().get(EPartService.class);
+ partService.activate(partA);
+ partService.activate(partB);
+ partService.activate(partA);
+
+ partService.addPartListener(new ExceptionListener());
+ PartListener listener = new PartListener();
+ partService.addPartListener(listener);
+
+ partService.activate(partB);
+ assertEquals(1, listener.getActivated());
+ assertEquals(1, listener.getDeactivated());
+ assertEquals(1, listener.getVisible());
+ assertEquals(1, listener.getHidden());
+ assertEquals(1, listener.getBroughtToTop());
+ }
+
private MApplication createApplication(String partId) {
return createApplication(new String[] { partId });
}
@@ -10527,11 +10566,13 @@ public class EPartServiceTest extends TestCase {
private List<MPart> deactivatedParts = new ArrayList<MPart>();
private List<MPart> hiddenParts = new ArrayList<MPart>();
private List<MPart> visibleParts = new ArrayList<MPart>();
+ private List<MPart> broughtToTopParts = new ArrayList<MPart>();
private int activated = 0;
private int deactivated = 0;
private int hidden = 0;
private int visible = 0;
+ private int broughtToTop = 0;
private boolean valid = true;
@@ -10565,6 +10606,10 @@ public class EPartServiceTest extends TestCase {
return visible;
}
+ public int getBroughtToTop() {
+ return broughtToTop;
+ }
+
public boolean isValid() {
return valid;
}
@@ -10594,7 +10639,11 @@ public class EPartServiceTest extends TestCase {
}
public void partBroughtToTop(MPart part) {
-
+ if (valid && part == null) {
+ valid = false;
+ }
+ broughtToTop++;
+ broughtToTopParts.add(part);
}
public void partDeactivated(MPart part) {
@@ -10622,4 +10671,28 @@ public class EPartServiceTest extends TestCase {
}
}
+
+ class ExceptionListener implements IPartListener {
+
+ public void partActivated(MPart part) {
+ throw new RuntimeException();
+ }
+
+ public void partBroughtToTop(MPart part) {
+ throw new RuntimeException();
+ }
+
+ public void partDeactivated(MPart part) {
+ throw new RuntimeException();
+ }
+
+ public void partHidden(MPart part) {
+ throw new RuntimeException();
+ }
+
+ public void partVisible(MPart part) {
+ throw new RuntimeException();
+ }
+
+ }
}

Back to the top