]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java
Introduce end to end testing with logging of results
[gpl/argeo-slc.git] / org.argeo.slc / src / main / java / org / argeo / slc / core / test / tree / TreeTestResult.java
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java
new file mode 100644 (file)
index 0000000..3134e1a
--- /dev/null
@@ -0,0 +1,76 @@
+package org.argeo.slc.core.test.tree;\r
+\r
+import java.util.List;\r
+import java.util.SortedMap;\r
+import java.util.TreeMap;\r
+import java.util.Vector;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.structure.StructureAware;\r
+import org.argeo.slc.core.structure.StructurePath;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.TestResultId;\r
+import org.argeo.slc.core.test.TestResultListener;\r
+import org.argeo.slc.core.test.TestResultPart;\r
+\r
+public class TreeTestResult implements TestResult, StructureAware {\r
+       private TestResultId testResultId;\r
+       private List<TestResultListener> listeners;\r
+\r
+       private TreeSPath currentPath;\r
+\r
+       private SortedMap<TreeSPath, List<TestResultPart>> resultParts = new TreeMap<TreeSPath, List<TestResultPart>>();\r
+\r
+       public TestResultId getTestResultId() {\r
+               return testResultId;\r
+       }\r
+\r
+       public void setTestResultId(TestResultId testResultId) {\r
+               this.testResultId = testResultId;\r
+       }\r
+\r
+       public void setListeners(List<TestResultListener> listeners) {\r
+               this.listeners = listeners;\r
+       }\r
+       \r
+       public void addResultPart(TestResultPart part) {\r
+               if(currentPath==null){\r
+                       throw new SlcException("No current path set.");\r
+               }\r
+               List<TestResultPart> list = resultParts.get(currentPath);\r
+               if(list == null){\r
+                       list = new Vector<TestResultPart>();\r
+                       resultParts.put(currentPath, list);\r
+               }\r
+               list.add(part);\r
+               \r
+               // notify listeners\r
+               for(TestResultListener listener: listeners){\r
+                       listener.resultPartAdded(this, part);\r
+               }\r
+       }\r
+\r
+       public List<TestResultPart> listResultParts() {\r
+               List<TestResultPart> all = new Vector<TestResultPart>();\r
+               for(TreeSPath path:resultParts.keySet()){\r
+                       all.addAll(resultParts.get(path));\r
+               }\r
+               return all;\r
+       }\r
+\r
+       public void notifyCurrentPath(StructureRegistry registry, StructurePath path) {\r
+               currentPath = (TreeSPath) path;\r
+       }\r
+\r
+       public TreeSPath getCurrentPath() {\r
+               return currentPath;\r
+       }\r
+\r
+       public SortedMap<TreeSPath, List<TestResultPart>> getResultParts() {\r
+               return resultParts;\r
+       }\r
+\r
+       \r
+}\r