/*******************************************************************************
* Copyright (c) 2008, 2009 Red Hat, Inc.
* 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:
* Elliott Baron <ebaron@redhat.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.internal.valgrind.massif.tests;
import static org.junit.Assert.assertTrue;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.TreePath;
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.linuxtools.internal.valgrind.massif.MassifHeapTreeNode;
import org.eclipse.linuxtools.internal.valgrind.massif.MassifLaunchConstants;
import org.eclipse.linuxtools.internal.valgrind.massif.MassifSnapshot;
import org.eclipse.linuxtools.internal.valgrind.massif.MassifTreeViewer;
import org.eclipse.linuxtools.internal.valgrind.massif.MassifViewPart;
import org.eclipse.linuxtools.internal.valgrind.ui.ValgrindUIPlugin;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class DoubleClickTest extends AbstractMassifTest {
private MassifHeapTreeNode node;
@Before
public void prep() throws Exception {
proj = createProjectAndBuild("alloctest"); //$NON-NLS-1$
}
@Override
@After
public void tearDown() throws CoreException {
deleteProject(proj);
super.tearDown();
}
private void doDoubleClick() {
MassifViewPart view = (MassifViewPart) ValgrindUIPlugin.getDefault().getView().getDynamicView();
MassifTreeViewer treeViewer = view.getTreeViewer();
MassifSnapshot[] snapshots = view.getSnapshots();
node = snapshots[1].getRoot(); // first detailed
TreePath path = new TreePath(new Object[] { node });
while (node.getChildren().length > 0 && !node.hasSourceFile()) {
node = node.getChildren()[0];
path = path.createChildPath(node);
}
assertTrue(node.hasSourceFile());
treeViewer.getViewer().expandToLevel(node,
AbstractTreeViewer.ALL_LEVELS);
TreeSelection selection = new TreeSelection(path);
// do double click
IDoubleClickListener listener = treeViewer.getDoubleClickListener();
listener.doubleClick(new DoubleClickEvent(treeViewer.getViewer(), selection));
}
@Test
public void testDoubleClickFile() throws Exception {
ILaunchConfiguration config = createConfiguration(proj.getProject());
ILaunchConfigurationWorkingCopy wc = config.getWorkingCopy();
wc.setAttribute(MassifLaunchConstants.ATTR_MASSIF_DETAILEDFREQ, 2);
wc.doSave();
doLaunch(config, "testDoubleClickFile"); //$NON-NLS-1$
doDoubleClick();
checkFile(proj.getProject(), node);
}
@Test
public void testDoubleClickLine() throws Exception {
ILaunchConfiguration config = createConfiguration(proj.getProject());
ILaunchConfigurationWorkingCopy wc = config.getWorkingCopy();
wc.setAttribute(MassifLaunchConstants.ATTR_MASSIF_DETAILEDFREQ, 2);
wc.doSave();
doLaunch(config, "testDoubleClickLine"); //$NON-NLS-1$
doDoubleClick();
checkLine(node);
}
}