diff options
| author | Florian Barbin | 2019-04-12 09:28:40 +0000 |
|---|---|---|
| committer | Florian Barbin | 2019-04-12 09:28:40 +0000 |
| commit | 32443373e5e8481c7a512a715d0e0afa7355e64e (patch) | |
| tree | 276bbaa0d0c8e0e2d12906024fa2e1a618f962df | |
| parent | cce80738bb99b7a8d6f34dbe8010570daaf4e961 (diff) | |
| download | org.eclipse.sirius-32443373e5e8481c7a512a715d0e0afa7355e64e.tar.gz org.eclipse.sirius-32443373e5e8481c7a512a715d0e0afa7355e64e.tar.xz org.eclipse.sirius-32443373e5e8481c7a512a715d0e0afa7355e64e.zip | |
[545853] Fix selection tests.
Since the selection can be asynchronous, this commit modifies those
tests to wait for the selection.
Bug: 545853
Change-Id: I8a7d010f1d215223be3ee6a84510cb3df371675d
Signed-off-by: Florian Barbin <florian.barbin@obeo.fr>
3 files changed, 112 insertions, 27 deletions
diff --git a/plugins/org.eclipse.sirius.tests.swtbot.support/src/org/eclipse/sirius/tests/swtbot/support/api/condition/SelectionCountCondition.java b/plugins/org.eclipse.sirius.tests.swtbot.support/src/org/eclipse/sirius/tests/swtbot/support/api/condition/SelectionCountCondition.java new file mode 100644 index 0000000000..c1175d1d6d --- /dev/null +++ b/plugins/org.eclipse.sirius.tests.swtbot.support/src/org/eclipse/sirius/tests/swtbot/support/api/condition/SelectionCountCondition.java @@ -0,0 +1,53 @@ +/******************************************************************************* + * Copyright (c) 2019 THALES GLOBAL SERVICES + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.sirius.tests.swtbot.support.api.condition; + +import org.eclipse.swtbot.swt.finder.waits.DefaultCondition; +import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree; + +/** + * A Condition to wait for the expected number of selected elements. + * + * @author fbarbin + * + */ +public class SelectionCountCondition extends DefaultCondition { + + private SWTBotTree swtBotTree; + + private int expected; + + /** + * Default constructor. + * + * @param swtBotTree + * the {@link SWTBotTree}. + * @param expected + * the expected selection count. + */ + public SelectionCountCondition(SWTBotTree swtBotTree, int expected) { + this.swtBotTree = swtBotTree; + this.expected = expected; + } + + @Override + public boolean test() throws Exception { + return swtBotTree.selectionCount() == expected; + } + + @Override + public String getFailureMessage() { + return "Wrong selection count"; + } + +} diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/table/CreatedDLinesSelectionTests.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/table/CreatedDLinesSelectionTests.java index c9ec2ed5a8..d9b98c0428 100644 --- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/table/CreatedDLinesSelectionTests.java +++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/table/CreatedDLinesSelectionTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 Obeo. + * Copyright (c) 2015, 2019 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at @@ -27,6 +27,7 @@ import org.eclipse.sirius.table.ui.tools.api.editor.DTableEditor; import org.eclipse.sirius.tests.swtbot.Activator; import org.eclipse.sirius.tests.swtbot.support.api.business.UIResource; import org.eclipse.sirius.tests.swtbot.support.api.business.UITreeRepresentation; +import org.eclipse.sirius.tests.swtbot.support.api.condition.SelectionCountCondition; import org.eclipse.sirius.tests.swtbot.support.utils.SWTBotUtils; import org.eclipse.sirius.tests.swtbot.tree.AbstractTreeSiriusSWTBotGefTestCase; import org.eclipse.sirius.tests.unit.diagram.modeler.ecore.EcoreModeler; @@ -82,8 +83,11 @@ public class CreatedDLinesSelectionTests extends AbstractTreeSiriusSWTBotGefTest */ public void testCreatedDTreeItemSelection() { SWTBotTree swtBotTree = tableEditorBot.bot().tree(); - int selectionCount = swtBotTree.selectionCount(); - assertEquals("Selection should be empty at the beginning", 0, selectionCount); + { + // Selection should be empty at the beginning + SelectionCountCondition countCondition = new SelectionCountCondition(swtBotTree, 0); + bot.waitUntil(countCondition); + } assertEquals(3, swtBotTree.visibleRowCount()); TransactionalEditingDomain domain = localSession.getOpenedSession().getTransactionalEditingDomain(); @@ -94,9 +98,11 @@ public class CreatedDLinesSelectionTests extends AbstractTreeSiriusSWTBotGefTest domain.getCommandStack().execute(addEPackageCmd); SWTBotUtils.waitAllUiEvents(); - selectionCount = swtBotTree.selectionCount(); - String assertMessage = "After a EPackage creation we should have one DLine selected"; - assertEquals(assertMessage, 1, selectionCount); + { + // After a EPackage creation we should have one DLine selected + SelectionCountCondition countCondition = new SelectionCountCondition(swtBotTree, 1); + bot.waitUntil(countCondition); + } assertEquals(subEPackage1.getName(), swtBotTree.selection().get(0, 0)); assertEquals(4, swtBotTree.visibleRowCount()); @@ -121,8 +127,11 @@ public class CreatedDLinesSelectionTests extends AbstractTreeSiriusSWTBotGefTest domain.getCommandStack().execute(addEPackageCmd); SWTBotUtils.waitAllUiEvents(); - selectionCount = swtBotTree.selectionCount(); - assertEquals("After a EPackage creation containing contents we should have 1 DLine selected", 1, selectionCount); + { + // After a EPackage creation containing contents we should have 1 DLine selected + SelectionCountCondition countCondition = new SelectionCountCondition(swtBotTree, 1); + bot.waitUntil(countCondition); + } assertEquals(subEPackage2.getName(), swtBotTree.selection().get(0, 0)); assertEquals(Iterators.size(ePackage.eAllContents()) - 1, swtBotTree.visibleRowCount()); @@ -131,15 +140,21 @@ public class CreatedDLinesSelectionTests extends AbstractTreeSiriusSWTBotGefTest domain.getCommandStack().execute(removeRootCmd); SWTBotUtils.waitAllUiEvents(); - selectionCount = swtBotTree.selectionCount(); - assertEquals("As tree is empty the selection count should be 0", 0, selectionCount); + { + // As tree is empty the selection count should be 0 + SelectionCountCondition countCondition = new SelectionCountCondition(swtBotTree, 0); + bot.waitUntil(countCondition); + } assertEquals(0, swtBotTree.visibleRowCount()); undo(localSession.getOpenedSession()); SWTBotUtils.waitAllUiEvents(); - selectionCount = swtBotTree.selectionCount(); - assertEquals("An deletion undo should trigger selection", 0, selectionCount); + { + // A deletion undo should trigger selection + SelectionCountCondition countCondition = new SelectionCountCondition(swtBotTree, 0); + bot.waitUntil(countCondition); + } assertEquals(Iterators.size(ePackage.eAllContents()) - 1, swtBotTree.visibleRowCount()); } diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/tree/CreatedDTreeItemsSelectionTests.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/tree/CreatedDTreeItemsSelectionTests.java index 197221a575..cad649d28e 100644 --- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/tree/CreatedDTreeItemsSelectionTests.java +++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/tree/CreatedDTreeItemsSelectionTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 Obeo. + * Copyright (c) 2015, 2019 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at @@ -24,6 +24,7 @@ import org.eclipse.sirius.business.api.preferences.SiriusPreferencesKeys; import org.eclipse.sirius.tests.swtbot.Activator; import org.eclipse.sirius.tests.swtbot.support.api.business.UIResource; import org.eclipse.sirius.tests.swtbot.support.api.business.UITreeRepresentation; +import org.eclipse.sirius.tests.swtbot.support.api.condition.SelectionCountCondition; import org.eclipse.sirius.tests.swtbot.support.api.condition.TreeChildrenNumberCondition; import org.eclipse.sirius.tests.swtbot.support.api.condition.TreeItemAvailableCondition; import org.eclipse.sirius.tests.swtbot.support.api.condition.TreeItemExpanded; @@ -86,16 +87,21 @@ public class CreatedDTreeItemsSelectionTests extends AbstractTreeSiriusSWTBotGef */ public void testCreatedDTreeItemSelection() { SWTBotTree swtBotTree = treeEditorBot.bot().tree(); - int selectionCount = swtBotTree.selectionCount(); - assertEquals("Selection should be empty at the beginning", 0, selectionCount); - assertEquals(2, swtBotTree.visibleRowCount()); + { + // Selection should be empty at the beginning + SelectionCountCondition countCondition = new SelectionCountCondition(swtBotTree, 0); + bot.waitUntil(countCondition); + } SWTBotTreeItem expandedBotTreeItem = swtBotTree.expandNode("new EClass 1"); bot.waitUntil(new TreeItemExpanded(expandedBotTreeItem, expandedBotTreeItem.getText())); SWTBotUtils.waitAllUiEvents(); - selectionCount = swtBotTree.selectionCount(); - assertEquals("Selection should be empty at the beginning", 0, selectionCount); + { + // Selection should be empty at the beginning + SelectionCountCondition countCondition = new SelectionCountCondition(swtBotTree, 0); + bot.waitUntil(countCondition); + } assertEquals(4, swtBotTree.visibleRowCount()); TransactionalEditingDomain domain = localSession.getOpenedSession().getTransactionalEditingDomain(); @@ -106,9 +112,11 @@ public class CreatedDTreeItemsSelectionTests extends AbstractTreeSiriusSWTBotGef domain.getCommandStack().execute(addEPackageCmd); SWTBotUtils.waitAllUiEvents(); - selectionCount = swtBotTree.selectionCount(); - String assertMessage = "After a EPackage creation we should have one DTreeItem selected"; - assertEquals(assertMessage, 1, selectionCount); + { + // After a EPackage creation we should have one DTreeItem selected + SelectionCountCondition countCondition = new SelectionCountCondition(swtBotTree, 1); + bot.waitUntil(countCondition); + } assertEquals(subEPackage1.getName(), swtBotTree.selection().get(0, 0)); assertEquals(5, swtBotTree.visibleRowCount()); @@ -134,8 +142,11 @@ public class CreatedDTreeItemsSelectionTests extends AbstractTreeSiriusSWTBotGef bot.waitUntil(new TreeItemAvailableCondition(swtBotTree, subEPackage2.getName(), true)); SWTBotUtils.waitAllUiEvents(); - selectionCount = swtBotTree.selectionCount(); - assertEquals("After a EPackage creation containing contents we should have 1 DTreeItem selected", 1, selectionCount); + { + // After a EPackage creation containing contents we should have 1 DTreeItem selected + SelectionCountCondition countCondition = new SelectionCountCondition(swtBotTree, 1); + bot.waitUntil(countCondition); + } assertEquals(subEPackage2.getName(), swtBotTree.selection().get(0, 0)); assertEquals(Iterators.size(ePackage.eAllContents()), swtBotTree.visibleRowCount()); @@ -145,15 +156,21 @@ public class CreatedDTreeItemsSelectionTests extends AbstractTreeSiriusSWTBotGef bot.waitUntil(new TreeChildrenNumberCondition(swtBotTree, 0)); SWTBotUtils.waitAllUiEvents(); - selectionCount = swtBotTree.selectionCount(); - assertEquals("As tree is empty the selection count should be 0", 0, selectionCount); + { + // As tree is empty the selection count should be 0 + SelectionCountCondition countCondition = new SelectionCountCondition(swtBotTree, 0); + bot.waitUntil(countCondition); + } assertEquals(0, swtBotTree.visibleRowCount()); undo(localSession.getOpenedSession()); SWTBotUtils.waitAllUiEvents(); - selectionCount = swtBotTree.selectionCount(); - assertEquals("An deletion undo should trigger selection", 0, selectionCount); + { + // An deletion undo should trigger selection + SelectionCountCondition countCondition = new SelectionCountCondition(swtBotTree, 0); + bot.waitUntil(countCondition); + } assertEquals(Iterators.size(ePackage.eAllContents()), swtBotTree.visibleRowCount()); } |
