Repository: fbergmann/libSEDML (language: python)

Issue:
dashDotDot not working as linestyle
Trying to set dashDotDot results in
```
ValueError: 'dashdotdotted' is not a valid value for ls; supported values are 
'-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted'
```
According to discussion and specification this is a valid linestyle. Also the list `'-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted'` should be `none`, `solid`, `dash`, `dot`, `dashDot`, `dashDotDot`



Discussion / hints:

Fix patch:
diff --git a/.gitignore b/.gitignore
index f02a084e..9fa41754 100644
--- a/.gitignore
+++ b/.gitignore
@@ -170,3 +170,5 @@ pip-log.txt
 build*
 install*
 libsedml/_*
+examples/python/*.xml
+dev/temp_deviser_file.xml
diff --git a/examples/xml/l1v4/dependent_example.xml b/examples/xml/l1v4/dependent_example.xml
new file mode 100644
index 00000000..0058de00
--- /dev/null
+++ b/examples/xml/l1v4/dependent_example.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sedML xmlns="http://sed-ml.org/sed-ml/level1/version4" level="1" version="4">
+  <listOfModels>
+    <model id="model1" language="urn:sedml:sbml" source="oscli.xml"/>
+  </listOfModels>
+  <listOfSimulations>
+    <uniformTimeCourse id="sim1" initialTime="0" outputStartTime="0" outputEndTime="10" numberOfPoints="1000">
+      <algorithm kisaoID="KISAO:0000019"/>
+    </uniformTimeCourse>
+  </listOfSimulations>
+  <listOfTasks>
+    <task id="task1" modelReference="model1" simulationReference="sim1"/>
+  </listOfTasks>
+  <listOfDataGenerators>
+    <dataGenerator id="time" name="time">
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <ci> t </ci>
+      </math>
+      <listOfVariables>
+        <variable id="t" name="time" symbol="urn:sedml:symbol:time" taskReference="task1"/>
+      </listOfVariables>
+    </dataGenerator>
+    <dataGenerator id="S1" name="[S1]">
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <ci> v1 </ci>
+      </math>
+      <listOfVariables>
+        <variable id="v1" name="[S1]" target="/sbml:sbml/sbml:model/sbml:listOfSpecies/sbml:species[@id=&apos;S1&apos;]" taskReference="task1"/>
+      </listOfVariables>
+    </dataGenerator>
+    <dataGenerator id="dS1dt" name="d[S1]/dt">
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <ci> v2 </ci>
+      </math>
+      <listOfVariables>
+        <dependentVariable id="v2" name="d[S1]/dt" target="/sbml:sbml/sbml:model/sbml:listOfSpecies/sbml:species[@id=&apos;S1&apos;]" taskReference="task1" term="urn:sedml:symbol:rateOfChange"/>
+      </listOfVariables>
+    </dataGenerator>
+  </listOfDataGenerators>
+  <listOfOutputs>
+    <plot2D id="p1" name="S1 Timecourse">
+      <listOfCurves>
+        <curve id="c1" name="[S1]" xDataReference="time" yDataReference="S1"/>
+        <curve id="c1" name="d[S1]/dt" xDataReference="time" yDataReference="dS1dt"/>
+      </listOfCurves>
+    </plot2D>
+  </listOfOutputs>
+</sedML>


Test patch:
diff --git a/tests/TestIssues.cpp b/tests/TestIssues.cpp
index 80fab59d..23abed94 100644
--- a/tests/TestIssues.cpp
+++ b/tests/TestIssues.cpp
@@ -423,9 +423,6 @@ TEST_CASE("Reading / Writing changexml only text node", "[sedml]")
 }
 
 
-
-
-
 TEST_CASE("Reading numberOfPoints", "[sedml]")
 {
   std::string fileName = getTestFile("/test-data/issue_93.sedml");
@@ -447,3 +444,39 @@ TEST_CASE("Reading numberOfPoints", "[sedml]")
   }
   delete doc;
 }
+
+
+TEST_CASE("Reading/writing of dashDotDot", "[sedml]")
+{
+  SedDocument* doc = new SedDocument(1, 4);
+  {
+    auto* style = doc->createStyle();
+    REQUIRE(style != NULL);
+    style->setId("test");
+    auto* line = style->createLineStyle();
+    REQUIRE(line != NULL);
+    REQUIRE(line->setStyle(SEDML_LINETYPE_DASHDOTDOT) == LIBSEDML_OPERATION_SUCCESS);
+    REQUIRE(line->getStyle() == SEDML_LINETYPE_DASHDOTDOT);
+    REQUIRE(line->setStyle("dashDotDot") == LIBSEDML_OPERATION_SUCCESS);
+    REQUIRE(line->getStyle() == SEDML_LINETYPE_DASHDOTDOT);
+
+    REQUIRE(doc->getNumErrors(LIBSEDML_SEV_ERROR) == 0);
+  }
+
+  std::string sedml = writeSedMLToStdString(doc);
+  delete doc;
+
+  doc = readSedMLFromString(sedml.c_str());
+  doc->getErrorLog()->printErrors();
+  REQUIRE(doc->getNumErrors(LIBSEDML_SEV_ERROR) == 0);
+  {
+    auto* style = doc->getStyle(0);
+    REQUIRE(style != NULL);
+    auto* line = style->getLineStyle();
+    REQUIRE(line != NULL);
+    REQUIRE(line->getStyle() == SEDML_LINETYPE_DASHDOTDOT);
+
+  }
+  delete doc;
+}
+