Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal')
-rw-r--r--tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/AllTests.java26
-rw-r--r--tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/FakePagePart.java57
-rw-r--r--tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/FakeSashContainerEventsListener.java186
-rw-r--r--tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/SashContainerEventsProviderTest.java186
-rw-r--r--tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/SashWindowsContainerEventsProviderTest.java312
-rw-r--r--tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/SashWindowsContainerTest.java370
6 files changed, 1137 insertions, 0 deletions
diff --git a/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/AllTests.java b/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/AllTests.java
new file mode 100644
index 00000000000..4dcc0bf054e
--- /dev/null
+++ b/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/AllTests.java
@@ -0,0 +1,26 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ * 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:
+ * Remi Schnekenburger (CEA LIST) remi.schnekenburger@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.core.sasheditor.internal;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+
+/**
+ * All tests for package org.eclipse.papyrus.infra.core.sasheditor.internal
+ */
+@RunWith(Suite.class)
+@SuiteClasses({ SashContainerEventsProviderTest.class, SashWindowsContainerEventsProviderTest.class, SashWindowsContainerTest.class })
+public class AllTests {
+
+}
diff --git a/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/FakePagePart.java b/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/FakePagePart.java
new file mode 100644
index 00000000000..2ab4d8dbcc1
--- /dev/null
+++ b/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/FakePagePart.java
@@ -0,0 +1,57 @@
+/**
+ *
+ */
+package org.eclipse.papyrus.infra.core.sasheditor.internal;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+
+/**
+ * A Page part for testing purpose. This page cannot be used in the SashContainer.
+ * @author cedric dumoulin
+ *
+ */
+public class FakePagePart extends PagePart {
+
+ public FakePagePart() {
+ super(null, null);
+ }
+
+ @Override
+ boolean visit(IPartVisitor visitor) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public Control getControl() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void reparent(TabFolderPart parent) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setFocus() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void garbage() {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/FakeSashContainerEventsListener.java b/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/FakeSashContainerEventsListener.java
new file mode 100644
index 00000000000..33e19d76bed
--- /dev/null
+++ b/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/FakeSashContainerEventsListener.java
@@ -0,0 +1,186 @@
+/**
+ *
+ */
+package org.eclipse.papyrus.infra.core.sasheditor.internal;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IPage;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.SashContainerEventsListener;
+
+
+/**
+ * A fake listener implementation for testing purpose.
+ * @author cedric dumoulin
+ *
+ */
+public class FakeSashContainerEventsListener implements SashContainerEventsListener {
+
+ public static final String PAGE_CHANGED = "pageChanged";
+
+ public static final String PAGE_OPENED = "pageOpened";
+
+ public static final String PAGE_CLOSED = "pageClosed";
+
+ public static final String PAGE_ACTIVATED = "pageActivated";
+
+ public static final String PAGE_DEACTIVATED = "pageDeactivated";
+
+ public static final String PAGE_ABOUTTOBECLOSED = "pageAboutToBeClosed";
+
+ public static final String PAGE_ABOUTTOBEOPENED = "pageAboutToBeOpened";
+
+ /** */
+ public int eventCount = 0;
+
+ /** */
+ public List<String> traces;
+
+ /** */
+ public List<IPage> events;
+
+ /**
+ *
+ * Constructor.
+ *
+ */
+ public FakeSashContainerEventsListener() {
+ traces = new ArrayList<String>();
+ events = new ArrayList<IPage>();
+ }
+
+
+ /**
+ * @return the eventCount
+ */
+ public int getEventCount() {
+ return eventCount;
+ }
+
+
+ /**
+ * @return the trace
+ */
+ public List<String> getTraces() {
+ return traces;
+ }
+
+ /**
+ * @return the trace
+ */
+ public String getTrace(int index) {
+ return traces.get(index);
+ }
+
+ /**
+ * @return the trace
+ */
+ public List<IPage> getEvents() {
+ return events;
+ }
+
+ /**
+ * @return the trace
+ */
+ public IPage getEvent(int index) {
+ return events.get(index);
+ }
+
+ /**
+ *
+ */
+ public void resetChangeCount() {
+ eventCount = 0;
+ }
+
+ /**
+ *
+ */
+ public void resetTraces() {
+ traces.clear();
+ events.clear();
+ }
+
+ /* ************************** */
+ /* Methods */
+ /* ************************** */
+
+ /**
+ * @see org.eclipse.papyrus.infra.core.sasheditor.editor.IPageChangedListener#pageChanged(org.eclipse.papyrus.infra.core.sasheditor.editor.IPage)
+ *
+ * @param newPage
+ */
+ public void pageChanged(IPage newPage) {
+ traces.add(PAGE_CHANGED);
+ events.add(newPage);
+ eventCount++;
+ }
+
+ /**
+ * @see org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsListener#pageOpened(org.eclipse.papyrus.infra.core.sasheditor.editor.IPage)
+ *
+ * @param page
+ */
+ public void pageOpened(IPage page) {
+ traces.add(PAGE_OPENED);
+ events.add(page);
+ eventCount++;
+ }
+
+ /**
+ * @see org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsListener#pageClosed(org.eclipse.papyrus.infra.core.sasheditor.editor.IPage)
+ *
+ * @param page
+ */
+ public void pageClosed(IPage page) {
+ traces.add(PAGE_CLOSED);
+ events.add(page);
+ eventCount++;
+ }
+
+ /**
+ * @see org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsListener#pageActivated(org.eclipse.papyrus.infra.core.sasheditor.editor.IPage)
+ *
+ * @param page
+ */
+ public void pageActivated(IPage page) {
+ traces.add(PAGE_ACTIVATED);
+ events.add(page);
+ eventCount++;
+ }
+
+ /**
+ * @see org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsListener#pageDeactivated(org.eclipse.papyrus.infra.core.sasheditor.editor.IPage)
+ *
+ * @param page
+ */
+ public void pageDeactivated(IPage page) {
+ traces.add(PAGE_DEACTIVATED);
+ events.add(page);
+ eventCount++;
+ }
+
+ /**
+ * @see org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsListener#pageAboutToBeOpened(org.eclipse.papyrus.infra.core.sasheditor.editor.IPage)
+ *
+ * @param page
+ */
+ public void pageAboutToBeOpened(IPage page) {
+ traces.add(PAGE_ABOUTTOBEOPENED);
+ events.add(page);
+ eventCount++;
+ }
+
+ /**
+ * @see org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsListener#pageAboutToBeClosed(org.eclipse.papyrus.infra.core.sasheditor.editor.IPage)
+ *
+ * @param page
+ */
+ public void pageAboutToBeClosed(IPage page) {
+ traces.add(PAGE_ABOUTTOBECLOSED);
+ events.add(page);
+ eventCount++;
+ }
+
+}
diff --git a/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/SashContainerEventsProviderTest.java b/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/SashContainerEventsProviderTest.java
new file mode 100644
index 00000000000..6231b35f0c5
--- /dev/null
+++ b/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/SashContainerEventsProviderTest.java
@@ -0,0 +1,186 @@
+/**
+ *
+ */
+package org.eclipse.papyrus.infra.core.sasheditor.internal;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.papyrus.infra.core.sasheditor.internal.PagePart;
+import org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class SashContainerEventsProviderTest {
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#addListener(org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsListener)}.
+ */
+ @Test
+ public void testAddActiveEditorChangedListener() {
+ SashContainerEventsProvider provider = new SashContainerEventsProvider();
+
+ FakeSashContainerEventsListener listener = new FakeSashContainerEventsListener();
+ provider.addListener(listener);
+
+ // Use a null page, as it is not possible to instanciate a fake page.
+ PagePart page = null;
+
+ // Send an event and check that it is received. If received, the listener is register !
+ provider.firePageAboutToBeClosedEvent(page);
+ assertEquals("event fired", 1, listener.getEventCount());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#removeListener(org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsListener)}.
+ */
+ @Test
+ public void testRemoveActiveEditorChangedListener() {
+ SashContainerEventsProvider provider = new SashContainerEventsProvider();
+
+ FakeSashContainerEventsListener listener = new FakeSashContainerEventsListener();
+ provider.addListener(listener);
+ provider.removeListener(listener);
+
+ // Use a null page, as it is not possible to instanciate a fake page.
+ PagePart page = null;
+
+ // Send an event and check that it is received. If received, the listener is register !
+ provider.firePageAboutToBeClosedEvent(page);
+ assertEquals("event not fired", 0, listener.getEventCount());
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#firePageOpenedEvent(org.eclipse.papyrus.infra.core.sasheditor.internal.PagePart)}.
+ */
+ @Test
+ public void testFirePageOpenedEvent() {
+ SashContainerEventsProvider provider = new SashContainerEventsProvider();
+
+ FakeSashContainerEventsListener listener = new FakeSashContainerEventsListener();
+ provider.addListener(listener);
+
+ // Use a null page, as it is not possible to instanciate a fake page.
+ PagePart page = null;
+
+ // Send an event and check that it is received. If received, the listener is register !
+ provider.firePageOpenedEvent(page);
+ assertEquals("event fired", 1, listener.getEventCount());
+ assertEquals("right event", FakeSashContainerEventsListener.PAGE_OPENED, listener.getTraces().get(0));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#firePageClosedEvent(org.eclipse.papyrus.infra.core.sasheditor.internal.PagePart)}.
+ */
+ @Test
+ public void testFirePageClosedEvent() {
+ SashContainerEventsProvider provider = new SashContainerEventsProvider();
+
+ FakeSashContainerEventsListener listener = new FakeSashContainerEventsListener();
+ provider.addListener(listener);
+
+ // Use a null page, as it is not possible to instanciate a fake page.
+ PagePart page = null;
+
+ // Send an event and check that it is received. If received, the listener is register !
+ provider.firePageClosedEvent(page);
+ assertEquals("event fired", 1, listener.getEventCount());
+ assertEquals("right event", FakeSashContainerEventsListener.PAGE_CLOSED, listener.getTraces().get(0));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#firePageAboutToBeOpenedEvent(org.eclipse.papyrus.infra.core.sasheditor.internal.PagePart)}.
+ */
+ @Test
+ public void testFirePageAboutToBeOpenedEvent() {
+ SashContainerEventsProvider provider = new SashContainerEventsProvider();
+
+ FakeSashContainerEventsListener listener = new FakeSashContainerEventsListener();
+ provider.addListener(listener);
+
+ // Use a null page, as it is not possible to instanciate a fake page.
+ PagePart page = null;
+
+ // Send an event and check that it is received. If received, the listener is register !
+ provider.firePageAboutToBeOpenedEvent(page);
+ assertEquals("event fired", 1, listener.getEventCount());
+ assertEquals("right event", FakeSashContainerEventsListener.PAGE_ABOUTTOBEOPENED, listener.getTraces().get(0));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#firePageAboutToBeClosedEvent(org.eclipse.papyrus.infra.core.sasheditor.internal.PagePart)}.
+ */
+ @Test
+ public void testFirePageAboutToBeClosedEvent() {
+ SashContainerEventsProvider provider = new SashContainerEventsProvider();
+
+ FakeSashContainerEventsListener listener = new FakeSashContainerEventsListener();
+ provider.addListener(listener);
+
+ // Use a null page, as it is not possible to instanciate a fake page.
+ PagePart page = null;
+
+ // Send an event and check that it is received. If received, the listener is register !
+ provider.firePageAboutToBeClosedEvent(page);
+ assertEquals("event fired", 1, listener.getEventCount());
+ assertEquals("right event", FakeSashContainerEventsListener.PAGE_ABOUTTOBECLOSED, listener.getTraces().get(0));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#firePageActivatedEvent(org.eclipse.papyrus.infra.core.sasheditor.internal.PagePart)}.
+ */
+ @Test
+ public void testFirePageActivatedEvent() {
+ SashContainerEventsProvider provider = new SashContainerEventsProvider();
+
+ FakeSashContainerEventsListener listener = new FakeSashContainerEventsListener();
+ provider.addListener(listener);
+
+ // Use a null page, as it is not possible to instanciate a fake page.
+ PagePart page = null;
+
+ // Send an event and check that it is received. If received, the listener is register !
+ provider.firePageActivatedEvent(page);
+ assertEquals("event fired", 1, listener.getEventCount());
+ assertEquals("right event", FakeSashContainerEventsListener.PAGE_ACTIVATED, listener.getTraces().get(0));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#firePageDeactivatedEvent(org.eclipse.papyrus.infra.core.sasheditor.internal.PagePart)}.
+ */
+ @Test
+ public void testFirePageDeactivatedEvent() {
+ SashContainerEventsProvider provider = new SashContainerEventsProvider();
+
+ FakeSashContainerEventsListener listener = new FakeSashContainerEventsListener();
+ provider.addListener(listener);
+
+ // Use a null page, as it is not possible to instanciate a fake page.
+ PagePart page = null;
+
+ // Send an event and check that it is received. If received, the listener is register !
+ provider.firePageDeactivatedEvent(page);
+ assertEquals("event fired", 1, listener.getEventCount());
+ assertEquals("right event", FakeSashContainerEventsListener.PAGE_DEACTIVATED, listener.getTraces().get(0));
+ }
+
+}
diff --git a/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/SashWindowsContainerEventsProviderTest.java b/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/SashWindowsContainerEventsProviderTest.java
new file mode 100644
index 00000000000..6b84ab2b5cc
--- /dev/null
+++ b/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/SashWindowsContainerEventsProviderTest.java
@@ -0,0 +1,312 @@
+/**
+ *
+ */
+package org.eclipse.papyrus.infra.core.sasheditor.internal;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageModel;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.ISashWindowsContentProvider;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.ITabFolderModel;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.simple.SimpleSashWindowsContentProvider;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IPage;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.MessagePartModel;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.SashWindowsContainer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * Test the Events provider behaviors when pages are added to the SashContainer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class SashWindowsContainerEventsProviderTest {
+
+ protected Display display;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ if(display == null || display.isDisposed()) {
+ display = Display.getCurrent();
+ }
+ if(display == null) {
+ display = new Display();
+ }
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ // if(display != null) {
+ // display.dispose();
+ // display = null;
+ // }
+ }
+
+
+ /**
+ *
+ * @return
+ */
+ private Display getDisplay() {
+ return display;
+
+ }
+ /**
+ * Create a {@link SashWindowsContainer} to test. Initialize it with provided {@link ISashWindowsContentProvider}.
+ *
+ * @param contentProvider
+ * @return
+ */
+ protected SashWindowsContainer createSashWindowsContainer(ISashWindowsContentProvider contentProvider) {
+
+ display = getDisplay();
+ Shell shell = new Shell(display);
+ shell.setLayout(new FillLayout());
+
+ //
+ //new ShellEditor(shell);
+ SashWindowsContainer sashWindowContainer = new SashWindowsContainer();
+
+ sashWindowContainer.setContentProvider(contentProvider);
+
+ sashWindowContainer.createPartControl(shell);
+ // shell.open();
+ return sashWindowContainer;
+ }
+
+ /**
+ * Create a contentProvider.
+ *
+ * @return
+ */
+ protected SimpleSashWindowsContentProvider createContentProvider() {
+ SimpleSashWindowsContentProvider contentProvider = new SimpleSashWindowsContentProvider();
+
+ // Create pages and add them to the default folder
+ List<IPageModel> models = new ArrayList<IPageModel>();
+ for(int i = 0; i < 8; i++) {
+ IPageModel newModel = new MessagePartModel("model" + i);
+ contentProvider.addPage(newModel);
+ models.add(newModel);
+ }
+
+ return contentProvider;
+ }
+
+ /**
+ * Lookup a page by its raw model.
+ * @param container
+ * @param rawModel
+ * @return
+ */
+ protected IPage lookupTabFolderPart(SashWindowsContainer container, Object rawModel) {
+
+ LookupModelPageVisitor visitor = new LookupModelPageVisitor(rawModel);
+ container.visit(visitor);
+ return visitor.result();
+ }
+
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#addListener(org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsListener)}.
+ */
+ @Test
+ public void testAddActiveEditorChangedListener() {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#removeListener(org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsListener)}.
+ */
+ @Test
+ public void testRemoveActiveEditorChangedListener() {
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#firePageOpenedEvent(org.eclipse.papyrus.infra.core.sasheditor.internal.PagePart)}.
+ */
+ @Test
+ public void testFirePageOpenedEvent() {
+
+ // Create container and contentProvider
+ ISashWindowsContentProvider contentProvider = createContentProvider();
+ SashWindowsContainer container = createSashWindowsContainer(contentProvider);
+
+ // Create listener and attach it
+ FakeSashContainerEventsListener listener = new FakeSashContainerEventsListener();
+ container.addLifeCycleListener(listener);
+
+ // Do refresh. This fire events
+ container.refreshTabs();
+ listener.resetChangeCount();
+ listener.resetTraces();
+
+
+ // Add an editor
+ contentProvider.addPage( new MessagePartModel("newPage") );
+ container.refreshTabs();
+
+ // check events (there is more than the 2 expected)
+ assertTrue("event fired", 2<=listener.getEventCount());
+ int i=0;
+ assertEquals("right event", FakeSashContainerEventsListener.PAGE_ABOUTTOBEOPENED, listener.getTraces().get(i++));
+ assertEquals("right event", FakeSashContainerEventsListener.PAGE_OPENED, listener.getTraces().get(i++));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#firePageClosedEvent(org.eclipse.papyrus.infra.core.sasheditor.internal.PagePart)}.
+ */
+ @Test
+ public void testFirePageClosedEvent() {
+ // Create container and contentProvider
+ ISashWindowsContentProvider contentProvider = createContentProvider();
+ SashWindowsContainer container = createSashWindowsContainer(contentProvider);
+
+ // Create listener and attach it
+ FakeSashContainerEventsListener listener = new FakeSashContainerEventsListener();
+ container.addLifeCycleListener(listener);
+
+ // Do refresh. This fire events
+ container.refreshTabs();
+
+
+ // Add an editor
+ IPageModel model = new MessagePartModel("newPage");
+ contentProvider.addPage( model );
+ container.refreshTabs();
+ listener.resetChangeCount();
+ listener.resetTraces();
+
+ IPage page1 = lookupTabFolderPart(container, model);
+ assertNotNull("Page found", page1);
+
+ // Close page
+ contentProvider.removePage(model);
+ container.refreshTabs();
+
+ // check events (there is more than the 2 expected)
+ assertTrue("event fired", 2<=listener.getEventCount());
+
+ assertTrue("close event fired", listener.getEvents().contains(page1));
+ assertTrue("close event fired", listener.getTraces().contains(FakeSashContainerEventsListener.PAGE_CLOSED));
+ int index = listener.getTraces().indexOf(FakeSashContainerEventsListener.PAGE_CLOSED);
+ assertEquals("right page closed", page1, listener.getEvent(index));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#firePageAboutToBeOpenedEvent(org.eclipse.papyrus.infra.core.sasheditor.internal.PagePart)}.
+ */
+ @Test
+ public void testFirePageAboutToBeOpenedEvent() {
+ // Create container and contentProvider
+ ISashWindowsContentProvider contentProvider = createContentProvider();
+ SashWindowsContainer container = createSashWindowsContainer(contentProvider);
+
+ // Create listener and attach it
+ FakeSashContainerEventsListener listener = new FakeSashContainerEventsListener();
+ container.addLifeCycleListener(listener);
+
+ // Do refresh. This fire events
+ container.refreshTabs();
+ listener.resetChangeCount();
+ listener.resetTraces();
+
+
+ // Add an editor
+ contentProvider.addPage( new MessagePartModel("newPage") );
+ container.refreshTabs();
+
+ // check events (there is more than the 2 expected)
+ assertTrue("event fired", 2<=listener.getEventCount());
+ int i=0;
+ assertEquals("right event", FakeSashContainerEventsListener.PAGE_ABOUTTOBEOPENED, listener.getTraces().get(i++));
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#firePageAboutToBeClosedEvent(org.eclipse.papyrus.infra.core.sasheditor.internal.PagePart)}.
+ */
+ @Test
+ public void testFirePageAboutToBeClosedEvent() {
+ // no such event anymore
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#firePageActivatedEvent(org.eclipse.papyrus.infra.core.sasheditor.internal.PagePart)}.
+ */
+ @Test
+ public void testFirePageActivatedEvent() {
+ // Create container and contentProvider
+ SimpleSashWindowsContentProvider contentProvider = createContentProvider();
+ SashWindowsContainer container = createSashWindowsContainer(contentProvider);
+
+ // Create listener and attach it
+ FakeSashContainerEventsListener listener = new FakeSashContainerEventsListener();
+ container.addLifeCycleListener(listener);
+
+ container.refreshTabs();
+
+
+ // Add two pages
+ IPageModel pageModel1 = new MessagePartModel("newPage1");
+ IPageModel pageModel2 = new MessagePartModel("newPage2");
+ contentProvider.addPage(pageModel1);
+ contentProvider.addPage(pageModel2);
+
+
+ // Do refresh. This fire events
+ container.refreshTabs();
+ listener.resetChangeCount();
+ listener.resetTraces();
+
+ // Activate page 1
+ IPage page1 = lookupTabFolderPart(container, pageModel1);
+ container.selectPage(page1);
+
+ // check events (there is more than the 2 expected)
+ assertEquals("event fired", 1, listener.getEventCount());
+ int i=0;
+ assertEquals("right event", FakeSashContainerEventsListener.PAGE_ACTIVATED, listener.getTraces().get(i++));
+
+ // ****************
+ // Check with a move
+ listener.resetChangeCount();
+ listener.resetTraces();
+
+ ITabFolderModel folderModel = contentProvider.getCurrentTabFolder();
+ contentProvider.createFolder(folderModel, 1, folderModel, SWT.TOP);
+
+ // Do refresh. This fire events
+ container.refreshTabs();
+ // check events (there is more than the 2 expected)
+ assertEquals("event fired", 3, listener.getEventCount());
+ i=0;
+ assertEquals("right event", FakeSashContainerEventsListener.PAGE_ACTIVATED, listener.getTraces().get(i++));
+
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashContainerEventsProvider#firePageDeactivatedEvent(org.eclipse.papyrus.infra.core.sasheditor.internal.PagePart)}.
+ */
+ @Test
+ public void testFirePageDeactivatedEvent() {
+ }
+
+}
diff --git a/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/SashWindowsContainerTest.java b/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/SashWindowsContainerTest.java
new file mode 100644
index 00000000000..813729e583c
--- /dev/null
+++ b/tests/junit/plugins/core/org.eclipse.papyrus.sasheditor.tests/test/org/eclipse/papyrus/infra/core/sasheditor/internal/SashWindowsContainerTest.java
@@ -0,0 +1,370 @@
+/**
+ *
+ */
+package org.eclipse.papyrus.infra.core.sasheditor.internal;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageModel;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.ISashWindowsContentProvider;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.ITabFolderModel;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.simple.SimpleSashWindowsContentProvider;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IComponentPage;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IEditorPage;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IPageVisitor;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.MessagePartModel;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.SashWindowsContainer;
+import org.eclipse.papyrus.infra.core.sasheditor.internal.LookupFolderPartByRawModelVisitor;
+import org.eclipse.papyrus.infra.core.sasheditor.internal.TabFolderPart;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+
+/**
+ * Run as normal test.
+ *
+ * @author dumoulin
+ *
+ */
+public class SashWindowsContainerTest extends TestCase {
+
+
+ protected Display display;
+
+ /**
+ * Constructor.
+ *
+ * @param name
+ */
+ public SashWindowsContainerTest(String name) {
+ super(name);
+ }
+
+ /**
+ * @see junit.framework.TestCase#setUp()
+ * @throws java.lang.Exception
+ *
+ */
+ protected void setUp() throws Exception {
+ super.setUp();
+ display = Display.getCurrent();
+ if(display == null) {
+ display = new Display();
+ }
+
+ }
+
+ /**
+ * @see junit.framework.TestCase#tearDown()
+ * @throws java.lang.Exception
+ *
+ */
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ //display.dispose();
+ }
+
+ /**
+ * Create a {@link SashWindowsContainer} to test. Initialize it with provided {@link ISashWindowsContentProvider}.
+ *
+ * @param contentProvider
+ * @return
+ */
+ protected SashWindowsContainer createSashWindowsContainer(ISashWindowsContentProvider contentProvider) {
+ Shell shell = new Shell(display);
+ shell.setLayout(new FillLayout());
+
+ //
+ //new ShellEditor(shell);
+ SashWindowsContainer sashWindowContainer = new SashWindowsContainer();
+
+ sashWindowContainer.setContentProvider(contentProvider);
+
+ sashWindowContainer.createPartControl(shell);
+ // shell.open();
+ return sashWindowContainer;
+ }
+
+ /**
+ * Create a contentProvider.
+ *
+ * @return
+ */
+ protected ISashWindowsContentProvider createContentProvider() {
+ SimpleSashWindowsContentProvider contentProvider = new SimpleSashWindowsContentProvider();
+
+ // Create pages and add them to the default folder
+ List<IPageModel> models = new ArrayList<IPageModel>();
+ for(int i = 0; i < 8; i++) {
+ IPageModel newModel = new MessagePartModel("model" + i);
+ contentProvider.addPage(newModel);
+ models.add(newModel);
+ }
+
+ return contentProvider;
+ }
+
+ /**
+ * Test the method on a model with several folders and page.
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashWindowsContainer#getActiveEditor()}.
+ */
+ public void testGetActiveEditor() {
+ // Create
+ SimpleSashWindowsContentProvider contentProvider = new SimpleSashWindowsContentProvider();
+
+ // Create pages and add them to the default folder
+ List<IPageModel> models = new ArrayList<IPageModel>();
+ for(int i = 0; i < 2; i++) {
+ IPageModel newModel = new MessagePartModel("model" + i);
+ contentProvider.addPage(newModel);
+ models.add(newModel);
+ }
+
+ // Create new folder
+ ITabFolderModel folder = contentProvider.getCurrentTabFolder();
+ contentProvider.createFolder(folder, 1, folder, SWT.TOP);
+
+ // Get the active editor
+ SashWindowsContainer container = createSashWindowsContainer(contentProvider);
+ IPage page = container.getActiveSashWindowsPage();
+ assertNotNull("Page exist", page);
+ }
+
+ /**
+ * Test the method on a model with several folders and page.
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashWindowsContainer#getActiveEditor()}.
+ */
+ public void testGetVisiblePages() {
+ // Create
+ SimpleSashWindowsContentProvider contentProvider = new SimpleSashWindowsContentProvider();
+
+ // Create pages and add them to the default folder
+ List<IPageModel> models = new ArrayList<IPageModel>();
+ for(int i = 0; i < 2; i++) {
+ IPageModel newModel = new MessagePartModel("model" + i);
+ contentProvider.addPage(newModel);
+ models.add(newModel);
+ }
+
+ // Create new folder
+ ITabFolderModel folder = contentProvider.getCurrentTabFolder();
+ contentProvider.createFolder(folder, 1, folder, SWT.TOP);
+ // Add pages
+ List<IPageModel> modelsInFolder2 = new ArrayList<IPageModel>();
+ for(int i = 0; i < 2; i++) {
+ IPageModel newModel = new MessagePartModel("modelInFolder2" + i);
+ contentProvider.addPage(newModel);
+ modelsInFolder2.add(newModel);
+ }
+
+ // Build a list of expected visible models
+ List<IPageModel> expectedVisibleModel = new ArrayList<IPageModel>();
+ expectedVisibleModel.add( models.get(models.size()-1) );
+ expectedVisibleModel.add( modelsInFolder2.get(models.size()-1) );
+
+ // Get the active editor
+ SashWindowsContainer container = createSashWindowsContainer(contentProvider);
+ List<IPage> pages = container.getVisiblePages();
+
+ assertEquals("2 pages visible", 2, pages.size());
+ assertTrue("contains active from folder 1", expectedVisibleModel.contains(pages.get(0).getRawModel()) );
+ assertTrue("contains active from folder 1", expectedVisibleModel.contains(pages.get(1).getRawModel()) );
+// assertNotNull("Page exist", page);
+ }
+
+ /**
+ * Test the method on a model with no pages.
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashWindowsContainer#getActiveEditor()}.
+ */
+ public void testGetActiveEditorNoPage() {
+ // Create
+ SimpleSashWindowsContentProvider contentProvider = new SimpleSashWindowsContentProvider();
+
+
+ // Get the active editor
+ SashWindowsContainer container = createSashWindowsContainer(contentProvider);
+ IPage page = container.getActiveSashWindowsPage();
+ assertNull("No Page exist", page);
+ }
+
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashWindowsContainer#refreshTabs()}.
+ */
+ public void testRefreshTabs() {
+
+ ISashWindowsContentProvider contentProvider = createContentProvider();
+ SashWindowsContainer container = createSashWindowsContainer(contentProvider);
+
+ container.refreshTabs();
+ assertNotNull("container is set", container);
+
+ }
+
+ /**
+ * Test method for {@link org.eclipse.papyrus.infra.core.sasheditor.internal.SashWindowsContainer#refreshTabs()}.
+ */
+ public void testRefreshTabs2() {
+
+ // Test 2 folders, one tab each. Then supress one tabs.
+ // 1 folder with one tab should remain.
+ SimpleSashWindowsContentProvider contentProvider = new SimpleSashWindowsContentProvider();
+
+ // Create pages and add them to the default folder
+ List<IPageModel> models = new ArrayList<IPageModel>();
+ for(int i = 0; i < 2; i++) {
+ IPageModel newModel = new MessagePartModel("model" + i);
+ contentProvider.addPage(newModel);
+ models.add(newModel);
+ }
+
+ // Create new folder
+ ITabFolderModel folder = contentProvider.getCurrentTabFolder();
+ contentProvider.createFolder(folder, 1, folder, SWT.TOP);
+
+ // Create the container
+ SashWindowsContainer container = createSashWindowsContainer(contentProvider);
+ container.refreshTabs();
+ assertNotNull("container is set", container);
+
+ }
+
+ /**
+ * Test method for {@link SashWindowsContainer#visit(org.eclipse.papyrus.infra.core.sasheditor.editor.IPageVisitor)}
+ */
+ public void testVisit() {
+ // Create
+ SimpleSashWindowsContentProvider contentProvider = new SimpleSashWindowsContentProvider();
+
+ // Create pages and add them to the default folder
+ List<IPageModel> models = new ArrayList<IPageModel>();
+ for(int i = 0; i < 2; i++) {
+ IPageModel newModel = new MessagePartModel("model" + i);
+ contentProvider.addPage(newModel);
+ models.add(newModel);
+ }
+
+ // Create new folder
+ ITabFolderModel folder = contentProvider.getCurrentTabFolder();
+ contentProvider.createFolder(folder, 1, folder, SWT.TOP);
+
+ // Get the active editor
+ SashWindowsContainer container = createSashWindowsContainer(contentProvider);
+
+ CollectRawModelVisitor pageVisitor = new CollectRawModelVisitor();
+ container.visit(pageVisitor);
+
+ // Check each elements
+ Collection<Object> results = pageVisitor.collected;
+ assertEquals("list are of same size", models.size(), results.size());
+ for(Object model : models) {
+ assertTrue("model is in the collected list", results.contains(model));
+ }
+ }
+
+ protected class CollectRawModelVisitor implements IPageVisitor {
+
+ Collection<Object> collected = new ArrayList<Object>();
+
+ public void accept(IComponentPage page) {
+ collected.add(page.getRawModel());
+ }
+
+ public void accept(IEditorPage page) {
+ collected.add(page.getRawModel());
+ }
+ }
+
+ /**
+ * Test the lookup of a page by its raw model
+ * Test method for {@link SashWindowsContainer#lookupModelPage(Object)}
+ */
+ public void testlookupModelPage() {
+ // Create
+ SimpleSashWindowsContentProvider contentProvider = new SimpleSashWindowsContentProvider();
+
+ // Create pages and add them to the default folder
+ List<IPageModel> models = new ArrayList<IPageModel>();
+ for(int i = 0; i < 2; i++) {
+ IPageModel newModel = new MessagePartModel("model" + i);
+ contentProvider.addPage(newModel);
+ models.add(newModel);
+ }
+
+ // Create new folder
+ ITabFolderModel folder = contentProvider.getCurrentTabFolder();
+ contentProvider.createFolder(folder, 1, folder, SWT.TOP);
+
+ // Get the active editor
+ SashWindowsContainer container = createSashWindowsContainer(contentProvider);
+
+ Object model = models.get(1);
+ IPage foundPage = container.lookupModelPage(model);
+ assertEquals("Corresponding page is found", foundPage.getRawModel(), model);
+ }
+
+ /**
+ * Test method for {@link SashWindowsContainer#setFolderTabMenuManager(MenuManager)}
+ */
+ public void testSetFolderTabMenuManager_MenuManager() {
+ // Create
+ SimpleSashWindowsContentProvider contentProvider = new SimpleSashWindowsContentProvider();
+
+ // Create pages and add them to the default folder
+ List<IPageModel> models = new ArrayList<IPageModel>();
+ for(int i = 0; i < 2; i++) {
+ IPageModel newModel = new MessagePartModel("model" + i);
+ contentProvider.addPage(newModel);
+ models.add(newModel);
+ }
+
+ // Create new folders
+ ITabFolderModel referenceFolder = contentProvider.getCurrentTabFolder();
+ ITabFolderModel folder1 = contentProvider.createFolder(referenceFolder, SWT.TOP);
+ ITabFolderModel folder2 = contentProvider.createFolder(referenceFolder, SWT.DOWN);
+ ITabFolderModel folder3 = contentProvider.createFolder(referenceFolder, SWT.LEFT);
+
+ // Create SashWindowsContainer
+ SashWindowsContainer container = createSashWindowsContainer(contentProvider);
+ // Set a MenuManager
+ MenuManager menuManager = new MenuManager();
+ container.setFolderTabMenuManager(menuManager);
+
+ // Test if the menu has been set in already created folders.
+ TabFolderPart folderPart = lookupTabFolderPart(container, referenceFolder);
+ assertNotNull("menu exist", folderPart.getControl().getMenu() );;
+
+ folderPart = lookupTabFolderPart(container, folder1);
+ assertNotNull("menu exist", folderPart.getControl().getMenu() );;
+
+ folderPart = lookupTabFolderPart(container, folder2);
+ assertNotNull("menu exist", folderPart.getControl().getMenu() );;
+
+ folderPart = lookupTabFolderPart(container, folder3);
+ assertNotNull("menu exist", folderPart.getControl().getMenu() );;
+
+
+ // Now create another tab, refresh the container in order that the part is created,
+ // ant test it
+ ITabFolderModel folder4 = contentProvider.createFolder(referenceFolder, SWT.RIGHT);
+ container.refreshTabs();
+
+ folderPart = lookupTabFolderPart(container, folder4);
+ assertNotNull("menu exist", folderPart.getControl().getMenu() );;
+
+ }
+
+ protected TabFolderPart lookupTabFolderPart(SashWindowsContainer container, Object rawModel) {
+
+ LookupFolderPartByRawModelVisitor visitor = new LookupFolderPartByRawModelVisitor(rawModel);
+ container.visit(visitor);
+ return visitor.result();
+ }
+}

Back to the top