package com.zachklipp.captivate.test.state_machine;
import com.zachklipp.captivate.state_machine.StateMachine;
import com.zachklipp.captivate.state_machine.StateMachineStorage;
import junit.framework.TestCase;
public class StateMachineStorageTest extends TestCase
{
private StateMachine mStateMachine = MockStateMachine.createWithSingleState();
private MockStorageBackend mStorageBackend;
private StateMachineStorage mStorageUnderTest;
@Override
protected void setUp()
{
mStorageBackend = new MockStorageBackend();
mStorageUnderTest = new StateMachineStorage(mStorageBackend);
}
public void testCreateWhenCannotLoad()
{
mStorageBackend.setCanLoad(false);
mStorageBackend.setStateMachineToCreate(mStateMachine);
assertSame(mStateMachine, mStorageUnderTest.loadOrCreate());
assertEquals(1, mStorageBackend.getCanLoadCallCount());
assertEquals(0, mStorageBackend.getLoadCallCount());
assertEquals(1, mStorageBackend.getCreateCallCount());
}
public void testLoad()
{
mStorageBackend.setCanLoad(true);
mStorageBackend.setStateMachineToLoad(mStateMachine);
assertSame(mStateMachine, mStorageUnderTest.loadOrCreate());
assertEquals(1, mStorageBackend.getCanLoadCallCount());
assertEquals(1, mStorageBackend.getLoadCallCount());
assertEquals(0, mStorageBackend.getCreateCallCount());
}
public void testSave()
{
mStorageUnderTest.save(mStateMachine);
StateMachine[] savedMachines = mStorageBackend.getSavedMachines();
assertEquals(1, savedMachines.length);
assertSame(mStateMachine, savedMachines[0]);
}
}