From f26698feffb22dc2bf9eade85e908e1a2c79b000 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 17 Dec 2018 14:15:05 +0100
Subject: [PATCH] unit test checking if all species types are exported imported
 properly

---
 .../model/sbml/SbmlExporterTest.java          | 33 +++++++++++++++++--
 .../modelutils/map/ElementUtils.java          |  2 +-
 2 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java
index 2a71a99c92..8df5c06836 100644
--- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java
+++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java
@@ -10,10 +10,13 @@ import java.awt.Desktop;
 import java.awt.geom.Point2D;
 import java.io.ByteArrayInputStream;
 import java.io.File;
+import java.lang.reflect.Modifier;
 import java.nio.file.Files;
+import java.util.Set;
 
 import org.apache.log4j.Logger;
 import org.junit.Test;
+import org.reflections.Reflections;
 
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.converter.ConverterParams;
@@ -294,7 +297,7 @@ public class SbmlExporterTest {
   public void testReactionColorParsing() throws Exception {
     Model model = parser.createModel(new ConverterParams().filename("testFiles/layoutExample/example1.xml"));
     for (Reaction element : model.getReactions()) {
-      for (AbstractNode node: element.getNodes()) {
+      for (AbstractNode node : element.getNodes()) {
         node.getLine().setColor(Color.BLUE);
       }
     }
@@ -306,7 +309,7 @@ public class SbmlExporterTest {
   public void testReactionLineWidthParsing() throws Exception {
     Model model = parser.createModel(new ConverterParams().filename("testFiles/layoutExample/example1.xml"));
     for (Reaction element : model.getReactions()) {
-      for (AbstractNode node: element.getNodes()) {
+      for (AbstractNode node : element.getNodes()) {
         node.getLine().setWidth(12.7);
       }
     }
@@ -314,4 +317,30 @@ public class SbmlExporterTest {
     assertEquals(0, comparator.compare(model, model2));
   }
 
+  @Test
+  public void testExportSpeciesType() throws Exception {
+    Reflections reflections = new Reflections("lcsb.mapviewer.model.map");
+    Set<Class<? extends Species>> classes = reflections.getSubTypesOf(Species.class);
+    for (Class<? extends Element> class1 : classes) {
+      if (!Modifier.isAbstract(class1.getModifiers())) {
+        Model model = new ModelFullIndexed(null);
+        model.setIdModel("Test123");
+        model.setName("x");
+        model.setWidth("300");
+        model.setHeight("300");
+        Element element = class1.getConstructor(String.class).newInstance("x");
+        element.setName("test name");
+        element.setX(10);
+        element.setWidth(10);
+        element.setY(10);
+        element.setHeight(10);
+        model.addElement(element);
+        Model deserializedModel = getModelAfterSerializing(model);
+
+        assertEquals("Class " + class1 + " not exported/imported properly", 0,
+            comparator.compare(model, deserializedModel));
+      }
+    }
+  }
+
 }
diff --git a/model/src/main/java/lcsb/mapviewer/modelutils/map/ElementUtils.java b/model/src/main/java/lcsb/mapviewer/modelutils/map/ElementUtils.java
index 8632b77cf0..94777c846e 100644
--- a/model/src/main/java/lcsb/mapviewer/modelutils/map/ElementUtils.java
+++ b/model/src/main/java/lcsb/mapviewer/modelutils/map/ElementUtils.java
@@ -101,7 +101,7 @@ public final class ElementUtils {
       annotatedObjectTree = new ClassTreeNode(BioEntity.class);
       annotatedObjectTree.setData(false);
 
-      Map<Class<?>, ClassTreeNode> map = new LinkedHashMap<Class<?>, ClassTreeNode>();
+      Map<Class<?>, ClassTreeNode> map = new LinkedHashMap<>();
       map.put(Object.class, annotatedObjectTree);
       for (Class<? extends BioEntity> class1 : classes) {
         if (map.get(class1) == null) {
-- 
GitLab