Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/SynchronizeViewTestAdapter.java')
-rw-r--r--tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/SynchronizeViewTestAdapter.java121
1 files changed, 99 insertions, 22 deletions
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/SynchronizeViewTestAdapter.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/SynchronizeViewTestAdapter.java
index 5ba4458a8..416e4d1b3 100644
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/SynchronizeViewTestAdapter.java
+++ b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/SynchronizeViewTestAdapter.java
@@ -12,10 +12,14 @@ package org.eclipse.team.tests.ccvs.ui;
import junit.framework.AssertionFailedError;
+import org.eclipse.compare.structuremergeviewer.IDiffContainer;
import org.eclipse.compare.structuremergeviewer.IDiffElement;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
-import org.eclipse.swt.widgets.Display;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.*;
import org.eclipse.team.core.TeamException;
import org.eclipse.team.core.subscribers.Subscriber;
import org.eclipse.team.core.synchronize.*;
@@ -102,6 +106,29 @@ public class SynchronizeViewTestAdapter extends SyncInfoSource {
if (participant == null) return null;
SubscriberSyncInfoCollector syncInfoCollector = participant.getSubscriberSyncInfoCollector();
EclipseTest.waitForSubscriberInputHandling(syncInfoCollector);
+ SubscriberParticipantPage page = getPage(subscriber);
+ SynchronizeModelManager manager = (SynchronizeModelManager)page.getConfiguration().getProperty(SynchronizePageConfiguration.P_MODEL_MANAGER);
+ AbstractSynchronizeModelProvider provider = (AbstractSynchronizeModelProvider)manager.getActiveModelProvider();
+ provider.waitUntilDone(new IProgressMonitor() {
+ public void beginTask(String name, int totalWork) {
+ }
+ public void done() {
+ }
+ public void internalWorked(double work) {
+ }
+ public boolean isCanceled() {
+ return false;
+ }
+ public void setCanceled(boolean value) {
+ }
+ public void setTaskName(String name) {
+ }
+ public void subTask(String name) {
+ }
+ public void worked(int work) {
+ while (Display.getCurrent().readAndDispatch()) {}
+ }
+ });
return syncInfoCollector;
}
@@ -201,6 +228,7 @@ public class SynchronizeViewTestAdapter extends SyncInfoSource {
super.refresh(subscriber, resources);
// Getting the collector waits for the subscriber input handlers
getCollector(subscriber);
+ assertViewMatchesModel(subscriber);
}
/* (non-Javadoc)
@@ -212,29 +240,10 @@ public class SynchronizeViewTestAdapter extends SyncInfoSource {
}
private SyncInfo internalGetSyncInfo(Subscriber subscriber, IResource resource) {
- try {
- SubscriberParticipant participant = getParticipant(subscriber);
- IWorkbenchPage activePage = TeamUIPlugin.getActivePage();
- ISynchronizeView view = (ISynchronizeView)activePage.showView(ISynchronizeView.VIEW_ID);
- IPage page = ((SynchronizeView)view).getPage(participant);
- if (page instanceof SubscriberParticipantPage) {
- SubscriberParticipantPage subscriberPage = (SubscriberParticipantPage)page;
- ISynchronizeModelElement root = subscriberPage.getViewerAdvisor().getModelManager().getModelRoot();
- if (root != null) {
- return findSyncInfo(root, resource);
- }
- }
- } catch (PartInitException e) {
- throw new AssertionFailedError("Cannot show sync view in active page");
- }
- return null;
+ ISynchronizeModelElement root = getModelRoot(subscriber);
+ return findSyncInfo(root, resource);
}
- /**
- * @param root
- * @param resource
- * @return
- */
private SyncInfo findSyncInfo(ISynchronizeModelElement node, IResource resource) {
if (node instanceof SyncInfoModelElement) {
SyncInfoModelElement element = (SyncInfoModelElement)node;
@@ -258,4 +267,72 @@ public class SynchronizeViewTestAdapter extends SyncInfoSource {
IPage page = ((SynchronizeView)view).getPage(participant);
return (ISynchronizePage)page;
}
+
+ public void assertViewMatchesModel(Subscriber subscriber) {
+ ISynchronizeModelElement root = getModelRoot(subscriber);
+ TreeItem[] rootItems = getTreeItems(subscriber);
+ assertMatchingTrees(root, rootItems, root.getChildren());
+ }
+
+ private ISynchronizeModelElement getModelRoot(Subscriber subscriber) {
+ SubscriberParticipantPage page = getPage(subscriber);
+ return page.getViewerAdvisor().getModelManager().getModelRoot();
+ }
+
+ private TreeItem[] getTreeItems(Subscriber subscriber) {
+ SubscriberParticipantPage page = getPage(subscriber);
+ Viewer v = page.getViewer();
+ if (v instanceof TreeViewer) {
+ TreeViewer treeViewer = (TreeViewer)v;
+ treeViewer.expandAll();
+ Tree t = (treeViewer).getTree();
+ return t.getItems();
+ }
+ throw new AssertionFailedError("The tree for " + subscriber.getName() + " could not be retrieved");
+ }
+
+ private static SubscriberParticipantPage getPage(Subscriber subscriber) {
+ try {
+ SubscriberParticipant participant = getParticipant(subscriber);
+ IWorkbenchPage activePage = TeamUIPlugin.getActivePage();
+ ISynchronizeView view = (ISynchronizeView)activePage.showView(ISynchronizeView.VIEW_ID);
+ IPage page = ((SynchronizeView)view).getPage(participant);
+ if (page instanceof SubscriberParticipantPage) {
+ SubscriberParticipantPage subscriberPage = (SubscriberParticipantPage)page;
+ return subscriberPage;
+ }
+ } catch (PartInitException e) {
+ throw new AssertionFailedError("Cannot show sync view in active page");
+ }
+ throw new AssertionFailedError("The page for " + subscriber.getName() + " could not be retrieved");
+ }
+
+ private void assertMatchingTrees(IDiffElement parent, TreeItem[] items, IDiffElement[] children) {
+ if ((items == null || items.length == 0) && (children == null || children.length == 0)) {
+ // No childen in either case so just return
+ return;
+ }
+ if (items == null || children == null || items.length != children.length) {
+ throw new AssertionFailedError("The number of children of " + parent.getName() + " is " +
+ (children == null ? 0: children.length) + " but the view has " +
+ (items == null ? 0 : items.length));
+ }
+ for (int i = 0; i < children.length; i++) {
+ IDiffElement element = children[i];
+ TreeItem foundItem = null;
+ for (int j = 0; j < items.length; j++) {
+ TreeItem item = items[j];
+ if (item.getData() == element) {
+ foundItem = item;
+ break;
+ }
+ }
+ if (foundItem == null) {
+ throw new AssertionFailedError("Element" + element.getName() + " is in the model but not in the view");
+ } else {
+ assertMatchingTrees(element, foundItem.getItems(), ((IDiffContainer)element).getChildren());
+ }
+ }
+
+ }
}

Back to the top