package org.springframework.webflow.execution.repository.impl;
import java.io.Serializable;
import junit.framework.TestCase;
import org.springframework.webflow.execution.repository.snapshot.FlowExecutionSnapshot;
import org.springframework.webflow.execution.repository.snapshot.SnapshotNotFoundException;
public class SimpleFlowExecutionSnapshotGroupTests extends TestCase {
private SimpleFlowExecutionSnapshotGroup group = new SimpleFlowExecutionSnapshotGroup();
private FlowExecutionSnapshot snapshot = new FlowExecutionSnapshot() {
};
private FlowExecutionSnapshot snapshot2 = new FlowExecutionSnapshot() {
};
private FlowExecutionSnapshot snapshot3 = new FlowExecutionSnapshot() {
};
public void testInitialState() {
assertEquals(0, group.getSnapshotCount());
assertEquals(-1, group.getMaxSnapshots());
assertEquals(new Integer(1), group.nextSnapshotId());
}
public void testGetSnapshot() {
Serializable id = group.nextSnapshotId();
group.addSnapshot(id, snapshot);
assertSame(snapshot, group.getSnapshot(id));
}
public void testGetSnapshotNotFound() {
try {
group.getSnapshot(group.nextSnapshotId());
fail("Should have failed");
} catch (SnapshotNotFoundException e) {
}
}
public void testNextSnapshotId() {
assertEquals(new Integer(1), group.nextSnapshotId());
assertEquals(new Integer(2), group.nextSnapshotId());
}
public void testAddMaximumReached() {
group.setMaxSnapshots(2);
group.addSnapshot(group.nextSnapshotId(), snapshot);
group.addSnapshot(group.nextSnapshotId(), snapshot2);
group.addSnapshot(group.nextSnapshotId(), snapshot3);
assertEquals(2, group.getSnapshotCount());
try {
group.getSnapshot(1);
fail("Should have failed");
} catch (SnapshotNotFoundException e) {
}
}
public void testRemoveSnapshot() {
group.addSnapshot(group.nextSnapshotId(), snapshot);
group.addSnapshot(group.nextSnapshotId(), snapshot2);
assertEquals(2, group.getSnapshotCount());
group.removeSnapshot(1);
assertEquals(1, group.getSnapshotCount());
try {
group.getSnapshot(1);
fail("Should have failed");
} catch (SnapshotNotFoundException e) {
}
}
public void testRemoveAllSnapshots() {
group.addSnapshot(group.nextSnapshotId(), snapshot);
group.addSnapshot(group.nextSnapshotId(), snapshot2);
assertEquals(2, group.getSnapshotCount());
group.removeAllSnapshots();
assertEquals(0, group.getSnapshotCount());
}
public void testUpdateSnapshot() {
group.addSnapshot(group.nextSnapshotId(), snapshot);
group.updateSnapshot(1, snapshot2);
assertSame(snapshot2, group.getSnapshot(1));
}
public void testRemoveSnapshotDoesNotExist() {
group.addSnapshot(group.nextSnapshotId(), snapshot);
group.removeSnapshot(1);
assertEquals(0, group.getSnapshotCount());
group.removeSnapshot(1);
assertEquals(0, group.getSnapshotCount());
}
public void testRemoveSnapshotsDoesNotExist() {
group.addSnapshot(group.nextSnapshotId(), snapshot);
group.removeAllSnapshots();
assertEquals(0, group.getSnapshotCount());
group.removeAllSnapshots();
assertEquals(0, group.getSnapshotCount());
}
public void testUpdateSnapshotDoesNotExist() {
assertEquals(0, group.getSnapshotCount());
group.updateSnapshot(1, snapshot2);
assertEquals(0, group.getSnapshotCount());
}
}