Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Monnier2019-02-13 05:26:39 -0500
committerPierre-Charles David2019-02-15 04:14:01 -0500
commit48b1eaf193ee573e6f6365e08fea60edbe87fa24 (patch)
tree894a1bbb366fac91d949278dfd2b9db56ac112aa
parent63a01c9123f9f1d284934b60a00d60ff82370fb6 (diff)
downloadorg.eclipse.sirius-48b1eaf193ee573e6f6365e08fea60edbe87fa24.tar.gz
org.eclipse.sirius-48b1eaf193ee573e6f6365e08fea60edbe87fa24.tar.xz
org.eclipse.sirius-48b1eaf193ee573e6f6365e08fea60edbe87fa24.zip
[541555] Handle exception on broken diagram openingv6.1.2rc5v6.1.2
Opening a diagram with a GMF node without an element reference caused an IllegalStateException due to the ViewImpl.getElement workaround. Bug: 541555 Change-Id: Ic35a626cb33fe6dd4f1797ff0e1e9cd454a02a42 Signed-off-by: Steve Monnier <steve.monnier@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/DDiagramEditorImpl.java2
-rw-r--r--plugins/org.eclipse.sirius.tests.swtbot/data/unit/classCastDiagram/illegalArgumentExceptionSample/My.ecore7
-rw-r--r--plugins/org.eclipse.sirius.tests.swtbot/data/unit/classCastDiagram/illegalArgumentExceptionSample/My.odesign23
-rw-r--r--plugins/org.eclipse.sirius.tests.swtbot/data/unit/classCastDiagram/illegalArgumentExceptionSample/representations.aird63
-rw-r--r--plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/OpenDiagramWithExceptionTest.java (renamed from plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/OpenDiagramWithClassCastExceptionTest.java)67
-rw-r--r--plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java2
6 files changed, 146 insertions, 18 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/DDiagramEditorImpl.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/DDiagramEditorImpl.java
index f614773753..f7832e5032 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/DDiagramEditorImpl.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/DDiagramEditorImpl.java
@@ -608,7 +608,7 @@ public class DDiagramEditorImpl extends SiriusDiagramEditor implements DDiagramE
notify(REPRESENTATION_EDITION_PERMISSION_DENIED);
}
}
- } catch (ClassCastException | NullPointerException e) {
+ } catch (ClassCastException | NullPointerException | IllegalArgumentException e) {
Boolean response = MessageDialog.openConfirm(parent.getShell(), Messages.DDiagramEditorImpl_diagramRefreshTitle, Messages.DDiagramEditorImpl_shouldWeRefreshQuestion);
close(false);
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/classCastDiagram/illegalArgumentExceptionSample/My.ecore b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/classCastDiagram/illegalArgumentExceptionSample/My.ecore
new file mode 100644
index 0000000000..94cd897d8f
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/classCastDiagram/illegalArgumentExceptionSample/My.ecore
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="P0">
+ <eClassifiers xsi:type="ecore:EClass" name="NewEClass1">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="newAttribute"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/classCastDiagram/illegalArgumentExceptionSample/My.odesign b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/classCastDiagram/illegalArgumentExceptionSample/My.odesign
new file mode 100644
index 0000000000..cef191dbd4
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/classCastDiagram/illegalArgumentExceptionSample/My.odesign
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<description:Group xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" name="Doremi-4005" version="12.0.0.2017041100">
+ <ownedViewpoints name="Doremi-4005" modelFileExtension="ecore">
+ <ownedRepresentations xsi:type="description_1:DiagramDescription" name="Doremi-4005" domainClass="EPackage" enablePopupBars="true">
+ <defaultLayer name="Default">
+ <nodeMappings name="EClass" semanticCandidatesExpression="feature:eClassifiers" domainClass="EClass">
+ <style xsi:type="style:WorkspaceImageDescription" labelSize="12" showIcon="false" tooltipExpression="feature:name" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/doremi_4005/logo_obeo.png">
+ <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </style>
+ </nodeMappings>
+ <containerMappings name="EPackage" semanticCandidatesExpression="feature:eSubpackages" domainClass="EPackage" reusedNodeMappings="//@ownedViewpoints[name='Doremi-4005']/@ownedRepresentations[name='Doremi-4005']/@defaultLayer/@nodeMappings[name='EClass']">
+ <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12">
+ <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ </style>
+ </containerMappings>
+ </defaultLayer>
+ </ownedRepresentations>
+ </ownedViewpoints>
+</description:Group>
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/classCastDiagram/illegalArgumentExceptionSample/representations.aird b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/classCastDiagram/illegalArgumentExceptionSample/representations.aird
new file mode 100644
index 0000000000..604c09a0dd
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/classCastDiagram/illegalArgumentExceptionSample/representations.aird
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
+ <viewpoint:DAnalysis uid="_H4uJMCrgEem6yvuHokhqDg" selectedViews="_fw8JQCrlEem6yvuHokhqDg" version="14.1.0.201810161215">
+ <semanticResources>My.ecore</semanticResources>
+ <ownedViews xmi:type="viewpoint:DView" uid="_JJyvgCrgEem6yvuHokhqDg">
+ <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.sirius.sample.ecore.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
+ </ownedViews>
+ <ownedViews xmi:type="viewpoint:DView" uid="_fw8JQCrlEem6yvuHokhqDg">
+ <viewpoint xmi:type="description:Viewpoint" href="My.odesign#//@ownedViewpoints[name='Doremi-4005']"/>
+ <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_lYmVUSrlEem6yvuHokhqDg" name="new Doremi-4005" repPath="#_lYiD4CrlEem6yvuHokhqDg">
+ <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='Doremi-4005']/@ownedRepresentations[name='Doremi-4005']"/>
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ </ownedRepresentationDescriptors>
+ </ownedViews>
+ </viewpoint:DAnalysis>
+ <diagram:DSemanticDiagram uid="_lYiD4CrlEem6yvuHokhqDg" name="new Doremi-4005">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_lYluQyrlEem6yvuHokhqDg" source="DANNOTATION_CUSTOMIZATION_KEY">
+ <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_lYluRCrlEem6yvuHokhqDg"/>
+ </ownedAnnotationEntries>
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_lYm8YCrlEem6yvuHokhqDg" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_lYm8YSrlEem6yvuHokhqDg" type="Sirius" element="_lYiD4CrlEem6yvuHokhqDg" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_-8afECrrEem6yvuHokhqDg" type="2001" element="_lYj5ECrlEem6yvuHokhqDg">
+ <children xmi:type="notation:Node" xmi:id="_-8afEyrrEem6yvuHokhqDg" type="5002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-8afFCrrEem6yvuHokhqDg" y="5"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_y9EiwCrsEem6yvuHokhqDg" type="3005" element="_y8i-USrsEem6yvuHokhqDg">
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_y9EiwSrsEem6yvuHokhqDg" fontName="Segoe UI"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y9EiwirsEem6yvuHokhqDg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_-8afESrrEem7avuHokhqDg" fontColor="1345869" fontName="Segoe UI" fontHeight="12"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-8afE8rrEem6yvuHokhqDg" x="84" y="348" width="300" height="76"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_-8afECrrE1m6yvugokhqDg" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_-8afEyr2Eem6yvuHo45qDg" type="5002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-8afFCrAAem6yvuHokhqDg" y="5"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_y9EiwCraEem6yvuHoahqDg" type="3005">
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_y9EiwSasEem2yvuHoahqDg" fontName="Segoe UI"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y9EawirbEem6yvuHokcqDg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_-8afESrraZm6yvuHokhqDg" fontColor="1345869" fontName="Segoe UI" fontHeight="12"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-8aRTirrEea6yvuHokhqDg" x="84" y="348" width="300" height="76"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_lYm8YirlEem6yvuHokhqDg"/>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNode" uid="_lYj5ECrlEem6yvuHokhqDg" name="NewEClass1" tooltipText="NewEClass1" width="-1" height="-1" resizeKind="NSEW">
+ <target xmi:type="ecore:EClass" href="My.ecore#//NewEClass1"/>
+ <semanticElements xmi:type="ecore:EClass" href="My.ecore#//NewEClass1"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:WorkspaceImage" uid="_y8i-USrsEem6yvuHokhqDg" labelSize="12" showIcon="false" workspacePath="/doremi_4005/logo_obeo.png">
+ <description xmi:type="style:WorkspaceImageDescription" href="My.odesign#//@ownedViewpoints[name='Doremi-4005']/@ownedRepresentations[name='Doremi-4005']/@defaultLayer/@nodeMappings[name='EClass']/@style"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="My.odesign#//@ownedViewpoints[name='Doremi-4005']/@ownedRepresentations[name='Doremi-4005']/@defaultLayer/@nodeMappings[name='EClass']"/>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='Doremi-4005']/@ownedRepresentations[name='Doremi-4005']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_lYiD4SrlEem6yvuHokhqDg"/>
+ <activatedLayers xmi:type="description_1:Layer" href="My.odesign#//@ownedViewpoints[name='Doremi-4005']/@ownedRepresentations[name='Doremi-4005']/@defaultLayer"/>
+ <target xmi:type="ecore:EPackage" href="My.ecore#/"/>
+ </diagram:DSemanticDiagram>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/OpenDiagramWithClassCastExceptionTest.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/OpenDiagramWithExceptionTest.java
index 24823ebd90..4508de0718 100644
--- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/OpenDiagramWithClassCastExceptionTest.java
+++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/OpenDiagramWithExceptionTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2018 THALES GLOBAL SERVICES.
+ * Copyright (c) 2018, 2019 THALES GLOBAL SERVICES.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -11,60 +11,95 @@
package org.eclipse.sirius.tests.swtbot;
import org.eclipse.sirius.diagram.DDiagram;
+import org.eclipse.sirius.diagram.description.DiagramDescription;
import org.eclipse.sirius.tests.swtbot.support.api.AbstractSiriusSwtBotGefTestCase;
import org.eclipse.sirius.tests.swtbot.support.api.business.UIResource;
import org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor;
import org.eclipse.sirius.ui.business.api.preferences.SiriusUIPreferencesKeys;
+import org.eclipse.sirius.viewpoint.DRepresentation;
import org.eclipse.swtbot.swt.finder.waits.Conditions;
import org.eclipse.swtbot.swt.finder.waits.DefaultCondition;
/**
- * Test suite to make sure that ClassCastException at diagram opening is properly handled.
+ * Test suite to make sure that exceptions at diagram opening are properly handled.
*
* @author fbarbin
*/
-public class OpenDiagramWithClassCastExceptionTest extends AbstractSiriusSwtBotGefTestCase {
+public class OpenDiagramWithExceptionTest extends AbstractSiriusSwtBotGefTestCase {
private static final String PATH = "/data/unit/classCastDiagram/";
+ private static final String PATH2 = "/data/unit/classCastDiagram/illegalArgumentExceptionSample/";
+
private static final String MODELER_PATH = "My.odesign";
private static final String SEMANTIC_MODEL_PATH = "My1.ecore";
+ private static final String SEMANTIC_MODEL_PATH2 = "My.ecore";
+
private static final String AIRD_MODEL_PATH = "My.aird";
+ private static final String AIRD_MODEL_PATH2 = "representations.aird";
+
private static final String DESC_NAME = "Diag";
+ private static final String DESC_NAME2 = "Doremi-4005";
+
private static final String REPRESENTATION_NAME = "new " + DESC_NAME;
- @Override
- protected void onSetUpBeforeClosingWelcomePage() throws Exception {
- copyFileToTestProject(Activator.PLUGIN_ID, PATH, SEMANTIC_MODEL_PATH, AIRD_MODEL_PATH, MODELER_PATH);
+ private static final String REPRESENTATION_NAME2 = "new " + DESC_NAME2;
+
+
+ /**
+ * Make sure that when a {@link ClassCastException} occurs while opening a diagram (because of an unsynchronized
+ * issue between GMF and Sirius model), the dialog asking for refreshing the editor is open and when accepting, the
+ * editor is refreshed.
+ */
+ public void testClassCastException() {
+ openDiagram(PATH, SEMANTIC_MODEL_PATH, AIRD_MODEL_PATH, DESC_NAME, REPRESENTATION_NAME);
}
- @Override
- protected void onSetUpAfterOpeningDesignerPerspective() throws Exception {
- sessionAirdResource = new UIResource(designerProject, "/", AIRD_MODEL_PATH);
- localSession = designerPerspective.openSessionFromFile(sessionAirdResource, true);
+ /**
+ * Make sure that when an {@link IllegalArgumentException} occurs while opening a diagram (because of an
+ * unsynchronized issue between GMF and Sirius model), the dialog asking for refreshing the editor is open and when
+ * accepting, the editor is refreshed.
+ */
+ public void testIllegalArgumentException() {
+ openDiagram(PATH2, SEMANTIC_MODEL_PATH2, AIRD_MODEL_PATH2, DESC_NAME2, REPRESENTATION_NAME2);
}
/**
- * Make sure that when a ClassCastException occurs while opening a diagram (because of an unsynchronized issue
- * between GMF and Sirius model), the dialog asking for refreshing the editor is open and when accepting, the editor
- * is refreshed.
+ * Make sure that when an {@link IllegalArgumentException} occurs while opening a diagram (because of an
+ * unsynchronized issue between GMF and Sirius model), the dialog asking for refreshing the editor is open and when
+ * accepting, the editor is refreshed.
+ *
+ * @param path
+ * path of the sample
+ * @param semanticModelPath
+ * semantic model
+ * @param airdModelPath
+ * aird model
+ * @param descName
+ * {@link DiagramDescription} name
+ * @param representationName
+ * {@link DRepresentation} name
*/
- public void testClassCastException() {
+ public void openDiagram(String path, String semanticModelPath, String airdModelPath, String descName, String representationName) {
// If the refresh at opening is activated, the error does not occur.
changeSiriusUIPreference(SiriusUIPreferencesKeys.PREF_REFRESH_ON_REPRESENTATION_OPENING.name(), false);
+ copyFileToTestProject(Activator.PLUGIN_ID, path, semanticModelPath, airdModelPath, MODELER_PATH);
+ sessionAirdResource = new UIResource(designerProject, "/", airdModelPath);
+ localSession = designerPerspective.openSessionFromFile(sessionAirdResource, true);
+
// We perform the openRepresentation in a separate thread to avoid blocking the swtbot thread while the popup
// asking for refreshing the representation is open. Indeed, openReprensation will call
// DialectUIManager.INSTANCE.openEditor that will perform an EclipseUIUtil.displaySyncExec. That causes the
// SWTBot thread waiting for the UI Thread end of execution but this one is waiting for the user with the
// popup.
Thread thread = new Thread(() -> {
- editor = (SWTBotSiriusDiagramEditor) openRepresentation(localSession.getOpenedSession(), DESC_NAME, REPRESENTATION_NAME, DDiagram.class);
+ editor = (SWTBotSiriusDiagramEditor) openRepresentation(localSession.getOpenedSession(), descName, representationName, DDiagram.class);
});
thread.start();
bot.waitUntil(Conditions.shellIsActive("Refresh the diagram"));
@@ -74,7 +109,7 @@ public class OpenDiagramWithClassCastExceptionTest extends AbstractSiriusSwtBotG
@Override
public boolean test() throws Exception {
// After having performed the refresh, the editor is expected to be dirty.
- return editor != null && editor.isDirty() && editor.getTitle().equals(REPRESENTATION_NAME);
+ return editor != null && editor.isDirty() && editor.getTitle().equals(representationName);
}
@Override
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java
index 0a4232a0ed..ef2697efcc 100644
--- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java
+++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java
@@ -172,7 +172,7 @@ public class AllTestSuite extends TestCase {
suite.addTestSuite(SpecificClosedOrNotClosedEditorTest.class);
suite.addTestSuite(MigrationTest.class);
suite.addTest(new JUnit4TestAdapter(DragNDropTest.class));
- suite.addTestSuite(OpenDiagramWithClassCastExceptionTest.class);
+ suite.addTestSuite(OpenDiagramWithExceptionTest.class);
}
/**

Back to the top