-package org.simantics.simulation.sequences.tests;\r
-\r
-import gnu.trove.map.hash.TObjectDoubleHashMap;\r
-\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.databoard.adapter.AdaptException;\r
-import org.simantics.databoard.binding.Binding;\r
-import org.simantics.scl.runtime.function.Function1;\r
-import org.simantics.scl.runtime.tuple.Tuple0;\r
-import org.simantics.simulation.sequences.action.AbstractActionContext;\r
-\r
-public class DummyActionContext extends AbstractActionContext {\r
-\r
- TObjectDoubleHashMap<String> variables = new TObjectDoubleHashMap<String>(); \r
- \r
- @Override\r
- public Object get(String variableName, Binding binding) {\r
- try {\r
- return Bindings.adapt(variables.get(variableName), Bindings.DOUBLE, binding);\r
- } catch (AdaptException e) {\r
- throw new IllegalArgumentException("Invalid binding " + binding.toString() + " for a double value", e);\r
- }\r
- }\r
-\r
- @Override\r
- public void set(String variableName, Object value, Binding binding) {\r
- try {\r
- variables.put(variableName, (Double)Bindings.adapt(value, binding, Bindings.DOUBLE));\r
- } catch (AdaptException e) {\r
- throw new IllegalArgumentException("Invalid binding " + binding.toString() + " for a double value", e);\r
- }\r
- }\r
- \r
- public static void testDriveAction(Function1<Tuple0, Object> action) {\r
- DummyActionContext actionContext = new DummyActionContext();\r
- actionContext.scheduleNextStep(action);\r
- \r
- double curTime = 0.0;\r
- while(!actionContext.isStopped()) {\r
- double maxNextTime = actionContext.handleStep(curTime);\r
- curTime = Math.min(curTime+0.1, maxNextTime);\r
- }\r
- }\r
-\r
-}\r
+package org.simantics.simulation.sequences.tests;
+
+import gnu.trove.map.hash.TObjectDoubleHashMap;
+
+import org.simantics.databoard.Bindings;
+import org.simantics.databoard.adapter.AdaptException;
+import org.simantics.databoard.binding.Binding;
+import org.simantics.scl.runtime.function.Function1;
+import org.simantics.scl.runtime.tuple.Tuple0;
+import org.simantics.simulation.sequences.action.AbstractActionContext;
+
+public class DummyActionContext extends AbstractActionContext {
+
+ TObjectDoubleHashMap<String> variables = new TObjectDoubleHashMap<String>();
+
+ @Override
+ public Object get(String variableName, Binding binding) {
+ try {
+ return Bindings.adapt(variables.get(variableName), Bindings.DOUBLE, binding);
+ } catch (AdaptException e) {
+ throw new IllegalArgumentException("Invalid binding " + binding.toString() + " for a double value", e);
+ }
+ }
+
+ @Override
+ public void set(String variableName, Object value, Binding binding) {
+ try {
+ variables.put(variableName, (Double)Bindings.adapt(value, binding, Bindings.DOUBLE));
+ } catch (AdaptException e) {
+ throw new IllegalArgumentException("Invalid binding " + binding.toString() + " for a double value", e);
+ }
+ }
+
+ public static void testDriveAction(Function1<Tuple0, Object> action) {
+ DummyActionContext actionContext = new DummyActionContext();
+ actionContext.scheduleNextStep(action);
+
+ double curTime = 0.0;
+ while(!actionContext.isStopped()) {
+ double maxNextTime = actionContext.handleStep(curTime);
+ curTime = Math.min(curTime+0.1, maxNextTime);
+ }
+ }
+
+}