Provide a generic framework for unit tests on test tree results
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 25 Apr 2008 12:54:17 +0000 (12:54 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 25 Apr 2008 12:54:17 +0000 (12:54 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1072 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/NumericTRId.java
org.argeo.slc.core/src/main/java/org/argeo/slc/unit/test/tree/UnitTestTreeUtil.java
org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultTestUtils.java [new file with mode: 0644]
org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java

index 185d200e3a77405f3bf832cd7188a241dfc4ced5..cd04ad7cbf7a3e7e96b40285cbb1ef155c2c848b 100644 (file)
@@ -12,6 +12,15 @@ public class NumericTRId implements TestResultId {
 \r
        private Long value;\r
        private DeployedSystemId deployedSystemId;\r
+       \r
+       /** For ORM*/\r
+       public NumericTRId(){\r
+               \r
+       }\r
+\r
+       public NumericTRId(Long value){\r
+               this.value = value;\r
+       }\r
 \r
        /**\r
         * Initializes the long value with the current time (based on\r
index 5024df1186be3e5c9ec459f5186c07fef864e6c1..4f07231d518fe3f8b3198daa219f845b66503377 100644 (file)
@@ -1,26 +1,96 @@
 package org.argeo.slc.unit.test.tree;\r
 \r
-import junit.framework.TestCase;\r
+import static junit.framework.Assert.assertEquals;\r
+import static junit.framework.Assert.assertNull;\r
+import static junit.framework.Assert.fail;\r
 \r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
 import org.argeo.slc.core.test.SimpleResultPart;\r
+import org.argeo.slc.core.test.TestResultPart;\r
 import org.argeo.slc.core.test.tree.PartSubList;\r
 import org.argeo.slc.core.test.tree.TreeTestResult;\r
 \r
 /** Utilities for unit tests. */\r
 public class UnitTestTreeUtil {\r
-       /** Assert one part of a tree test result. */\r
+       public static void assertTreeTestResult(TreeTestResult expected,\r
+                       TreeTestResult reached) {\r
+               assertEquals(expected.getTestResultId(), reached.getTestResultId());\r
+               assertEquals(expected.getCloseDate(), reached.getCloseDate());\r
+\r
+               assertEquals(expected.getResultParts().size(), reached.getResultParts()\r
+                               .size());\r
+               for (TreeSPath path : expected.getResultParts().keySet()) {\r
+                       PartSubList lstExpected = expected.getResultParts().get(path);\r
+                       PartSubList lstReached = expected.getResultParts().get(path);\r
+                       if (lstReached == null) {\r
+                               fail("No result for path " + path);\r
+                               return;\r
+                       }\r
+                       assertPartSubList(lstExpected, lstReached);\r
+               }\r
+       }\r
+\r
+       public static void assertPartSubList(PartSubList lstExpected,\r
+                       PartSubList lstReached) {\r
+               if (lstExpected.getSlcExecutionUuid() == null) {\r
+                       assertNull(lstReached.getSlcExecutionUuid());\r
+               } else {\r
+                       assertEquals(lstExpected.getSlcExecutionUuid(), lstReached\r
+                                       .getSlcExecutionUuid());\r
+               }\r
+\r
+               if (lstExpected.getSlcExecutionStepUuid() == null) {\r
+                       assertNull(lstReached.getSlcExecutionStepUuid());\r
+               } else {\r
+                       assertEquals(lstExpected.getSlcExecutionStepUuid(), lstReached\r
+                                       .getSlcExecutionStepUuid());\r
+               }\r
+\r
+               assertEquals(lstExpected.getParts().size(), lstReached.getParts()\r
+                               .size());\r
+               for (int i = 0; i < lstExpected.getParts().size(); i++) {\r
+                       assertPart(lstExpected.getParts().get(i), lstReached.getParts()\r
+                                       .get(i));\r
+               }\r
+       }\r
+\r
+       /**\r
+        * Assert one part of a tree test result.\r
+        * \r
+        * @deprecated use {@link #assertPart(TestResultPart, TestResultPart)}\r
+        *             instead\r
+        */\r
        public static void assertPart(TreeTestResult testResult, String pathStr,\r
                        int index, Integer status, String message) {\r
                TreeSPath path = TreeSPath.parseToCreatePath(pathStr);\r
                PartSubList list = testResult.getResultParts().get(path);\r
                if (list == null) {\r
-                       TestCase.fail("No result for path " + path);\r
+                       fail("No result for path " + path);\r
                        return;\r
                }\r
+               if (index >= list.getParts().size()) {\r
+                       fail("Not enough parts.");\r
+               }\r
                SimpleResultPart part = (SimpleResultPart) list.getParts().get(index);\r
-               TestCase.assertEquals(status, part.getStatus());\r
-               TestCase.assertEquals(message, part.getMessage());\r
+               assertPart(part, status, message, null);\r
+       }\r
+\r
+       public static void assertPart(TestResultPart expected,\r
+                       TestResultPart reached) {\r
+               assertPart(reached, expected.getStatus(), expected.getMessage(),\r
+                               expected.getException());\r
+       }\r
+\r
+       /** Assert one part of a tree test result. */\r
+       private static void assertPart(TestResultPart part, Integer status,\r
+                       String message, Exception exception) {\r
+               assertEquals(status, part.getStatus());\r
+               assertEquals(message, part.getMessage());\r
+               if (exception == null) {\r
+                       assertNull(part.getException());\r
+               } else {\r
+                       assertEquals(exception, part.getException());\r
+               }\r
        }\r
 \r
        /** Makes sure this is a singleton */\r
diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultTestUtils.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultTestUtils.java
new file mode 100644 (file)
index 0000000..fc9c113
--- /dev/null
@@ -0,0 +1,37 @@
+package org.argeo.slc.core.test.tree;\r
+\r
+import java.util.Date;\r
+\r
+import org.argeo.slc.core.test.NumericTRId;\r
+import org.argeo.slc.core.test.SimpleResultPart;\r
+import org.argeo.slc.core.test.TestStatus;\r
+\r
+public abstract class TreeTestResultTestUtils {\r
+\r
+       public static TreeTestResult createSimpleTreeTestResult(){\r
+               TreeTestResult treeTestResult = new TreeTestResult();\r
+               treeTestResult.setNumericResultId( new NumericTRId(System.currentTimeMillis()));\r
+               treeTestResult.setCloseDate(new Date());\r
+               return treeTestResult;\r
+       }\r
+       \r
+       public static SimpleResultPart createSimpleResultPartPassed(){\r
+               SimpleResultPart partPassed = new SimpleResultPart();\r
+               String msgPassed = "message";\r
+               partPassed.setStatus(TestStatus.PASSED);\r
+               partPassed.setMessage(msgPassed);\r
+               return partPassed;\r
+       }\r
+\r
+       public static SimpleResultPart createSimpleResultPartFailed(){\r
+               SimpleResultPart partFailed = new SimpleResultPart();\r
+               String msgFailed = "too bad";\r
+               partFailed.setStatus(TestStatus.FAILED);\r
+               partFailed.setMessage(msgFailed);\r
+               return partFailed;\r
+       }\r
+       \r
+       private TreeTestResultTestUtils(){\r
+               \r
+       }\r
+}\r
index 5858c4c0ecd239a0e8072c18cc91ef82d4fd5d48..ff2176280fca144bb84412893109c4ba12baa0bc 100644 (file)
@@ -1,28 +1,21 @@
 package org.argeo.slc.hibernate.test.tree;\r
 \r
-import java.util.Date;\r
-import java.util.List;\r
+import static org.argeo.slc.core.test.tree.TreeTestResultTestUtils.createSimpleResultPartFailed;\r
+import static org.argeo.slc.core.test.tree.TreeTestResultTestUtils.createSimpleResultPartPassed;\r
+import static org.argeo.slc.core.test.tree.TreeTestResultTestUtils.createSimpleTreeTestResult;\r
 \r
 import org.argeo.slc.core.process.SlcExecution;\r
 import org.argeo.slc.core.process.SlcExecutionStep;\r
 import org.argeo.slc.core.process.SlcExecutionTestUtils;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.NumericTRId;\r
-import org.argeo.slc.core.test.SimpleResultPart;\r
-import org.argeo.slc.core.test.TestStatus;\r
-import org.argeo.slc.core.test.tree.PartSubList;\r
 import org.argeo.slc.core.test.tree.TreeTestResult;\r
-import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
-import org.argeo.slc.dao.test.TestResultDao;\r
 import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
 import org.argeo.slc.unit.AbstractSpringTestCase;\r
+import org.argeo.slc.unit.test.tree.UnitTestTreeUtil;\r
 \r
 public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {\r
 \r
        public void testCreate() {\r
-               TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean(\r
-                               "treeSPathDao");\r
-\r
                TreeTestResultDao testResultDao = (TreeTestResultDao) getContext()\r
                                .getBean("testResultDao");\r
 \r
@@ -35,55 +28,20 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {
                String pathParentStr = "/root/testParent";\r
                String pathStr = pathParentStr + "/test";\r
                TreeSPath path = TreeSPath.parseToCreatePath(pathStr);\r
-               //treeSPathDao.create(path);\r
-\r
-               TreeTestResult treeTestResult = new TreeTestResult();\r
-               treeTestResult.notifySlcExecution(slcExecution);\r
-               SimpleResultPart partPassed = new SimpleResultPart();\r
-               String msgPassed = "message";\r
-               partPassed.setStatus(TestStatus.PASSED);\r
-               partPassed.setMessage(msgPassed);\r
+               // treeSPathDao.create(path);\r
 \r
-               SimpleResultPart partFailed = new SimpleResultPart();\r
-               String msgFailed = "too bad";\r
-               partFailed.setStatus(TestStatus.FAILED);\r
-               partFailed.setMessage(msgFailed);\r
+               TreeTestResult ttr = createSimpleTreeTestResult();\r
+               ttr.notifySlcExecution(slcExecution);\r
+               ttr.notifyCurrentPath(null, path);\r
 \r
-               NumericTRId trId = new NumericTRId();\r
-               trId.setValue(1l);\r
-               treeTestResult.setNumericResultId(trId);\r
-               treeTestResult.notifyCurrentPath(null, path);\r
-               treeTestResult.addResultPart(partPassed);\r
-               treeTestResult.addResultPart(partFailed);\r
+               ttr.addResultPart(createSimpleResultPartPassed());\r
+               ttr.addResultPart(createSimpleResultPartFailed());\r
 \r
-               Date closeDate = new Date();\r
-               treeTestResult.setCloseDate(closeDate);\r
-\r
-               testResultDao.create(treeTestResult);\r
+               testResultDao.create(ttr);\r
 \r
                TreeTestResult ttrPersisted = (TreeTestResult) testResultDao\r
-                               .getTestResult(trId);\r
-               PartSubList slPersisted = ttrPersisted.getResultParts().get(path);\r
-               assertEquals(slcExecution.getUuid(), slPersisted.getSlcExecutionUuid());\r
-               assertEquals(step.getUuid(), slPersisted.getSlcExecutionStepUuid());\r
-\r
-               assertEquals(2, slPersisted.getParts().size());\r
-               SimpleResultPart part0 = (SimpleResultPart) slPersisted.getParts().get(\r
-                               0);\r
-               assertEquals(TestStatus.PASSED, part0.getStatus());\r
-               assertEquals(msgPassed, part0.getMessage());\r
-\r
-               SimpleResultPart part1 = (SimpleResultPart) slPersisted.getParts().get(\r
-                               1);\r
-               assertEquals(TestStatus.FAILED, part1.getStatus());\r
-               assertEquals(msgFailed, part1.getMessage());\r
-\r
-               assertEquals(closeDate, ttrPersisted.getCloseDate());\r
-\r
-               List<TreeTestResult> results = testResultDao.listResults(path);\r
-               assertEquals(1, results.size());\r
-               assertEquals(trId, results.get(0).getTestResultId());\r
-\r
+                               .getTestResult(ttr.getTestResultId());\r
+               UnitTestTreeUtil.assertTreeTestResult(ttr, ttrPersisted);\r
        }\r
 \r
        @Override\r