From: Mathieu Baudier Date: Tue, 15 Jan 2008 12:55:25 +0000 (+0000) Subject: Start adding enhancement toward v0.8.1 X-Git-Tag: argeo-slc-2.1.7~3082 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;ds=sidebyside;h=9c864d891daf7e3d341b5c5996aeb3d3ab1a57be;p=gpl%2Fargeo-slc.git Start adding enhancement toward v0.8.1 Introduce Context git-svn-id: https://svn.argeo.org/slc/trunk@918 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/org.argeo.slc.core/pom.xml b/org.argeo.slc.core/pom.xml index 600512dec..72fc35e8d 100644 --- a/org.argeo.slc.core/pom.xml +++ b/org.argeo.slc.core/pom.xml @@ -6,7 +6,7 @@ org.argeo.slc argeo-slc - 0.8.0 + 0.8-SNAPSHOT ../org.argeo.slc argeo-slc-core diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureAware.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureAware.java index 68fd13b8b..643af73af 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureAware.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureAware.java @@ -4,7 +4,7 @@ package org.argeo.slc.core.structure; * Wrapper for an element, which is able to propagate registration to * sub-elements. */ -public interface StructureAware { +public interface StructureAware { /** Called after registration. */ - public void notifyCurrentPath(StructureRegistry registry, StructurePath path); + public void notifyCurrentPath(StructureRegistry registry, T path); } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSRelated.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSRelated.java new file mode 100644 index 000000000..8bf57efdd --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSRelated.java @@ -0,0 +1,10 @@ +package org.argeo.slc.core.structure.tree; + +import org.argeo.slc.core.structure.StructureElement; +import org.argeo.slc.core.structure.StructureRegistry; + +public interface TreeSRelated { + public TreeSPath getBasePath(); + public StructureRegistry getRegistry(); + public StructureElement getStructureElement(String key); +} diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextAware.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextAware.java new file mode 100644 index 000000000..8c553383e --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextAware.java @@ -0,0 +1,12 @@ +package org.argeo.slc.core.test.context; + +import java.util.Map; + +public interface ContextAware { + public Map getValues(); + + public void setValues(Map values); + + public Map getExpectedValues(); + +} diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextHelper.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextHelper.java new file mode 100644 index 000000000..d14e67b51 --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextHelper.java @@ -0,0 +1,75 @@ +package org.argeo.slc.core.test.context; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import org.argeo.slc.core.structure.StructureAware; +import org.argeo.slc.core.structure.StructureElement; +import org.argeo.slc.core.structure.StructureRegistry; +import org.argeo.slc.core.structure.tree.TreeSPath; +import org.argeo.slc.core.structure.tree.TreeSRelated; +import org.argeo.slc.core.test.SimpleResultPart; +import org.argeo.slc.core.test.TestResult; +import org.argeo.slc.core.test.TestStatus; + +public class ContextHelper { + private final static Log log = LogFactory.getLog(ContextHelper.class); + + public static void compareReachedExpected(ContextAware contextAware, + TestResult testResult, TreeSRelated treeSRelated) { + for (String key : contextAware.getExpectedValues().keySet()) { + + // Register in structure + if (treeSRelated != null) { + if (treeSRelated.getBasePath() != null) { + TreeSPath path = treeSRelated.getBasePath() + .createChild(key); + StructureRegistry registry = treeSRelated + .getRegistry(); + final StructureElement element = treeSRelated + .getStructureElement(key); + registry.register(path, element); + if (testResult instanceof StructureAware) + ((StructureAware) testResult) + .notifyCurrentPath(registry, path); + + if (log.isDebugEnabled()) + log.debug("Checking key " + key + " for path " + path); + } + } + + // Compare expected values with reached ones + Object expectedValue = contextAware.getExpectedValues().get(key); + + if (contextAware.getValues().containsKey(key)) { + Object reachedValue = contextAware.getValues().get(key); + + if (expectedValue.equals(reachedValue)) { + testResult.addResultPart(new SimpleResultPart( + TestStatus.PASSED, "Values matched for key '" + key + + "'")); + } else { + testResult.addResultPart(new SimpleResultPart( + TestStatus.FAILED, "Mismatch for key '" + key + + "': expected '" + expectedValue + + "' but reached '" + reachedValue + "'")); + } + } else { + testResult.addResultPart(new SimpleResultPart( + TestStatus.FAILED, "No value reached for key '" + key + + "'")); + } + + if (treeSRelated != null) { + if (treeSRelated.getBasePath() != null) { + if (testResult instanceof StructureAware) { + ((StructureAware) testResult) + .notifyCurrentPath(treeSRelated.getRegistry(), + treeSRelated.getBasePath()); + } + } + } + } + } + +}