/*******************************************************************************
* Copyright (c) 2012 Original authors and others.
* 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:
* Original authors and others - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.columnChooser;
import static org.eclipse.nebula.widgets.nattable.columnChooser.ColumnChooserUtils.getColumnLabel;
import static org.eclipse.nebula.widgets.nattable.test.fixture.layer.ColumnHeaderLayerFixture.getDataLayer;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.List;
import org.eclipse.nebula.widgets.nattable.columnChooser.ColumnChooserUtils;
import org.eclipse.nebula.widgets.nattable.columnChooser.ColumnEntry;
import org.eclipse.nebula.widgets.nattable.dataset.fixture.data.RowDataListFixture;
import org.eclipse.nebula.widgets.nattable.grid.layer.ColumnHeaderLayer;
import org.eclipse.nebula.widgets.nattable.grid.layer.DefaultGridLayer;
import org.eclipse.nebula.widgets.nattable.hideshow.ColumnHideShowLayer;
import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
import org.eclipse.nebula.widgets.nattable.test.fixture.ColumnEntriesFixture;
import org.eclipse.nebula.widgets.nattable.test.fixture.layer.ColumnHeaderLayerFixture;
import org.junit.Before;
import org.junit.Test;
public class ColumnChooserUtilsTest {
private List<ColumnEntry> entriesFixture;
@Before
public void setup() {
this.entriesFixture = ColumnEntriesFixture.getEntriesWithOddIndexes();
}
@Test
public void find() throws Exception {
ColumnEntry found = ColumnChooserUtils.find(this.entriesFixture, 5);
assertEquals("Index5", found.getLabel());
}
@Test
public void getPositionsFromEntries() throws Exception {
List<Integer> positions = ColumnChooserUtils
.getColumnEntryPositions(this.entriesFixture);
assertEquals("[2, 6, 3, 4, 5]", positions.toString());
}
@Test
public void getIndexesFromEntries() throws Exception {
List<Integer> indexes = ColumnChooserUtils
.getColumnEntryIndexes(this.entriesFixture);
assertEquals("[1, 3, 5, 7, 9]", indexes.toString());
}
@Test
public void listContainsEntry() throws Exception {
assertTrue(ColumnChooserUtils.containsIndex(this.entriesFixture, 9));
assertFalse(ColumnChooserUtils.containsIndex(this.entriesFixture, -9));
}
@Test
public void shouldProvideRenamedLabelsIfTheColumnHasBeenRenamed()
throws Exception {
ColumnHeaderLayerFixture columnHeaderLayer = new ColumnHeaderLayerFixture();
assertEquals("[1, 0]",
getColumnLabel(columnHeaderLayer, getDataLayer(), 1));
columnHeaderLayer.renameColumnPosition(1, "renamed");
assertEquals("renamed*",
getColumnLabel(columnHeaderLayer, getDataLayer(), 1));
}
@Test
public void getVisibleColumnEntries() throws Exception {
DefaultGridLayer gridLayer = new DefaultGridLayer(
RowDataListFixture.getList(),
RowDataListFixture.getPropertyNames(),
RowDataListFixture.getPropertyToLabelMap());
ColumnHideShowLayer columnHideShowLayer = gridLayer.getBodyLayer()
.getColumnHideShowLayer();
ColumnHeaderLayer columnHeaderLayer = gridLayer.getColumnHeaderLayer();
DataLayer columnHeaderDataLayer = (DataLayer) gridLayer
.getColumnHeaderDataLayer();
List<ColumnEntry> visibleEntries = ColumnChooserUtils
.getVisibleColumnsEntries(columnHideShowLayer,
columnHeaderLayer, columnHeaderDataLayer);
// All columns shown
assertEquals(RowDataListFixture.getPropertyNames().length,
visibleEntries.size());
// Hide a few columns
gridLayer.getBodyLayer().getColumnHideShowLayer()
.hideColumnPositions(Arrays.asList(1, 2, 3));
visibleEntries = ColumnChooserUtils.getVisibleColumnsEntries(
columnHideShowLayer, columnHeaderLayer, columnHeaderDataLayer);
assertEquals(RowDataListFixture.getPropertyNames().length - 3,
visibleEntries.size());
// Check the hidden entries
List<ColumnEntry> hiddenEntries = ColumnChooserUtils
.getHiddenColumnEntries(columnHideShowLayer, columnHeaderLayer,
columnHeaderDataLayer);
assertEquals(3, hiddenEntries.size());
}
}