package tests.freemind;
import java.util.List;
import freemind.controller.LastStateStorageManagement;
import freemind.controller.actions.generated.instance.MindmapLastStateStorage;
public class LastStorageManagementTests extends FreeMindTestBase {
private static final String INITIAL_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><mindmap_last_state_map_storage/>";
private LastStateStorageManagement mMgm;
protected void setUp() throws Exception {
super.setUp();
mMgm = new LastStateStorageManagement(INITIAL_XML);
}
public void testGetXml() {
assertEquals(INITIAL_XML, mMgm.getXml());
}
public void testChangeOrAdd() {
for (int i = 0; i < LastStateStorageManagement.LIST_AMOUNT_LIMIT + 1; ++i) {
MindmapLastStateStorage test = new MindmapLastStateStorage();
test.setRestorableName("" + i);
mMgm.changeOrAdd(test);
assertEquals(test, mMgm.getStorage("" + i));
waitOneMilli();
}
// the element at zero is the oldest and must have been removed.
assertNull(mMgm.getStorage("" + 0));
}
public void testGetList() {
for (int i = 0; i < LastStateStorageManagement.LIST_AMOUNT_LIMIT; ++i) {
MindmapLastStateStorage test = new MindmapLastStateStorage();
test.setRestorableName("" + i);
if (i <= 5) {
test.setTabIndex(5 - i);
} else {
test.setTabIndex(-1);
}
mMgm.changeOrAdd(test);
assertEquals(test, mMgm.getStorage("" + i));
waitOneMilli();
}
List list = mMgm.getLastOpenList();
assertEquals(6, list.size());
assertEquals("5",
((MindmapLastStateStorage) list.get(0)).getRestorableName());
assertEquals("4",
((MindmapLastStateStorage) list.get(1)).getRestorableName());
}
public void testChangeOrAdd2() {
for (int i = 0; i < LastStateStorageManagement.LIST_AMOUNT_LIMIT; ++i) {
MindmapLastStateStorage test = new MindmapLastStateStorage();
test.setRestorableName("" + i);
mMgm.changeOrAdd(test);
assertEquals(test, mMgm.getStorage("" + i));
waitOneMilli();
}
// change the first:
MindmapLastStateStorage storageFirstElement = mMgm.getStorage("" + 0);
storageFirstElement.setY(2);
mMgm.changeOrAdd(storageFirstElement);
waitOneMilli();
MindmapLastStateStorage test = new MindmapLastStateStorage();
test.setRestorableName(""
+ LastStateStorageManagement.LIST_AMOUNT_LIMIT + 1);
mMgm.changeOrAdd(test);
waitOneMilli();
// the element at one is the oldest and must have been removed.
assertNotNull(mMgm.getStorage("" + 0));
assertNull(mMgm.getStorage("" + 1));
}
private void waitOneMilli() {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
freemind.main.Resources.getInstance().logException(e);
}
}
}