Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian W. Damus2015-03-04 16:23:49 +0000
committerChristian W. Damus2015-03-06 14:43:06 +0000
commitc9f4915173b4bfd8a08c180f4c9081e79530d4c7 (patch)
treec3a44b6e862548200bd5ac3057b9dae966c902bb /tests/junit
parent7e625965910374da4360f696be484e8242fe48cd (diff)
downloadorg.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')
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/.classpath14
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/.settings/org.eclipse.jdt.core.prefs6
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/META-INF/MANIFEST.MF2
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/org.eclipse.papyrus.infra.gmfdiag.css.tests.launch83
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/model/inferredNotationStylesTest/model.di17
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/model/inferredNotationStylesTest/model.notation82
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/model/inferredNotationStylesTest/model.uml6
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/resources/stylesheets/inferredNotationStylesTest.css24
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/src/org/eclipse/papyrus/infra/gmfdiag/css/tests/tests/AllTests.java22
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.css.tests/src/org/eclipse/papyrus/infra/gmfdiag/css/tests/tests/InferredNotationStylesTest.java152
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&#10;-Doomph.setup.skip=true&#10;-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);
+ }
+}

Back to the top