/******************************************************************************* * 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.*; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.isA; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import java.io.IOException; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Widget; import org.eclipse.ui.forms.DetailsPart; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.SectionPart; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesEditorPage; import org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController; import org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesMasterDetailsBlock; import org.eclipse.wst.sse.sieditor.test.util.SIEditorBaseTest; import org.junit.Test; import org.eclipse.wst.sse.sieditor.model.api.IXSDModelRoot; /** * * */ public class DataTypesMasterDetailsBlockPlugInTest extends SIEditorBaseTest{ private static class TestDataTypesMasterDetailsBlock extends DataTypesMasterDetailsBlock{ public TestDataTypesMasterDetailsBlock(DataTypesEditorPage parent) {super(parent);} public static boolean updateButtonsStateCalled = false; @Override protected void updateButtonsState(IStructuredSelection selection) { updateButtonsStateCalled = true; super.updateButtonsState(selection); } public static boolean removePressedCalled = false; @Override protected void removePressed() { removePressedCalled = true; super.removePressed(); } } /** * Test method for {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesMasterDetailsBlock#createMasterPart(org.eclipse.ui.forms.IManagedForm, org.eclipse.swt.widgets.Composite)}. */ @Test public final void testCreateMasterPartIManagedFormComposite() { IXSDModelRoot xsdModelRoot = null; try { xsdModelRoot = getXSDModelRoot("pub/xsd/example.xsd", "example.xsd"); //$NON-NLS-1$//$NON-NLS-2$ } catch (IOException e) { fail("failed to create XSD model root"); //$NON-NLS-1$ } catch (CoreException e) { fail("failed to create XSD model root"); //$NON-NLS-1$ } assertNotNull(xsdModelRoot); FormToolkit formToolkit = new FormToolkit(Display.getCurrent()); IManagedForm managedForm = createNiceMock(IManagedForm.class); DataTypesEditorPage dtPage = createMock(DataTypesEditorPage.class); expect(dtPage.getModel()).andReturn(xsdModelRoot); expect(managedForm.getToolkit()).andReturn(formToolkit).anyTimes(); expect(managedForm.getForm()).andReturn(new ScrolledForm(new Shell())).anyTimes(); managedForm.addPart(isA(SectionPart.class)); managedForm.addPart(isA(DetailsPart.class)); replay(dtPage); replay(managedForm); DataTypesFormPageController dtfpController = new DataTypesFormPageController(xsdModelRoot, false); TestDataTypesMasterDetailsBlock mdb = new TestDataTypesMasterDetailsBlock(dtPage); mdb.setController(dtfpController); mdb.createContent(managedForm); TreeViewer treeViewer = mdb.getTreeViewer(); //test selecting and the call to update buttons TestDataTypesMasterDetailsBlock.updateButtonsStateCalled = false; treeViewer.setSelection(new StructuredSelection(treeViewer.getTree().getItems()[0].getData())); assertTrue(TestDataTypesMasterDetailsBlock.updateButtonsStateCalled); assertNotNull(treeViewer.getSelection()); assertEquals(1, ((StructuredSelection) treeViewer.getSelection()).size()); //test press of delete TestDataTypesMasterDetailsBlock.removePressedCalled = false; pressKeyOnWidget(treeViewer.getTree(), SWT.DEL); assertTrue(TestDataTypesMasterDetailsBlock.removePressedCalled); //refresh the tree viewer because the form page //(which should be the listener for model changes) is mocked treeViewer.refresh(); treeViewer.setSelection(new StructuredSelection(treeViewer.getTree().getItems()[0].getData())); //no j-unit tests available for direct editign of the tree nodes. verify(managedForm); verify(dtPage); } private void pressKeyOnWidget(Widget widget, int character) { Event keyEvent = new Event(); keyEvent.keyCode = character; keyEvent.type = SWT.KeyUp; keyEvent.widget = widget; widget.notifyListeners(SWT.KeyDown, keyEvent); } // /** // * Test method for {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesMasterDetailsBlock#addGlobalElementPressed()}. // */ // @Test // public final void testAddGlobalElementPressed() { // fail("Not yet implemented"); // TODO // } // // /** // * Test method for {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesMasterDetailsBlock#addSimpleTypePressed()}. // */ // @Test // public final void testAddSimpleTypePressed() { // fail("Not yet implemented"); // TODO // } // // /** // * Test method for {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesMasterDetailsBlock#removePressed()}. // */ // @Test // public final void testRemovePressed() { // fail("Not yet implemented"); // TODO // } // // /** // * Test method for {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesMasterDetailsBlock#addComplexTypePressed()}. // */ // @Test // public final void testAddComplexTypePressed() { // fail("Not yet implemented"); // TODO // } // // /** // * Test method for {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesMasterDetailsBlock#addNsPressed()}. // */ // @Test // public final void testAddNsPressed() { // fail("Not yet implemented"); // TODO // } // // /** // * Test method for {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesMasterDetailsBlock#addAttributePressed()}. // */ // @Test // public final void testAddAttributePressed() { // fail("Not yet implemented"); // TODO // } // // /** // * Test method for {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesMasterDetailsBlock#componentChanged(org.eclipse.wst.sse.sieditor.model.api.IModelChangeEvent)}. // */ // @Test // public final void testComponentChanged() { // fail("Not yet implemented"); // TODO // } // // /** // * Test method for {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesMasterDetailsBlock#showType(org.eclipse.wst.sse.sieditor.model.xsd.api.IType)}. // */ // @Test // public final void testShowType() { // fail("Not yet implemented"); // TODO // } }