package au.id.zancanaro.javacheck.state.queue.commands; import au.id.zancanaro.javacheck.Generator; import au.id.zancanaro.javacheck.state.Command; import au.id.zancanaro.javacheck.state.CommandValue; import au.id.zancanaro.javacheck.state.queue.QueueState; import java.util.ArrayList; import java.util.List; public class Offer extends Command, T, Boolean> { public final Generator generator; public Offer(Generator argGen) { this.generator = argGen; } @Override public Generator argsGenerator(QueueState state) { return generator; } @Override public boolean preCondition(QueueState state, T args) { return state != null; } @Override public Boolean runCommand(QueueState state, T args) { return state.getConcreteQueue().offer(args); } @Override public QueueState nextState(QueueState state, T args, CommandValue result) { List newState = new ArrayList<>(state.getAbstractQueue()); newState.add(args); return state.withAbstractQueue(newState); } }