diff options
author | Pawel Piech | 2010-10-13 20:30:24 +0000 |
---|---|---|
committer | Pawel Piech | 2010-10-13 20:30:24 +0000 |
commit | cd4a924f62c764af8c74879580aacadf7e79765e (patch) | |
tree | 374298ee5b8a047d03957158d0621bb9ec216f64 /org.eclipse.debug.tests | |
parent | 0a6a09c545aaa5fd8ec6b242787be87024d4be8d (diff) | |
download | eclipse.platform.debug-cd4a924f62c764af8c74879580aacadf7e79765e.tar.gz eclipse.platform.debug-cd4a924f62c764af8c74879580aacadf7e79765e.tar.xz eclipse.platform.debug-cd4a924f62c764af8c74879580aacadf7e79765e.zip |
Bug 327557 - test failure: testRestoreRevealAfterRevealCancel2
Diffstat (limited to 'org.eclipse.debug.tests')
3 files changed, 84 insertions, 18 deletions
diff --git a/org.eclipse.debug.tests/src/org/eclipe/debug/tests/viewer/model/JFaceViewerTopIndexTests.java b/org.eclipse.debug.tests/src/org/eclipe/debug/tests/viewer/model/JFaceViewerTopIndexTests.java index bcca99001..8f887c23e 100644 --- a/org.eclipse.debug.tests/src/org/eclipe/debug/tests/viewer/model/JFaceViewerTopIndexTests.java +++ b/org.eclipse.debug.tests/src/org/eclipe/debug/tests/viewer/model/JFaceViewerTopIndexTests.java @@ -19,6 +19,7 @@ import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.runtime.Platform; import org.eclipse.debug.internal.ui.viewers.model.ITreeModelContentProviderTarget; import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDeltaVisitor; import org.eclipse.debug.internal.ui.viewers.model.provisional.ModelDelta; import org.eclipse.debug.internal.ui.viewers.model.provisional.PresentationContext; import org.eclipse.debug.internal.ui.viewers.model.provisional.TreeModelViewer; @@ -80,7 +81,7 @@ public class JFaceViewerTopIndexTests extends TestCase implements ITestModelUpda } protected ITreeModelContentProviderTarget getCTargetViewer() { - return fViewer; + return (ITreeModelContentProviderTarget)fViewer; } protected TreeModelViewer createViewer(Display display, Shell shell) { @@ -148,7 +149,7 @@ public class JFaceViewerTopIndexTests extends TestCase implements ITestModelUpda // check if REVEAL was restored OK final TreePath topPath = getCTargetViewer().getTopElementPath(); Assert.assertNotNull("Top item should not be null!", topPath); - Assert.assertEquals(originalTopPath, topPath); + TreePathWrapper.assertEqual(originalTopPath, topPath); } /** @@ -241,8 +242,7 @@ public class JFaceViewerTopIndexTests extends TestCase implements ITestModelUpda // check if REVEAL was restored OK final TreePath topPath = getCTargetViewer().getTopElementPath(); Assert.assertNotNull("Top item should not be null!", topPath); - Assert.assertEquals(originalTopPath, topPath); - + TreePathWrapper.assertEqual(originalTopPath, topPath); } /** @@ -324,7 +324,7 @@ public class JFaceViewerTopIndexTests extends TestCase implements ITestModelUpda // check if REVEAL was restored OK final TreePath topPath = getCTargetViewer().getTopElementPath(); Assert.assertNotNull("Top item should not be null!", topPath); - Assert.assertEquals(originalTopPath, topPath); + TreePathWrapper.assertEqual(originalTopPath, topPath); } /** @@ -413,7 +413,8 @@ public class JFaceViewerTopIndexTests extends TestCase implements ITestModelUpda while (!fListener.isFinished()) if (!fDisplay.readAndDispatch ()) fDisplay.sleep (); model.validateData(fViewer, TreePath.EMPTY, true); - // Stop autopopulating the view. + // Stop auto-populating and auto-expanding the view. + fViewer.setAutoExpandLevel(0); autopopulateAgent.dispose(); // Set top index of view to element "3" and wait for view to repaint. @@ -428,7 +429,9 @@ public class JFaceViewerTopIndexTests extends TestCase implements ITestModelUpda // Set input back to root element. // Note: Wait only for the processing of the delta and the start of state restore, not for all updates fListener.reset(); - final TreePath elementPath = model.findElement("3"); + TreePath elementPath = model.findElement("2"); + fListener.addUpdates(fViewer, elementPath, model.getElement(elementPath), 1, STATE_UPDATES | CHILDREN_UPDATES | LABEL_UPDATES); + elementPath = model.findElement("3"); fListener.addUpdates(fViewer, elementPath, model.getElement(elementPath), 0, STATE_UPDATES); fViewer.setInput(model.getRootElement()); while (!fListener.isFinished(STATE_UPDATES)) @@ -437,22 +440,28 @@ public class JFaceViewerTopIndexTests extends TestCase implements ITestModelUpda // Update the viewer with new selection delta to something new in the view TreePath pathToBeRevealed = model.findElement("2.1"); ModelDelta revealDelta = model.makeElementDelta(pathToBeRevealed, IModelDelta.REVEAL); - + revealDelta.accept(new IModelDeltaVisitor() { + + public boolean visit(IModelDelta delta, int depth) { + ((ModelDelta)delta).setFlags(delta.getFlags() | IModelDelta.EXPAND); + return true; + } + }); + // Wait for the second model delta to process - fListener.reset(); model.postDelta(revealDelta); - while (!fListener.isFinished(MODEL_CHANGED_COMPLETE | CONTENT_UPDATES_COMPLETE)) + while (!fListener.isFinished(MODEL_CHANGED_COMPLETE | CHILDREN_UPDATES | LABEL_UPDATES)) if (!fDisplay.readAndDispatch ()) fDisplay.sleep (); - - while (fDisplay.readAndDispatch ()) {} - // check if REVEAL was restored OK + + // check if REVEAL was triggered by the delta and not by the + // state restore operation TreePath topPath = getCTargetViewer().getTopElementPath(); Assert.assertNotNull("Top item should not be null!", topPath); - Assert.assertEquals(pathToBeRevealed, topPath); - + TreePathWrapper.assertEqual(pathToBeRevealed, topPath); } + /** * Restore REVEAL when having also to restore an expanded element * that is just above the REVEAL element. @@ -504,8 +513,10 @@ public class JFaceViewerTopIndexTests extends TestCase implements ITestModelUpda // check if REVEAL was restored OK final TreePath topPath = getCTargetViewer().getTopElementPath(); Assert.assertNotNull("Top item should not be null!", topPath); - Assert.assertEquals(originalTopPath, topPath); + TreePathWrapper.assertEqual(originalTopPath, topPath); } + + } diff --git a/org.eclipse.debug.tests/src/org/eclipe/debug/tests/viewer/model/TestModelUpdatesListener.java b/org.eclipse.debug.tests/src/org/eclipe/debug/tests/viewer/model/TestModelUpdatesListener.java index 0764542ca..739b8dc16 100644 --- a/org.eclipse.debug.tests/src/org/eclipe/debug/tests/viewer/model/TestModelUpdatesListener.java +++ b/org.eclipse.debug.tests/src/org/eclipe/debug/tests/viewer/model/TestModelUpdatesListener.java @@ -286,8 +286,8 @@ public class TestModelUpdatesListener fHasChildrenUpdatesScheduled.add(path); } - if ((flags & STATE_UPDATES) != 0 && viewer != null) { - fStateUpdates.add(path); + if ((flags & STATE_UPDATES) != 0) { + fStateUpdates.add(path); } } diff --git a/org.eclipse.debug.tests/src/org/eclipe/debug/tests/viewer/model/TreePathWrapper.java b/org.eclipse.debug.tests/src/org/eclipe/debug/tests/viewer/model/TreePathWrapper.java new file mode 100644 index 000000000..e45f72fd5 --- /dev/null +++ b/org.eclipse.debug.tests/src/org/eclipe/debug/tests/viewer/model/TreePathWrapper.java @@ -0,0 +1,55 @@ +package org.eclipe.debug.tests.viewer.model; + +import junit.framework.Assert; + +import org.eclipse.jface.viewers.TreePath; + +/** + * Utility for comparing TreePath objects in unit tests. This wrapper prints the tree + * paths in exception showing contexts of the paths. + * + * @since 3.7 + */ +public class TreePathWrapper { + private final TreePath fPath; + + public TreePathWrapper(TreePath path) { + fPath = path; + } + + public int hashCode() { + return fPath.hashCode(); + } + + public boolean equals(Object obj) { + return obj instanceof TreePathWrapper && + fPath.equals( ((TreePathWrapper)obj).fPath ); + } + + public String toString() { + if (fPath.getSegmentCount() == 0) { + return "TreePath:EMPTY"; + } + + StringBuffer buf = new StringBuffer("TreePath:["); + + for (int i = 0; i < fPath.getSegmentCount(); i++) { + if (i != 0) { + buf.append(", "); + } + buf.append(fPath.getSegment(i)); + } + buf.append(']'); + return buf.toString(); + } + + /** + * Asserts that the two given tree paths are the same. In case of failure, the + * generated exception will contain a printout of the tree paths' contents. + */ + public static void assertEqual(TreePath expected, TreePath actual) { + Assert.assertEquals( + expected != null ? new TreePathWrapper(expected) : null, + actual != null ? new TreePathWrapper(actual) : null); + } +}
\ No newline at end of file |