com.github.dakusui.jcunit8.factorspace.fsm.FsmTupleAccessor Maven / Gradle / Ivy
package com.github.dakusui.jcunit8.factorspace.fsm;
import com.github.dakusui.jcunit.core.tuples.Tuple;
import com.github.dakusui.jcunit.fsm.*;
import com.github.dakusui.jcunit8.core.StreamableCartesianator;
import java.util.AbstractList;
import java.util.Collections;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import static java.lang.String.format;
import static java.util.stream.Collectors.toList;
class FsmTupleAccessor {
final FiniteStateMachine model;
final String name;
final int scenarioLength;
FsmTupleAccessor(String name, FiniteStateMachine model, int scenarioLength) {
this.model = model;
this.name = name;
this.scenarioLength = scenarioLength;
}
String composeStateFactorName(String name, int i) {
return format("%s:STATE:%d", name, i);
}
String composeActionFactorName(String name, int i) {
return format("%s:ACTION:%d", name, i);
}
String composeActionParamFactorName(String name, int i, int j) {
return format("%s:ACTION_PARAM:%d-%d", name, i, j);
}
@SuppressWarnings("unchecked")
State getStateFromTuple(Tuple tuple, int i) {
return (State) tuple.get(composeStateFactorName(name, i));
}
@SuppressWarnings("unchecked")
Action getActionFromTuple(Tuple tuple, int i) {
return (Action) tuple.get(composeActionFactorName(name, i));
}
Args getActionArgsFromTuple(Tuple tuple, int i) {
return new Args(
IntStream.range(0, getActionFromTuple(tuple, i).numParameterFactors())
.mapToObj(j -> getActionArgFromTuple(tuple, i, j))
.toArray()
);
}
Object getActionArgFromTuple(Tuple tuple, int i, int j) {
return tuple.get(composeActionParamFactorName(name, i, j));
}
@SuppressWarnings("unchecked")
Stream> allPossibleEdges(Predicate> from, Predicate> action, Predicate> to) {
return new StreamableCartesianator © 2015 - 2025 Weber Informatics LLC | Privacy Policy