]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.simulation.sequences/tests/org/simantics/simulation/sequences/tests/DummyActionContext.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.simulation.sequences / tests / org / simantics / simulation / sequences / tests / DummyActionContext.java
1 package org.simantics.simulation.sequences.tests;
2
3 import gnu.trove.map.hash.TObjectDoubleHashMap;
4
5 import org.simantics.databoard.Bindings;
6 import org.simantics.databoard.adapter.AdaptException;
7 import org.simantics.databoard.binding.Binding;
8 import org.simantics.scl.runtime.function.Function1;
9 import org.simantics.scl.runtime.tuple.Tuple0;
10 import org.simantics.simulation.sequences.action.AbstractActionContext;
11
12 public class DummyActionContext extends AbstractActionContext {
13
14     TObjectDoubleHashMap<String> variables = new TObjectDoubleHashMap<String>(); 
15     
16     @Override
17     public Object get(String variableName, Binding binding) {
18         try {
19                         return Bindings.adapt(variables.get(variableName), Bindings.DOUBLE, binding);
20                 } catch (AdaptException e) {
21                         throw new IllegalArgumentException("Invalid binding " + binding.toString() + " for a double value", e);
22                 }
23     }
24
25     @Override
26     public void set(String variableName, Object value, Binding binding) {
27         try {
28                         variables.put(variableName, (Double)Bindings.adapt(value, binding, Bindings.DOUBLE));
29                 } catch (AdaptException e) {
30                         throw new IllegalArgumentException("Invalid binding " + binding.toString() + " for a double value", e);
31                 }
32     }
33     
34     public static void testDriveAction(Function1<Tuple0, Object> action) {
35         DummyActionContext actionContext = new DummyActionContext();
36         actionContext.scheduleNextStep(action);
37         
38         double curTime = 0.0;
39         while(!actionContext.isStopped()) {
40             double maxNextTime = actionContext.handleStep(curTime);
41             curTime = Math.min(curTime+0.1, maxNextTime);
42         }
43     }
44
45 }