package com.zachklipp.captivate.test.state_machine; import java.util.ArrayList; import java.util.List; import com.zachklipp.captivate.state_machine.StateMachine; import com.zachklipp.captivate.state_machine.StateMachineStorage.StorageBackend; public class MockStorageBackend implements StorageBackend { private List<StateMachine> mSavedMachines = new ArrayList<StateMachine>(); private long mCanLoadCallCount = 0; private boolean mCanLoad = false; private long mLoadCallCount = 0; private StateMachine mStateMachineToLoad; private long mCreateCallCount = 0; private StateMachine mStateMachineToCreate; private boolean mLoadFromSave = false; public void setLoadFromSave(boolean loadFromSave) { mLoadFromSave = loadFromSave; } @Override public void save(StateMachine machine) { mSavedMachines.add(machine); } public StateMachine[] getSavedMachines() { StateMachine[] machines = new StateMachine[mSavedMachines.size()]; return mSavedMachines.toArray(machines); } @Override public boolean canLoad() { mCanLoadCallCount++; if (mLoadFromSave) return mSavedMachines.size() > 0; else return mCanLoad; } public long getCanLoadCallCount() { return mCanLoadCallCount; } /* * Has no effect if mLoadFromSave is true. */ public void setCanLoad(boolean canLoad) { mCanLoad = canLoad; } @Override public StateMachine load() { mLoadCallCount++; if (mLoadFromSave) return mSavedMachines.get(mSavedMachines.size() - 1); else return mStateMachineToLoad; } public long getLoadCallCount() { return mLoadCallCount; } /* * Has no effect if mLoadFromSave is true. */ public void setStateMachineToLoad(StateMachine machine) { mStateMachineToLoad = machine; } @Override public StateMachine create() { mCreateCallCount++; return mStateMachineToCreate; } public long getCreateCallCount() { return mCreateCallCount; } public void setStateMachineToCreate(StateMachine machine) { mStateMachineToCreate = machine; } }