X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.tests%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Ftests%2Fcommands%2FAssertStateValue.java;fp=bundles%2Forg.simantics.modeling.tests%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Ftests%2Fcommands%2FAssertStateValue.java;h=1fbabdfd235f88f8e32e74700839aeb1848d0b1a;hb=ca6fcd858a0b82eb1b5a8f12c4d5df30e84393e0;hp=0000000000000000000000000000000000000000;hpb=67fd62f9c742337ec80eef658192db198a0efaac;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/commands/AssertStateValue.java b/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/commands/AssertStateValue.java new file mode 100644 index 000000000..1fbabdfd2 --- /dev/null +++ b/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/commands/AssertStateValue.java @@ -0,0 +1,63 @@ +package org.simantics.modeling.tests.commands; + +import junit.framework.Assert; +import junit.framework.AssertionFailedError; + +import org.simantics.db.layer0.util.EvaluatingListener; +import org.simantics.db.layer0.util.EvaluatingListener.Criterion; +import org.simantics.db.layer0.util.EvaluatingListener.Evaluation; +import org.simantics.db.testing.common.Command; +import org.simantics.modeling.tests.cases.ModelingCommandSequenceTest; +import org.simantics.modeling.tests.traits.SingleResourceTrait; + +public class AssertStateValue extends Command { + + + private transient final SingleResourceTrait run; + private transient final String rvi; + private transient final Number expectedValue; + private transient final double tolerance; + + public AssertStateValue(SingleResourceTrait run, String rvi, Number expectedValue, double tolerance) { + this.run = run; + this.rvi = rvi; + this.expectedValue = expectedValue; + this.tolerance = tolerance; + } + + public void run(ModelingCommandSequenceTest environment) throws Exception { + + //final double tolerance = 0.0001; + + Criterion criterion = new EvaluatingListener.Criterion() { + @Override + public Evaluation evaluate(Number result) { + if (result == null){ + return Evaluation.IGNORE; + } + else{ + double resultDouble = result.doubleValue(); + double expectedDouble = expectedValue.doubleValue(); + if (Math.abs(expectedDouble - resultDouble) <= tolerance){ + return Evaluation.ACCEPT; + } + } + return Evaluation.IGNORE; + } + + }; + + Number result = Utils.readValue(run, rvi, criterion); + if (result != null){ + double resultDouble = result.doubleValue(); + double expectedDouble = expectedValue.doubleValue(); + + Assert.assertEquals(expectedDouble, resultDouble, tolerance); + } + else + throw new AssertionFailedError(); + + + } + +} \ No newline at end of file