/*******************************************************************************
* Copyright (c) 2010 SAP AG.
* 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:
* Emil Simeonov - initial API and implementation.
* Dimitar Donchev - initial API and implementation.
* Dimitar Tenev - initial API and implementation.
* Nevena Manova - initial API and implementation.
* Georgi Konstantinov - initial API and implementation.
*******************************************************************************/
package org.eclipse.wst.sse.sieditor.test.ui.v2.dt;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import org.eclipse.ui.forms.IDetailsPage;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesDetailsPageProvider;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.ElementNodeDetailsPage;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.IDataTypesFormPageController;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.ITypeDisplayer;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.NamespaceDetailsPage;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.SimpleTypeNodeDetailsPage;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.StructureNodeDetailsPage;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.IElementNode;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.INamespaceNode;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.ISimpleTypeNode;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.IStructureTypeNode;
import org.junit.Before;
import org.junit.Test;
import org.eclipse.wst.sse.sieditor.model.xsd.api.IStructureType;
public class DataTypesDetailsPageProviderTest {
private INamespaceNode namespaceNode;
private IElementNode elementNode;
private ISimpleTypeNode simpleTypeNode;
private IStructureTypeNode structureTypeNode;
private DataTypesDetailsPageProvider pageProvider;
private ITypeDisplayer typeDisplayer;
private IDataTypesFormPageController controller;
private IStructureType modelObject;
private java.util.Map<String, org.eclipse.ui.forms.IDetailsPage> pagesMap;
@Before
public void setUp() {
namespaceNode = createMock(INamespaceNode.class);
elementNode = createMock(IElementNode.class);
simpleTypeNode = createMock(ISimpleTypeNode.class);
structureTypeNode = createMock(IStructureTypeNode.class);
typeDisplayer = createMock(ITypeDisplayer.class);
controller = createMock(IDataTypesFormPageController.class);
modelObject = createMock(IStructureType.class);
pageProvider = new DataTypesDetailsPageProvider(controller, typeDisplayer) {
@Override
protected java.util.Map<String, org.eclipse.ui.forms.IDetailsPage> getPages() {
pagesMap = super.getPages();
return pagesMap;
}
};
}
@Test
public void getPageKey() {
assertEquals(DataTypesDetailsPageProvider.NAMESPACE_KEY, pageProvider.getPageKey(namespaceNode));
assertEquals(DataTypesDetailsPageProvider.SIMPLE_TYPE_KEY, pageProvider.getPageKey(simpleTypeNode));
assertEquals(DataTypesDetailsPageProvider.ELEMENT_KEY, pageProvider.getPageKey(elementNode));
}
@Test
public void getPageKey_StructureType_IsElement() {
expect(structureTypeNode.getModelObject()).andReturn(modelObject).anyTimes();
expect(modelObject.isElement()).andReturn(false);
replay(structureTypeNode, modelObject);
assertEquals(DataTypesDetailsPageProvider.COMPLEX_TYPE_KEY, pageProvider.getPageKey(structureTypeNode));
}
@Test
public void getPage_Key_StructureType_NotElement() {
expect(structureTypeNode.getModelObject()).andReturn(modelObject);
expect(modelObject.isElement()).andReturn(true);
replay(structureTypeNode, modelObject);
assertEquals(DataTypesDetailsPageProvider.ELEMENT_KEY, pageProvider.getPageKey(structureTypeNode));
}
@Test
public void getPage() {
assertNull(pagesMap);
//test the namespace page
IDetailsPage page = pageProvider.getPage(DataTypesDetailsPageProvider.NAMESPACE_KEY);
assertTrue(page instanceof NamespaceDetailsPage);
assertNotNull(pagesMap);
assertNotNull(pagesMap.get(DataTypesDetailsPageProvider.NAMESPACE_KEY));
assertSame(page, pagesMap.get(DataTypesDetailsPageProvider.NAMESPACE_KEY));
//test the simple type page
page = pageProvider.getPage(DataTypesDetailsPageProvider.SIMPLE_TYPE_KEY);
assertTrue(page instanceof SimpleTypeNodeDetailsPage);
assertNotNull(pagesMap);
assertNotNull(pagesMap.get(DataTypesDetailsPageProvider.SIMPLE_TYPE_KEY));
assertSame(page, pagesMap.get(DataTypesDetailsPageProvider.SIMPLE_TYPE_KEY));
//test the element type page
page = pageProvider.getPage(DataTypesDetailsPageProvider.ELEMENT_KEY);
assertTrue(page instanceof ElementNodeDetailsPage);
assertNotNull(pagesMap);
assertNotNull(pagesMap.get(DataTypesDetailsPageProvider.ELEMENT_KEY));
assertSame(page, pagesMap.get(DataTypesDetailsPageProvider.ELEMENT_KEY));
//test the structure type page
page = pageProvider.getPage(DataTypesDetailsPageProvider.COMPLEX_TYPE_KEY);
assertTrue(page instanceof StructureNodeDetailsPage);
assertNotNull(pagesMap);
assertNotNull(pagesMap.get(DataTypesDetailsPageProvider.COMPLEX_TYPE_KEY));
assertSame(page, pagesMap.get(DataTypesDetailsPageProvider.COMPLEX_TYPE_KEY));
}
}