diff options
author | Christian W. Damus | 2015-03-04 16:23:49 +0000 |
---|---|---|
committer | Christian W. Damus | 2015-03-06 14:43:06 +0000 |
commit | c9f4915173b4bfd8a08c180f4c9081e79530d4c7 (patch) | |
tree | c3a44b6e862548200bd5ac3057b9dae966c902bb /tests/junit | |
parent | 7e625965910374da4360f696be484e8242fe48cd (diff) | |
download | org.eclipse.papyrus-c9f4915173b4bfd8a08c180f4c9081e79530d4c7.tar.gz org.eclipse.papyrus-c9f4915173b4bfd8a08c180f4c9081e79530d4c7.tar.xz org.eclipse.papyrus-c9f4915173b4bfd8a08c180f4c9081e79530d4c7.zip |
Bug 461595: [CSS] Support inference of standard notation styles
https://bugs.eclipse.org/bugs/show_bug.cgi?id=461595
Support CSS inference of single-attribute standard styles such as CanonicalStyle.
Fix NPEs resulting from attempts to initialize the CSS engine while a Diagram is
unattached to any resource, such as occurs in the set-up of certain State Machine
Diagram tests that started failing after standard styles such as CanonicalStyle
started delegating to CSS.
Now, the CSS-aware diagram safely creates a local-only CSS engine when not in a
resource and EMF's hook for setting the direct resource is used to purge and
re-initialize the engine when the diagram is added to/removed from a resource.
Diffstat (limited to 'tests/junit')
10 files changed, 346 insertions, 62 deletions
diff --git a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/.classpath b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/.classpath index 2d1a4302f04..098194ca4b7 100644 --- a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/.classpath +++ b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/.classpath @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/.settings/org.eclipse.jdt.core.prefs b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/.settings/org.eclipse.jdt.core.prefs index 4759947300a..9ca8e68231b 100644 --- a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/.settings/org.eclipse.jdt.core.prefs +++ b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/.settings/org.eclipse.jdt.core.prefs @@ -1,10 +1,10 @@ eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.source=1.7
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
diff --git a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/META-INF/MANIFEST.MF b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/META-INF/MANIFEST.MF index 0650c2472fd..a92d947bf8b 100644 --- a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/META-INF/MANIFEST.MF +++ b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/META-INF/MANIFEST.MF @@ -30,5 +30,5 @@ Bundle-ManifestVersion: 2 Bundle-Activator: org.eclipse.papyrus.infra.gmfdiag.css.tests.Activato
r
Bundle-SymbolicName: org.eclipse.papyrus.infra.gmfdiag.css.tests
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
diff --git a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/org.eclipse.papyrus.infra.gmfdiag.css.tests.launch b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/org.eclipse.papyrus.infra.gmfdiag.css.tests.launch index 7e6458447b4..a86553dfc28 100644 --- a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/org.eclipse.papyrus.infra.gmfdiag.css.tests.launch +++ b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/org.eclipse.papyrus.infra.gmfdiag.css.tests.launch @@ -1,41 +1,42 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="askclear" value="false"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="true"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.papyrus.infra.gmfdiag.css.tests/src/org/eclipse/papyrus/infra/gmfdiag/css/tests/tests/AllTests.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.papyrus.infra.gmfdiag.css.tests.tests.AllTests"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.papyrus.infra.gmfdiag.css.tests"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.requiredJavaVersion=1.5 -Xms1024m -Xmx4086m -XX:MaxPermSize=512M"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
-<booleanAttribute key="run_in_ui_thread" value="true"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="false"/>
-<booleanAttribute key="useProduct" value="true"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig"> +<booleanAttribute key="append.args" value="true"/> +<booleanAttribute key="askclear" value="false"/> +<booleanAttribute key="automaticAdd" value="true"/> +<booleanAttribute key="automaticValidate" value="false"/> +<stringAttribute key="bootstrap" value=""/> +<stringAttribute key="checked" value="[NONE]"/> +<booleanAttribute key="clearConfig" value="true"/> +<booleanAttribute key="clearws" value="true"/> +<booleanAttribute key="clearwslog" value="false"/> +<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/> +<booleanAttribute key="default" value="true"/> +<booleanAttribute key="includeOptional" value="true"/> +<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/org.eclipse.papyrus.infra.gmfdiag.css.tests/src/org/eclipse/papyrus/infra/gmfdiag/css/tests/tests/AllTests.java"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="1"/> +</listAttribute> +<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/> +<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/> +<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/> +<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/> +<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> +<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.papyrus.infra.gmfdiag.css.tests.tests.AllTests"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.papyrus.infra.gmfdiag.css.tests"/> +<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.requiredJavaVersion=1.5 -Xms1024m -Xmx4086m -XX:MaxPermSize=512M -Doomph.setup.skip=true -Doomph.setup.questionnaire.skip=true"/> +<stringAttribute key="pde.version" value="3.3"/> +<stringAttribute key="product" value="org.eclipse.sdk.ide"/> +<booleanAttribute key="run_in_ui_thread" value="true"/> +<booleanAttribute key="show_selected_only" value="false"/> +<booleanAttribute key="tracing" value="false"/> +<booleanAttribute key="useCustomFeatures" value="false"/> +<booleanAttribute key="useDefaultConfig" value="true"/> +<booleanAttribute key="useDefaultConfigArea" value="false"/> +<booleanAttribute key="useProduct" value="true"/> +</launchConfiguration> diff --git a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/model/inferredNotationStylesTest/model.di b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/model/inferredNotationStylesTest/model.di new file mode 100644 index 00000000000..dd040596777 --- /dev/null +++ b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/model/inferredNotationStylesTest/model.di @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="ASCII"?> +<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi"> + <pageList> + <availablePage> + <emfPageIdentifier href="model.notation#_MDVbsHTIEeG92qGoaUUGLQ"/> + </availablePage> + </pageList> + <sashModel currentSelection="//@sashModel/@windows.0/@children.0"> + <windows> + <children xsi:type="di:TabFolder"> + <children> + <emfPageIdentifier href="model.notation#_MDVbsHTIEeG92qGoaUUGLQ"/> + </children> + </children> + </windows> + </sashModel> +</di:SashWindowsMngr> diff --git a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/model/inferredNotationStylesTest/model.notation b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/model/inferredNotationStylesTest/model.notation new file mode 100644 index 00000000000..ada4416768d --- /dev/null +++ b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/model/inferredNotationStylesTest/model.notation @@ -0,0 +1,82 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML"> + <notation:Diagram xmi:id="_MDVbsHTIEeG92qGoaUUGLQ" type="PapyrusUMLClassDiagram" name="main" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_cO9GAMQEEeSR9Nn53D1mFA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_cO-UIMQEEeSR9Nn53D1mFA" type="5029"/> + <children xmi:type="notation:DecorationNode" xmi:id="_cO-7MMQEEeSR9Nn53D1mFA" type="8510"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_cO-7McQEEeSR9Nn53D1mFA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_cO-7MsQEEeSR9Nn53D1mFA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_cO-7M8QEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_cO-7NMQEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_cO-7NcQEEeSR9Nn53D1mFA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cO-7NsQEEeSR9Nn53D1mFA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_cO_iQMQEEeSR9Nn53D1mFA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_cO_iQcQEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_cO_iQsQEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_cO_iQ8QEEeSR9Nn53D1mFA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cO_iRMQEEeSR9Nn53D1mFA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_cO_iRcQEEeSR9Nn53D1mFA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_cO_iRsQEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_cO_iR8QEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_cO_iSMQEEeSR9Nn53D1mFA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cO_iScQEEeSR9Nn53D1mFA"/> + </children> + <element xmi:type="uml:Class" href="model.uml#_cOP7YMQEEeSR9Nn53D1mFA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cO9GAcQEEeSR9Nn53D1mFA" x="33" y="58"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_drmqMMQEEeSR9Nn53D1mFA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_drmqMsQEEeSR9Nn53D1mFA" type="5029"/> + <children xmi:type="notation:DecorationNode" xmi:id="_drnRQMQEEeSR9Nn53D1mFA" type="8510"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_drnRQcQEEeSR9Nn53D1mFA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_drnRQsQEEeSR9Nn53D1mFA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_drnRQ8QEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_drnRRMQEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_drnRRcQEEeSR9Nn53D1mFA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_drnRRsQEEeSR9Nn53D1mFA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_drnRR8QEEeSR9Nn53D1mFA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_drnRSMQEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_drnRScQEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_drnRSsQEEeSR9Nn53D1mFA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_drnRS8QEEeSR9Nn53D1mFA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_drn4UMQEEeSR9Nn53D1mFA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_drn4UcQEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_drn4UsQEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_drn4U8QEEeSR9Nn53D1mFA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_drn4VMQEEeSR9Nn53D1mFA"/> + </children> + <styles xmi:type="notation:StringListValueStyle" xmi:id="_-gCwoMQEEeSR9Nn53D1mFA" name="cssClass"> + <stringListValue>unsynchronized</stringListValue> + </styles> + <element xmi:type="uml:Class" href="model.uml#_drk1AMQEEeSR9Nn53D1mFA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_drmqMcQEEeSR9Nn53D1mFA" x="159" y="58"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_hKqLAMQEEeSR9Nn53D1mFA" type="2006"> + <children xmi:type="notation:DecorationNode" xmi:id="_hKqLAsQEEeSR9Nn53D1mFA" type="5023"/> + <children xmi:type="notation:DecorationNode" xmi:id="_hKqyEMQEEeSR9Nn53D1mFA" type="8508"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_hKqyEcQEEeSR9Nn53D1mFA" y="5"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_hKqyEsQEEeSR9Nn53D1mFA" type="7015"> + <styles xmi:type="notation:TitleStyle" xmi:id="_hKqyE8QEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_hKqyFMQEEeSR9Nn53D1mFA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_hKqyFcQEEeSR9Nn53D1mFA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hKqyFsQEEeSR9Nn53D1mFA"/> + </children> + <styles xmi:type="notation:StringListValueStyle" xmi:id="__7bwkMQEEeSR9Nn53D1mFA" name="cssClass"> + <stringListValue>synchronized</stringListValue> + </styles> + <element xmi:type="uml:Enumeration" href="model.uml#_hKoV0MQEEeSR9Nn53D1mFA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hKqLAcQEEeSR9Nn53D1mFA" x="282" y="57"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_MDVbsXTIEeG92qGoaUUGLQ"/> + <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_ifHmEHTlEeGmJ4iNo0Pbxg" name="css_stylesheets" eObjectListValue="_ifHmEXTlEeGmJ4iNo0Pbxg"/> + <element xmi:type="uml:Model" href="model.uml#_MBtEAHTIEeG92qGoaUUGLQ"/> + </notation:Diagram> + <css:StyleSheetReference xmi:id="_ifHmEXTlEeGmJ4iNo0Pbxg" path="/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/stylesheets/inferredNotationStylesTest.css"/> + <css:ModelStyleSheets xmi:id="_pfpgAMQEEeSR9Nn53D1mFA"/> +</xmi:XMI> diff --git a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/model/inferredNotationStylesTest/model.uml b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/model/inferredNotationStylesTest/model.uml new file mode 100644 index 00000000000..e73dccbb71b --- /dev/null +++ b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/model/inferredNotationStylesTest/model.uml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_MBtEAHTIEeG92qGoaUUGLQ" name="model"> + <packagedElement xmi:type="uml:Class" xmi:id="_cOP7YMQEEeSR9Nn53D1mFA" name="Foo"/> + <packagedElement xmi:type="uml:Class" xmi:id="_drk1AMQEEeSR9Nn53D1mFA" name="Unsynchronized"/> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_hKoV0MQEEeSR9Nn53D1mFA" name="Synchronized"/> +</uml:Model> diff --git a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/stylesheets/inferredNotationStylesTest.css b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/stylesheets/inferredNotationStylesTest.css new file mode 100644 index 00000000000..aed033aca5f --- /dev/null +++ b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/stylesheets/inferredNotationStylesTest.css @@ -0,0 +1,24 @@ +/***************************************************************************** + * Copyright (c) 2015 Christian W. Damus and others. + * + * 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +Class { + canonical: true +} + +.synchronized { + canonical: true +} + +.unsynchronized { + canonical: false +}
\ No newline at end of file diff --git a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/src/org/eclipse/papyrus/infra/gmfdiag/css/tests/tests/AllTests.java b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/src/org/eclipse/papyrus/infra/gmfdiag/css/tests/tests/AllTests.java index 031e36076cc..3b32fb8c435 100644 --- a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/src/org/eclipse/papyrus/infra/gmfdiag/css/tests/tests/AllTests.java +++ b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/src/org/eclipse/papyrus/infra/gmfdiag/css/tests/tests/AllTests.java @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2012 CEA LIST. + * Copyright (c) 2012, 2015 CEA LIST, Christian W. Damus, and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,6 +8,7 @@ * * Contributors: * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation + * Christian W. Damus - bug 461595 *****************************************************************************/ package org.eclipse.papyrus.infra.gmfdiag.css.tests.tests; @@ -17,15 +18,16 @@ import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) -@SuiteClasses({ - CSSClassProviderTest.class, - CSSStylesheetTest.class, - CSSModelStylesheetTest.class, - CSSCompartmentsTests.class, - CSSSupportTest.class, - CSSProjectStylesheetsTest.class, - CSSWorkspaceThemeTest.class +@SuiteClasses({ + CSSClassProviderTest.class, + CSSStylesheetTest.class, + CSSModelStylesheetTest.class, + CSSCompartmentsTests.class, + CSSSupportTest.class, + CSSProjectStylesheetsTest.class, + CSSWorkspaceThemeTest.class, + InferredNotationStylesTest.class }) public class AllTests { - //Test suite + // Test suite } diff --git a/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/src/org/eclipse/papyrus/infra/gmfdiag/css/tests/tests/InferredNotationStylesTest.java b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/src/org/eclipse/papyrus/infra/gmfdiag/css/tests/tests/InferredNotationStylesTest.java new file mode 100644 index 00000000000..73b26e5d01b --- /dev/null +++ b/tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/src/org/eclipse/papyrus/infra/gmfdiag/css/tests/tests/InferredNotationStylesTest.java @@ -0,0 +1,152 @@ +/***************************************************************************** + * Copyright (c) 2015 Christian W. Damus and others. + * + * 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ +package org.eclipse.papyrus.infra.gmfdiag.css.tests.tests; + + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.fail; + +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.edit.command.AddCommand; +import org.eclipse.emf.edit.command.SetCommand; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.gmf.runtime.notation.CanonicalStyle; +import org.eclipse.gmf.runtime.notation.Diagram; +import org.eclipse.gmf.runtime.notation.NotationFactory; +import org.eclipse.gmf.runtime.notation.NotationPackage; +import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel; +import org.eclipse.papyrus.junit.framework.classification.tests.AbstractPapyrusTest; +import org.eclipse.papyrus.junit.utils.rules.HouseKeeper; +import org.eclipse.papyrus.junit.utils.rules.ModelSetFixture; +import org.eclipse.papyrus.junit.utils.rules.PluginResource; +import org.eclipse.papyrus.junit.utils.rules.ServiceRegistryModelSetFixture; +import org.eclipse.uml2.uml.Classifier; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; + +import com.google.common.collect.Iterables; + +@PluginResource("resources/model/inferredNotationStylesTest/model.di") +public class InferredNotationStylesTest extends AbstractPapyrusTest { + + @Rule + public final HouseKeeper houseKeeper = new HouseKeeper(); + + @Rule + public final ModelSetFixture model = new ServiceRegistryModelSetFixture(); + + private Diagram diagram; + + private View fooClass; + + private View unsynchronizedClass; + + private View synchronizedEnumeration; + + @Test + public void canonicalStyleInferred() { + assertCanonical(requireCanonicalStyle(fooClass)); + assertCanonical(requireCanonicalStyle(synchronizedEnumeration)); + assertNoncanonical(requireCanonicalStyle(unsynchronizedClass)); + } + + @Test + public void canonicalStyleNotInferred() { + refuseCanonicalStyle(diagram); + } + + @Test + public void overrideInferredStyle() { + setCanonical(fooClass, false); + setCanonical(unsynchronizedClass, true); + + assertNoncanonical(requireCanonicalStyle(fooClass)); + assertCanonical(requireCanonicalStyle(unsynchronizedClass)); + } + + // + // Test framework + // + + @Before + public void gatherViews() throws Exception { + NotationModel notation = (NotationModel) model.getResourceSet().getModel(NotationModel.MODEL_ID); + diagram = notation.getDiagram("main"); + + for (View next : Iterables.filter(diagram.getChildren(), View.class)) { + if (next.getElement() instanceof Classifier) { + Classifier classifier = (Classifier) next.getElement(); + switch (classifier.getName()) { + case "Foo": + fooClass = next; + break; + case "Unsynchronized": + unsynchronizedClass = next; + break; + case "Synchronized": + synchronizedEnumeration = next; + break; + default: + // Pass + break; + } + } + } + } + + CanonicalStyle requireCanonicalStyle(View view) { + CanonicalStyle result = (CanonicalStyle) view.getStyle(NotationPackage.Literals.CANONICAL_STYLE); + assertThat("No canonical style is inferred", result, notNullValue()); + return result; + } + + CanonicalStyle refuseCanonicalStyle(View view) { + CanonicalStyle result = (CanonicalStyle) view.getStyle(NotationPackage.Literals.CANONICAL_STYLE); + if (result != null) { + if (result.eContainer() == null) { + fail("A canonical style is inferred"); + } else { + fail("A canonical style is explicitly set"); + } + } + return result; + } + + void assertCanonical(CanonicalStyle style) { + assertThat("View is not canonical", style.isCanonical(), is(true)); + } + + void assertNoncanonical(CanonicalStyle style) { + assertThat("View is canonical", style.isCanonical(), is(false)); + } + + void setCanonical(View view, boolean canonical) { + final CanonicalStyle oldStyle = Iterables.getFirst(Iterables.filter(view.getStyles(), CanonicalStyle.class), null); + + EditingDomain domain = model.getEditingDomain(); + Command command = null; + if ((oldStyle != null) && (oldStyle.eContainer() == view)) { + command = SetCommand.create(domain, oldStyle, NotationPackage.Literals.CANONICAL_STYLE__CANONICAL, canonical); + } else { + // The force-value annotation must find the style already attached to the view when we set the style attribute + final CanonicalStyle newStyle = NotationFactory.eINSTANCE.createCanonicalStyle(); + command = AddCommand.create(domain, view, NotationPackage.Literals.VIEW__STYLES, newStyle); + command = command.chain(SetCommand.create(domain, newStyle, NotationPackage.Literals.CANONICAL_STYLE__CANONICAL, canonical)); + } + domain.getCommandStack().execute(command); + } +} |