blob: e0f442c5b32cc61da676b8cfc86305246eb2384f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 IBM Corporation and others.
*
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.team.tests.ccvs.ui;
import java.util.List;
import junit.framework.Test;
import org.eclipse.jface.dialogs.DialogSettings;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.layout.PixelConverter;
import org.eclipse.jface.viewers.ColumnLayoutData;
import org.eclipse.jface.viewers.ColumnPixelData;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Item;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.team.internal.ccvs.ui.CVSHistoryTableProvider;
import org.eclipse.team.internal.ccvs.ui.CVSUIMessages;
import org.eclipse.team.tests.ccvs.core.EclipseTest;
public class CVSHisoryTableProviderTest extends EclipseTest {
public void testAllNegatives() {
Display display = Display.getCurrent();
Shell shell = new Shell(display);
Composite composite = new Composite(shell, SWT.NONE);
composite.setLayout(new FillLayout());
CVSHistoryTableProvider provider = new CVSHistoryTableProvider();
// empty settings
TreeViewer treeViewer = provider.createTree(composite);
Tree tree = treeViewer.getTree();
Layout layout = tree.getLayout();
// layout.getColumns(tree);
Item[] items = (Item[]) ReflectionUtils.callMethod(layout,
"getColumns", new Class[] { Composite.class },
new Object[] { tree });
assertEquals(6, items.length);
// List columns = layout.columns;
List<ColumnLayoutData> columns = (List<ColumnLayoutData>) ReflectionUtils.getField(
layout, "columns");
// same weight for all columns
int weight = ((ColumnWeightData) columns.get(0)).weight;
for (ColumnLayoutData column : columns) {
assertTrue(column instanceof ColumnWeightData);
ColumnWeightData c = (ColumnWeightData) column;
assertTrue(c.weight > 0);
assertEquals(weight, c.weight);
}
// layout.layout(tree, false /*ignored in TableLayout*/);
}
public void testAllZeros() {
Display display = Display.getCurrent();
Shell shell = new Shell(display);
Composite composite = new Composite(shell, SWT.NONE);
composite.setLayout(new FillLayout());
CVSHistoryTableProvider provider = new CVSHistoryTableProvider();
// provider.settings = createDialogSettings(...);
ReflectionUtils.setField(provider, "settings",
createDialogSettings(provider, new int[] { 0, 0, 0, 0, 0, 0 }));
TreeViewer treeViewer = provider.createTree(composite);
Tree tree = treeViewer.getTree();
Layout layout = tree.getLayout();
// layout.getColumns(tree);
Item[] items = (Item[]) ReflectionUtils.callMethod(layout,
"getColumns", new Class[] { Composite.class },
new Object[] { tree });
assertEquals(6, items.length);
// List columns = layout.columns;
List <ColumnLayoutData> columns = (List<ColumnLayoutData>) ReflectionUtils.getField(
layout, "columns");
// same weight for all columns
int weight = ((ColumnWeightData) columns.get(0)).weight;
for (ColumnLayoutData column : columns) {
assertTrue(column instanceof ColumnWeightData);
ColumnWeightData c = (ColumnWeightData) column;
assertTrue(c.weight > 0);
assertEquals(weight, c.weight);
}
}
public void testNewBranchColumn() {
Display display = Display.getCurrent();
Shell shell = new Shell(display);
Composite composite = new Composite(shell, SWT.NONE);
composite.setLayout(new FillLayout());
CVSHistoryTableProvider provider = new CVSHistoryTableProvider();
// provider.settings = createDialogSettings(...);
ReflectionUtils.setField(
provider,
"settings",
createDialogSettings(provider, new int[] { 100, -1, 100, 100,
100, 100 }));
TreeViewer treeViewer = provider.createTree(composite);
Tree tree = treeViewer.getTree();
Layout layout = tree.getLayout();
// layout.getColumns(tree);
Item[] items = (Item[]) ReflectionUtils.callMethod(layout,
"getColumns", new Class[] { Composite.class },
new Object[] { tree });
assertEquals(6, items.length);
// List columns = layout.columns;
List<ColumnLayoutData> columns = (List<ColumnLayoutData>) ReflectionUtils.getField(
layout, "columns");
for (ColumnLayoutData column : columns) {
assertTrue(column instanceof ColumnPixelData);
ColumnPixelData c = (ColumnPixelData) column;
assertTrue(c.width > 0);
}
int branchesColumnWidth = ((ColumnPixelData) columns.get(1)).width;
int pixels = new PixelConverter(tree)
.convertWidthInCharsToPixels(CVSUIMessages.HistoryView_branches
.length() + 4);
assertEquals(pixels, branchesColumnWidth);
}
public void testAllPositives() {
Display display = Display.getCurrent();
Shell shell = new Shell(display);
Composite composite = new Composite(shell, SWT.NONE);
composite.setLayout(new FillLayout());
CVSHistoryTableProvider provider = new CVSHistoryTableProvider();
// provider.settings = createDialogSettings(...);
ReflectionUtils.setField(
provider,
"settings",
createDialogSettings(provider, new int[] { 100, 100, 100, 100,
100, 100 }));
TreeViewer treeViewer = provider.createTree(composite);
Tree tree = treeViewer.getTree();
Layout layout = tree.getLayout();
// layout.getColumns(tree);
Item[] items = (Item[]) ReflectionUtils.callMethod(layout,
"getColumns", new Class[] { Composite.class },
new Object[] { tree });
assertEquals(6, items.length);
// List columns = layout.columns;
List<ColumnLayoutData> columns = (List<ColumnLayoutData>) ReflectionUtils.getField(
layout, "columns");
for (ColumnLayoutData column : columns) {
assertTrue(column instanceof ColumnPixelData);
ColumnPixelData c = (ColumnPixelData) column;
assertEquals(100, c.width);
}
}
public void testHiddenColumn() {
Display display = Display.getCurrent();
Shell shell = new Shell(display);
Composite composite = new Composite(shell, SWT.NONE);
composite.setLayout(new FillLayout());
CVSHistoryTableProvider provider = new CVSHistoryTableProvider();
// provider.settings = createDialogSettings(...);
ReflectionUtils.setField(
provider,
"settings",
createDialogSettings(provider, new int[] { 100, 0, 100, 100,
100, 100 }));
TreeViewer treeViewer = provider.createTree(composite);
Tree tree = treeViewer.getTree();
Layout layout = tree.getLayout();
// layout.getColumns(tree);
Item[] items = (Item[]) ReflectionUtils.callMethod(layout,
"getColumns", new Class[] { Composite.class },
new Object[] { tree });
assertEquals(6, items.length);
// List columns = layout.columns;
List<ColumnPixelData> columns = (List<ColumnPixelData>) ReflectionUtils.getField(
layout, "columns");
ColumnPixelData[] columnsArray = columns.toArray(new ColumnPixelData[0]);
assertEquals(100, columnsArray[0].width);
assertEquals(0, columnsArray[1].width); // keep user settings
assertEquals(100, columnsArray[2].width);
assertEquals(100, columnsArray[3].width);
assertEquals(100, columnsArray[4].width);
assertEquals(100, columnsArray[5].width);
}
private IDialogSettings createDialogSettings(
CVSHistoryTableProvider provider, int[] widths) {
String sectionName = (String) ReflectionUtils.getField(provider,
"CVS_HISTORY_TABLE_PROVIDER_SECTION");
IDialogSettings settings = new DialogSettings(sectionName);
assertEquals(6, widths.length);
String key = (String) ReflectionUtils.getField(provider,
"COL_REVISIONID_NAME");
settings.put(key, widths[0]);
key = (String) ReflectionUtils.getField(provider, "COL_BRANCHES_NAME");
settings.put(key, widths[1]);
key = (String) ReflectionUtils.getField(provider, "COL_TAGS_NAME");
settings.put(key, widths[2]);
key = (String) ReflectionUtils.getField(provider, "COL_DATE_NAME");
settings.put(key, widths[3]);
key = (String) ReflectionUtils.getField(provider, "COL_AUTHOR_NAME");
settings.put(key, widths[4]);
key = (String) ReflectionUtils.getField(provider, "COL_COMMENT_NAME");
settings.put(key, widths[5]);
return settings;
}
public static Test suite() {
return suite(CVSHisoryTableProviderTest.class);
}
}