diff --git a/debug/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/CheckTests.java b/debug/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/CheckTests.java index bcffbb94253..67de9f1de07 100644 --- a/debug/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/CheckTests.java +++ b/debug/org.eclipse.debug.tests/src/org/eclipse/debug/tests/viewer/model/CheckTests.java @@ -18,13 +18,15 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.ModelDelta; import org.eclipse.debug.tests.viewer.model.TestModel.TestElement; import org.eclipse.jface.viewers.TreePath; +import org.eclipse.swt.widgets.Display; +import org.junit.Assert; import org.junit.Test; /** - * Tests which verify the check box support. This test is very similar to the - * content test except that the extending class should create a viewer with - * the SWT.CHECK style enabled.
- * Most of the check box verification is performed in the test model. + * Tests which verify the check box support. This test is very similar to the + * content test except that the extending class should create a viewer with the + * SWT.CHECK style enabled.
+ * Most of the check box verification is performed in the test model. * * @since 3.6 */ @@ -44,9 +46,11 @@ public void testSimpleSingleLevel() throws Exception { fViewer.setAutoExpandLevel(-1); // Create the agent which forces the tree to populate - //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer); + // TreeModelViewerAutopopulateAgent autopopulateAgent = new + // TreeModelViewerAutopopulateAgent(fViewer); - // Create the listener which determines when the view is finished updating. + // Create the listener which determines when the view is finished + // updating. fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, true, false); // Set the viewer input (and trigger updates). @@ -60,7 +64,8 @@ public void testSimpleSingleLevel() throws Exception { @Test public void testSimpleMultiLevel() throws Exception { - //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer); + // TreeModelViewerAutopopulateAgent autopopulateAgent = new + // TreeModelViewerAutopopulateAgent(fViewer); TestModel model = TestModel.simpleMultiLevel(); fViewer.setAutoExpandLevel(-1); @@ -74,38 +79,37 @@ public void testSimpleMultiLevel() throws Exception { model.validateData(fViewer, TreePath.EMPTY); } - // TODO: no idea how to trigger a toggle event on an item -// public void testCheckReceiver() { -// // Initial setup -// TestModel model = TestModel.simpleSingleLevel(); -// fViewer.setAutoExpandLevel(-1); -// //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer); -// fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, true, false); -// fViewer.setInput(model.getRootElement()); -// -// // Wait for the updates to complete and validate. -// while (!fListener.isFinished()) if (!fDisplay.readAndDispatch ()) Thread.sleep(0); -// model.validateData(fViewer, TreePath.EMPTY); -// -// InternalTreeModelViewer treeViewer = ((InternalTreeModelViewer)fViewer); -// TreePath elementPath = model.findElement("1"); -// TestElement element = model.getElement(elementPath); -// boolean initialCheckState = element.getChecked(); -// Event event = new Event(); -// event.item = treeViewer.findItem(elementPath); -// event.detail = SWT.CHECK; -// event.display = fDisplay; -// event.type = SWT.Selection; -// event.widget = treeViewer.getControl(); -// fDisplay.post(event); -// -// while (fDisplay.readAndDispatch ()); -// -// Assert.assertTrue(element.getChecked() != initialCheckState); -// } + @Test + public void testCheckReceiver() throws Exception { + // Initial setup + TestModel model = TestModel.simpleSingleLevel(); + fViewer.setAutoExpandLevel(-1); + // TreeModelViewerAutopopulateAgent autopopulateAgent = new + // TreeModelViewerAutopopulateAgent(fViewer); + fListener.reset(TreePath.EMPTY, model.getRootElement(), -1, true, false); + fViewer.setInput(model.getRootElement()); + + waitWhile(t -> !fListener.isFinished(), createListenerErrorMessage()); + model.validateData(fViewer, TreePath.EMPTY); + + TestElement element = model.getRootElement().getChildren()[0]; + boolean initialCheckState = element.getChecked(); + TreePath elementPath = new TreePath(new Object[] { element }); + ModelDelta delta = model.setElementChecked(elementPath, true, false); + + fListener.reset(elementPath, element, -1, true, false); + model.postDelta(delta); + + while (Display.getCurrent().readAndDispatch()) { + } + + Assert.assertTrue(element.getChecked() != initialCheckState); + } + @Test public void testUpdateCheck() throws Exception { - //TreeModelViewerAutopopulateAgent autopopulateAgent = new TreeModelViewerAutopopulateAgent(fViewer); + // TreeModelViewerAutopopulateAgent autopopulateAgent = new + // TreeModelViewerAutopopulateAgent(fViewer); TestModel model = TestModel.simpleSingleLevel(); fViewer.setAutoExpandLevel(-1);