Add tests for ScriptTask.script
The tests already succeed because of ExtendedMetadata defined
for this structural feature, the same should apply to
GlobalScriptTask.script and TextAnnotation.text.
diff --git a/org.eclipse.bpmn2.tests/src/org/eclipse/bpmn2/tests/XMISerializationTest.java b/org.eclipse.bpmn2.tests/src/org/eclipse/bpmn2/tests/XMISerializationTest.java
index 8556a4a..7f29e0d 100644
--- a/org.eclipse.bpmn2.tests/src/org/eclipse/bpmn2/tests/XMISerializationTest.java
+++ b/org.eclipse.bpmn2.tests/src/org/eclipse/bpmn2/tests/XMISerializationTest.java
@@ -100,4 +100,23 @@
Node.CDATA_SECTION_NODE == nodeType);
}
}
+
+ @Override
+ protected void checkSerializationScriptContent(Resource res) throws SAXException, IOException,
+ ParserConfigurationException {
+ DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance();
+ Document xml = fact.newDocumentBuilder().parse(new File(res.getURI().toFileString()));
+ Node scriptNode = xml.getElementsByTagName("flowElements").item(0);
+
+ for (int i = 0; i < scriptNode.getChildNodes().getLength(); i++) {
+ Node cur = scriptNode.getChildNodes().item(i);
+ short nodeType = cur.getNodeType();
+ assertFalse("Documentation has text content (not valid in XMI)",
+ Node.TEXT_NODE == nodeType && cur.getTextContent().trim().length() > 0);
+ assertFalse("Documentation has CDATA content (not valid in XMI)",
+ Node.CDATA_SECTION_NODE == nodeType);
+ assertFalse("Documentation has element content 'script' (not valid in XMI)",
+ "script".equals(cur.getNodeName()));
+ }
+ }
}
diff --git a/org.eclipse.bpmn2.tests/src/org/eclipse/bpmn2/tests/XMLSerializationTest.java b/org.eclipse.bpmn2.tests/src/org/eclipse/bpmn2/tests/XMLSerializationTest.java
index d226008..abacac3 100644
--- a/org.eclipse.bpmn2.tests/src/org/eclipse/bpmn2/tests/XMLSerializationTest.java
+++ b/org.eclipse.bpmn2.tests/src/org/eclipse/bpmn2/tests/XMLSerializationTest.java
@@ -29,6 +29,8 @@
import org.eclipse.bpmn2.Documentation;
import org.eclipse.bpmn2.Process;
import org.eclipse.bpmn2.RootElement;
+import org.eclipse.bpmn2.ScriptTask;
+import org.eclipse.bpmn2.ServiceTask;
import org.eclipse.bpmn2.util.Bpmn2ResourceFactoryImpl;
import org.eclipse.bpmn2.util.NamespaceHelper;
import org.eclipse.emf.common.EMFPlugin;
@@ -77,6 +79,10 @@
@Before
public void setUpFields() {
model = Bpmn2Factory.eINSTANCE.createDefinitions();
+ model.setExporter("Exporter");
+ model.setExporterVersion("1");
+ model.setName("Name");
+ model.setTargetNamespace("tns1");
createdFiles = new LinkedList<URI>();
}
@@ -261,10 +267,6 @@
final String docId = "doc1";
final String docText = "Documentation text";
- model.setExporter("Exporter");
- model.setExporterVersion("1");
- model.setName("Name");
- model.setTargetNamespace("tns1");
Process p = Bpmn2Factory.eINSTANCE.createProcess();
p.setName("Name");
Documentation doc = Bpmn2Factory.eINSTANCE.createDocumentation();
@@ -289,4 +291,36 @@
assertNull("Documentation has an attribute 'text' (invalid acc. to XML schema)", docNode
.getAttributes().getNamedItem("text"));
}
+
+ @Test
+ public void testScript() throws Exception {
+ final String scriptId = "st1";
+ final String scriptContent = "Script content";
+
+ Process p = Bpmn2Factory.eINSTANCE.createProcess();
+ p.setName("Name");
+ ScriptTask st = Bpmn2Factory.eINSTANCE.createScriptTask();
+ st.setId(scriptId);
+ st.setName("Name");
+ st.setScript(scriptContent);
+ st.setScriptFormat("Script format");
+ p.getFlowElements().add(st);
+ model.getRootElements().add(p);
+
+ Resource res = createWithContentAndLoad("scriptContent", model);
+ EObject stLoaded = res.getEObject(scriptId);
+ assertTrue(stLoaded instanceof ScriptTask);
+ assertEquals(scriptContent, ((ScriptTask) stLoaded).getScript());
+
+ checkSerializationScriptContent(res);
+ }
+
+ protected void checkSerializationScriptContent(Resource res) throws SAXException, IOException,
+ ParserConfigurationException {
+ DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance();
+ Document xml = fact.newDocumentBuilder().parse(new File(res.getURI().toFileString()));
+ Node scriptNode = xml.getElementsByTagName("bpmn2:scriptTask").item(0);
+ assertNull("ScriptTask has an attribute 'script' (invalid acc. to XML schema)", scriptNode
+ .getAttributes().getNamedItem("script"));
+ }
}