blob: 360572053dd7cc2e252dec7714b33cab18f3e054 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.tests.api;
import junit.framework.TestCase;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.PartInitException;
/**
* This view is used to test the creation and restoration of
* view state between sessions.
*/
public class SessionView extends MockViewPart {
private IMemento memento;
public static String VIEW_ID = "org.eclipse.ui.tests.api.SessionView";
/**
* Constructor for SessionView
*/
public SessionView() {
super();
}
/**
* @see IViewPart#init(IViewSite, IMemento)
*/
public void init(IViewSite site, IMemento memento) throws PartInitException {
super.init(site, memento);
this.memento = memento;
}
/**
* Create an IMemento.
*/
public void saveState(IMemento memento) {
createMementoState(memento);
}
/**
* Creates an IMemento.
*/
private void createMementoState(IMemento memento) {
// Create float, integer and string.
memento.putFloat("float", 0.50f);
memento.putInteger("integer", 50);
memento.putString("string", "50");
// Create a single child.
IMemento child = memento.createChild("single");
child.putInteger("id", 1);
// Create multiple children.
int count = 10;
for (int nX = 0; nX < count; nX++) {
child = memento.createChild("multiple");
child.putInteger("id", nX);
}
memento.putInteger("multiple.count", count);
}
/**
* Restore an IMemento.
*/
public void testMementoState(TestCase testCase) {
// Verify that the memento was passed to us in
// constructor.
TestCase.assertNotNull(memento);
// Read float.
Float bigFloat = memento.getFloat("float");
TestCase.assertNotNull(bigFloat);
TestCase.assertEquals(bigFloat.floatValue(), 0.50f, 0.0001);
// Read int.
Integer bigInt = memento.getInteger("integer");
TestCase.assertEquals(bigInt, new Integer(50));
// Read string.
String str = memento.getString("string");
TestCase.assertEquals(str, "50");
// Read single child.
IMemento child = memento.getChild("single");
TestCase.assertNotNull(child);
bigInt = child.getInteger("id");
TestCase.assertEquals(bigInt, new Integer(1));
// Read multiple children.
bigInt = memento.getInteger("multiple.count");
TestCase.assertNotNull(bigInt);
int count = bigInt.intValue();
IMemento[] children = memento.getChildren("multiple");
TestCase.assertEquals(count, children.length);
for (int nX = 0; nX < count; nX++) {
child = children[nX];
TestCase.assertNotNull(child);
bigInt = child.getInteger("id");
TestCase.assertEquals(bigInt, new Integer(nX));
}
}
}