Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/junit/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di.tests/test/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/internal/AbstractDiContentProviderTest.java')
-rw-r--r--tests/junit/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di.tests/test/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/internal/AbstractDiContentProviderTest.java394
1 files changed, 394 insertions, 0 deletions
diff --git a/tests/junit/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di.tests/test/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/internal/AbstractDiContentProviderTest.java b/tests/junit/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di.tests/test/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/internal/AbstractDiContentProviderTest.java
new file mode 100644
index 00000000000..3433a910f52
--- /dev/null
+++ b/tests/junit/plugins/infra/core/org.eclipse.papyrus.infra.core.sasheditor.di.tests/test/org/eclipse/papyrus/infra/core/sasheditor/di/contentprovider/internal/AbstractDiContentProviderTest.java
@@ -0,0 +1,394 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * 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:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.core.sasheditor.di.contentprovider.internal;
+
+import static org.eclipse.papyrus.infra.core.sasheditor.di.sashmodel.query.SashModelQuery.folder;
+import static org.eclipse.papyrus.infra.core.sasheditor.di.sashmodel.query.SashModelQuery.hSash;
+import static org.eclipse.papyrus.infra.core.sasheditor.di.sashmodel.query.SashModelQuery.page;
+import static org.eclipse.papyrus.infra.core.sasheditor.di.sashmodel.query.SashModelQuery.vSash;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Map;
+
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.ISashWindowsContentProvider;
+import org.eclipse.papyrus.infra.core.sasheditor.di.sashmodel.query.Folder;
+import org.eclipse.papyrus.infra.core.sasheditor.di.sashmodel.query.HSash;
+import org.eclipse.papyrus.infra.core.sasheditor.di.sashmodel.query.IQueryExp;
+import org.eclipse.papyrus.infra.core.sasheditor.di.sashmodel.query.Page;
+import org.eclipse.papyrus.infra.core.sasheditor.di.sashmodel.query.QueryException;
+import org.eclipse.papyrus.infra.core.sasheditor.di.sashmodel.query.SashModelQuery;
+import org.eclipse.papyrus.infra.core.sashwindows.di.PageRef;
+import org.eclipse.papyrus.infra.core.sashwindows.di.TabFolder;
+import org.eclipse.papyrus.junit.framework.classification.tests.AbstractPapyrusTest;
+import org.eclipse.swt.SWT;
+import org.junit.Test;
+
+/**
+ * Common ancestor for transactional and non transactional tests.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public abstract class AbstractDiContentProviderTest extends AbstractPapyrusTest {
+
+ /**
+ * The {@link DiContentProvider} under test.
+ */
+ protected DiContentProvider diContentProvider;
+
+ /**
+ * The {@link DiContentProvider} under test.
+ */
+ protected ISashWindowsContentProvider contentProvider;
+
+ /**
+ * ModelQuery used to query SashModel.
+ */
+ protected SashModelQuery modelQuery;
+
+
+ /**
+ * Create the specified model in the SashModel.
+ * Concrete implementation should call {@link SashModelQuery}, and surround call
+ * with transaction if needed.
+ *
+ *
+ * @param query
+ */
+ protected abstract void createModel(IQueryExp query) throws QueryException;
+
+ /**
+ * Test if the model can be modofied.
+ *
+ * @throws QueryException
+ */
+ @Test
+ public void testModelIsWritable() throws QueryException {
+
+ // Try to create a model
+ IQueryExp query = folder("a", page(), page());
+ createModel(query);
+ // Check creation
+ modelQuery.assertConform(query);
+
+ // Other query
+ // Other query
+ query = new HSash(new Folder(new Page(), new Page("p1")), new Folder("a", new Page()));
+ createModel(query);
+
+ // Check creation
+ modelQuery.assertConform(query);
+ Map<String, Object> result = modelQuery.queryModel(query);
+ assertNotNull("folder found", result.get("a"));
+ assertTrue("right type", result.get("a") instanceof TabFolder);
+ assertNotNull("page found", result.get("p1"));
+ assertTrue("right type", result.get("p1") instanceof PageRef);
+
+ // *********************
+ // Other query
+ query = hSash(folder(page(), page()), vSash("s2", folder(page()), folder(page())));
+ createModel(query);
+
+ // Check creation
+ modelQuery.assertConform(query);
+ result = modelQuery.queryModel(query);
+
+ }
+
+ /**
+ * Test tab close from a folder with more than one tab
+ *
+ * @throws QueryException
+ */
+ @Test
+ public void testClosePage() throws QueryException {
+
+ // Create a folder with several page
+ IQueryExp query = folder("f1", page("p1"), page("p2"), page("p3"));
+ createModel(query);
+ // Check creation
+ modelQuery.assertConform(query);
+
+ // get models (from diModels, and factory for sashModel)
+ Map<String, Object> modelElements = modelQuery.queryModel(query);
+ SashContainerModels sashModels = new SashContainerModels(diContentProvider, modelElements);
+
+ // do action : Close a page
+ contentProvider.removePage(sashModels.getFolder("f1"), 1);
+
+ // check result
+ IQueryExp expectedModel = folder("f1", page("p1"), page("p3"));
+ modelQuery.assertConform(expectedModel);
+
+ }
+
+ /**
+ * Test tab close from a folder with only one tab. Some other folder
+ * exist
+ *
+ * @throws QueryException
+ */
+ @Test
+ public void testCloseLastTab() throws QueryException {
+ // Create a folder with several page
+ IQueryExp query = hSash(folder("f1", page("p1"), page("p2"), page("p3")), folder("f2", page("p4")));
+ createModel(query);
+ // Check creation
+ modelQuery.assertConform(query);
+
+ // get models (from diModels, and factory for sashModel)
+ Map<String, Object> modelElements = modelQuery.queryModel(query);
+ SashContainerModels sashModels = new SashContainerModels(diContentProvider, modelElements);
+
+ // do action : Close a page
+ contentProvider.removePage(sashModels.getFolder("f2"), 0);
+
+ // check result
+ IQueryExp expectedModel = folder("f1", page("p1"), page("p2"), page("p3"));
+ modelQuery.assertConform(expectedModel);
+
+
+ }
+
+ /**
+ * Test tab close from the last folder with only one tab. No more folder
+ * exists.
+ *
+ * @throws QueryException
+ *
+ */
+ @Test
+ public void testCloseLastTabFromLastFolder() throws QueryException {
+
+ // Create a folder with several page
+ IQueryExp query = folder("f1", page("p1"));
+ createModel(query);
+ // Check creation
+ modelQuery.assertConform(query);
+
+ // get models (from diModels, and factory for sashModel)
+ Map<String, Object> modelElements = modelQuery.queryModel(query);
+ SashContainerModels sashModels = new SashContainerModels(diContentProvider, modelElements);
+
+ // do action : Close a page
+ contentProvider.removePage(sashModels.getFolder("f1"), 0);
+
+ // check result
+ IQueryExp expectedModel = folder("f1");
+ modelQuery.assertConform(expectedModel);
+ }
+
+ /**
+ * Test moving a page inside the same folder
+ *
+ * @throws QueryException
+ */
+ @Test
+ public void testMovePageInsideFolder() throws QueryException {
+
+ // Create a folder with several page
+ IQueryExp query = folder("f1", page("p1"), page("p2"), page("p3"));
+ createModel(query);
+ // Check creation
+ modelQuery.assertConform(query);
+
+ // get models (from diModels, and factory for sashModel)
+ Map<String, Object> modelElements = modelQuery.queryModel(query);
+ SashContainerModels sashModels = new SashContainerModels(diContentProvider, modelElements);
+
+ // do action : move a page
+ contentProvider.movePage(sashModels.getFolder("f1"), 1, 0);
+
+ // check result
+ IQueryExp expectedModel = folder("f1", page("p2"), page("p1"), page("p3"));
+ modelQuery.assertConform(expectedModel);
+
+ // do action : move a page
+ contentProvider.movePage(sashModels.getFolder("f1"), 0, 2);
+
+ // check result
+ expectedModel = folder("f1", page("p1"), page("p3"), page("p2"));
+ modelQuery.assertConform(expectedModel);
+
+ // do action : move a page
+ contentProvider.movePage(sashModels.getFolder("f1"), 2, 0);
+
+ // check result
+ expectedModel = folder("f1", page("p2"), page("p1"), page("p3"));
+ modelQuery.assertConform(expectedModel);
+ }
+
+ /**
+ * Test moving a page from folder to folder
+ *
+ * @throws QueryException
+ */
+ @Test
+ public void testMovePageBetweenFolder() throws QueryException {
+
+ // Create a folder with several page
+ IQueryExp query = hSash(folder("f1", page("p1"), page("p2"), page("p3")), folder("f2", page("p4")));
+ createModel(query);
+ // Check creation
+ modelQuery.assertConform(query);
+
+ // get models (from diModels, and factory for sashModel)
+ Map<String, Object> modelElements = modelQuery.queryModel(query);
+ SashContainerModels sashModels = new SashContainerModels(diContentProvider, modelElements);
+
+ // do action : move a page
+ contentProvider.movePage(sashModels.getFolder("f1"), 1, sashModels.getFolder("f2"), 0);
+
+ // check result
+ IQueryExp expectedModel = hSash(folder("f1", page("p1"), page("p3")), folder("f2", page("p2"), page("p4")));
+ modelQuery.assertConform(expectedModel);
+
+ // do action : move a page
+ contentProvider.movePage(sashModels.getFolder("f1"), 1, sashModels.getFolder("f2"), 1);
+
+ // check result
+ expectedModel = hSash(folder("f1", page("p1")), folder("f2", page("p2"), page("p3"), page("p4")));
+ modelQuery.assertConform(expectedModel);
+
+ // do action : move a page, drop in target page (targetIndex == -1
+ contentProvider.movePage(sashModels.getFolder("f2"), 0, sashModels.getFolder("f1"), -1);
+
+ // check result
+ expectedModel = hSash(folder("f1", page("p1"), page("p2")), folder("f2", page("p3"), page("p4")));
+ modelQuery.assertConform(expectedModel);
+
+ }
+
+ /**
+ * Test tab close from a folder with more than one tab
+ *
+ * @throws QueryException
+ */
+ @Test
+ public void testCreateFolder() throws QueryException {
+
+ // Create a folder with several page
+ IQueryExp query = folder("f1", page("p1"), page("p2"), page("p3"));
+ createModel(query);
+ // Check creation
+ modelQuery.assertConform(query);
+
+ // get models (from diModels, and factory for sashModel)
+ Map<String, Object> modelElements = modelQuery.queryModel(query);
+ SashContainerModels sashModels = new SashContainerModels(diContentProvider, modelElements);
+
+ // do action : create a folder
+ contentProvider.createFolder(sashModels.getFolder("f1"), 1, sashModels.getFolder("f1"), SWT.RIGHT);
+
+ // check result
+ IQueryExp expectedModel = hSash(folder("f1", page("p1"), page("p3")), folder(page("p2")));
+ modelQuery.assertConform(expectedModel);
+
+ // do action : create a folder
+ contentProvider.createFolder(sashModels.getFolder("f1"), 0, sashModels.getFolder("f1"), SWT.UP);
+
+ // check result
+ expectedModel = hSash(vSash(folder(page("p1")), folder("f1", page("p3"))), folder(page("p2")));
+ modelQuery.assertConform(expectedModel);
+
+ }
+
+ /**
+ * Test moving a folder around another folder
+ *
+ * @throws QueryException
+ */
+ @Test
+ public void testMoveFolderAroundFolder() throws QueryException {
+
+ // Create a folder with several page
+ IQueryExp query = hSash(folder("f1", page("p1"), page("p2"), page("p3")), folder("f2", page("p4"), page("p5")));
+ createModel(query);
+ // Check creation
+ modelQuery.assertConform(query);
+
+ // get models (from diModels, and factory for sashModel)
+ Map<String, Object> modelElements = modelQuery.queryModel(query);
+ SashContainerModels sashModels = new SashContainerModels(diContentProvider, modelElements);
+
+ // do action : move a folder
+ // -1 mean all pages
+ contentProvider.createFolder(sashModels.getFolder("f2"), -1, sashModels.getFolder("f1"), SWT.UP);
+
+ // check result
+ IQueryExp expectedModel = vSash(folder(page("p4"), page("p5")), folder("f1", page("p1"), page("p2"), page("p3")));
+ modelQuery.assertConform(expectedModel);
+
+ }
+
+ /**
+ * Test moving a folder inside another folder
+ *
+ * @throws QueryException
+ */
+ @Test
+ public void testMoveFolderInsideFolder() throws QueryException {
+
+ // Create a folder with several page
+ IQueryExp query = hSash(folder("f1", page("p1"), page("p2"), page("p3")), folder("f2", page("p4"), page("p5")));
+ createModel(query);
+ // Check creation
+ modelQuery.assertConform(query);
+
+ // get models (from diModels, and factory for sashModel)
+ Map<String, Object> modelElements = modelQuery.queryModel(query);
+ SashContainerModels sashModels = new SashContainerModels(diContentProvider, modelElements);
+
+ // do action : move a folder. In fact, move all the pages
+ // -1 mean all pages
+ contentProvider.movePage(sashModels.getFolder("f2"), -1, sashModels.getFolder("f1"), -1);
+
+ // check result
+ IQueryExp expectedModel = folder("f1", page("p1"), page("p2"), page("p3"), page("p4"), page("p5"));
+ modelQuery.assertConform(expectedModel);
+
+ }
+
+ /**
+ * Test moving a folder inside another folder
+ *
+ * @throws QueryException
+ */
+ @Test
+ public void testMoveFolderInsideFolderAtSpecifiedIndex() throws QueryException {
+
+ // Create a folder with several page
+ IQueryExp query = hSash(folder("f1", page("p1"), page("p2"), page("p3")), folder("f2", page("p4"), page("p5")));
+ createModel(query);
+ // Check creation
+ modelQuery.assertConform(query);
+
+ // get models (from diModels, and factory for sashModel)
+ Map<String, Object> modelElements = modelQuery.queryModel(query);
+ SashContainerModels sashModels = new SashContainerModels(diContentProvider, modelElements);
+
+ // do action : move a folder. In fact, move all the pages
+ // -1 mean all pages
+ contentProvider.movePage(sashModels.getFolder("f2"), -1, sashModels.getFolder("f1"), 0);
+
+ // check result
+ IQueryExp expectedModel = folder("f1", page("p4"), page("p5"), page("p1"), page("p2"), page("p3"));
+ modelQuery.assertConform(expectedModel);
+
+ }
+
+
+}

Back to the top