/******************************************************************************* * 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.group; import static org.junit.Assert.assertEquals; import java.util.List; import org.eclipse.nebula.widgets.nattable.group.ColumnGroupModel; import org.eclipse.nebula.widgets.nattable.group.ColumnGroupModel.ColumnGroup; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class ColumnGroupModelTest { public static final String TEST_GROUP_NAME_3 = "testGroupName3"; public static final String TEST_GROUP_NAME_2 = "testGroupName2"; public static final String TEST_GROUP_NAME_1 = "testGroupName"; private ColumnGroupModel model; @Before public void setup() { this.model = new ColumnGroupModel(); this.model.addColumnsIndexesToGroup(TEST_GROUP_NAME_1, 0, 1); this.model.addColumnsIndexesToGroup(TEST_GROUP_NAME_2, 7, 8); this.model.addColumnsIndexesToGroup(TEST_GROUP_NAME_3, 12, 13); } @Test public void getColumnGroupForIndex() throws Exception { Assert.assertEquals(TEST_GROUP_NAME_1, this.model.getColumnGroupByIndex(1) .getName()); Assert.assertEquals(TEST_GROUP_NAME_2, this.model.getColumnGroupByIndex(7) .getName()); Assert.assertEquals(TEST_GROUP_NAME_3, this.model.getColumnGroupByIndex(13) .getName()); Assert.assertNull(this.model.getColumnGroupByIndex(15)); Assert.assertTrue(this.model.isPartOfAGroup(1)); Assert.assertTrue(this.model.isPartOfAGroup(7)); Assert.assertTrue(this.model.isPartOfAGroup(13)); Assert.assertFalse(this.model.isPartOfAGroup(130)); } @Test public void getColumnIndexesInGroup() throws Exception { List<Integer> columnIndexesInGroup = this.model.getColumnGroupByIndex(0) .getMembers(); Assert.assertNotNull(columnIndexesInGroup); Assert.assertEquals(2, columnIndexesInGroup.size()); Assert.assertEquals(0, columnIndexesInGroup.get(0).intValue()); Assert.assertEquals(1, columnIndexesInGroup.get(1).intValue()); } @Test public void noColumnGroup() throws Exception { ColumnGroup columnGroup = this.model.getColumnGroupByIndex(100); Assert.assertNull(columnGroup); } @Test public void isPartOfAGroup() throws Exception { Assert.assertTrue(this.model.isPartOfAGroup(7)); Assert.assertFalse(this.model.isPartOfAGroup(70)); } @Test public void collapse() throws Exception { collapse(0); Assert.assertTrue(isCollapsed(0)); Assert.assertTrue(isCollapsed(1)); Assert.assertFalse(isCollapsed(7)); } @Test public void expand() throws Exception { collapse(7); Assert.assertTrue(isCollapsed(7)); Assert.assertTrue(isCollapsed(8)); expand(7); Assert.assertFalse(isCollapsed(7)); Assert.assertFalse(isCollapsed(8)); } @Test public void getCollapsedColumnCount() throws Exception { Assert.assertEquals(0, this.model.getCollapsedColumnCount()); collapse(0); Assert.assertEquals(1, this.model.getCollapsedColumnCount()); collapse(8); Assert.assertEquals(2, this.model.getCollapsedColumnCount()); expand(8); Assert.assertEquals(1, this.model.getCollapsedColumnCount()); } @Test public void removeColumnFromGroup() { ColumnGroup columnGroup = this.model.getColumnGroupByIndex(12); List<Integer> columnIndexesInGroup = columnGroup.getMembers(); Assert.assertTrue(columnIndexesInGroup.contains(12)); Assert.assertTrue(columnGroup.removeColumn(12)); columnGroup = this.model.getColumnGroupByIndex(13); columnIndexesInGroup = columnGroup.getMembers(); Assert.assertEquals(1, columnIndexesInGroup.size()); Assert.assertTrue(columnGroup.removeColumn(13)); Assert.assertFalse(this.model.isPartOfAGroup(12)); } @Test public void shouldInsertAColumnIndexToAGroup() { List<Integer> columnIndexesInGroup = this.model.getColumnGroupByIndex(0) .getMembers(); Assert.assertTrue(2 == columnIndexesInGroup.size()); Assert.assertTrue(columnIndexesInGroup.contains(new Integer(0))); Assert.assertTrue(columnIndexesInGroup.contains(new Integer(1))); Assert.assertTrue(this.model.insertColumnIndexes(this.model .getColumnGroupByIndex(0).getName(), 4)); columnIndexesInGroup = this.model.getColumnGroupByIndex(0).getMembers(); Assert.assertEquals(3, columnIndexesInGroup.size()); Assert.assertTrue(columnIndexesInGroup.contains(new Integer(0))); Assert.assertTrue(columnIndexesInGroup.contains(new Integer(1))); Assert.assertTrue(columnIndexesInGroup.contains(new Integer(4))); Assert.assertTrue(this.model.isPartOfAGroup(4)); } @Test public void shouldNotInsertIntoAnUnbreakableGroup() throws Exception { this.model.getColumnGroupByIndex(0).setUnbreakable(true); Assert.assertFalse(this.model.insertColumnIndexes(this.model .getColumnGroupByIndex(0).getName(), 4)); List<Integer> columnIndexesInGroup = this.model.getColumnGroupByIndex(0) .getMembers(); Assert.assertEquals(2, columnIndexesInGroup.size()); Assert.assertTrue(columnIndexesInGroup.contains(new Integer(0))); Assert.assertTrue(columnIndexesInGroup.contains(new Integer(1))); } @Test public void shouldFailWhenTryingToInsertSameColumnTwice() { this.model.insertColumnIndexes(this.model.getColumnGroupByIndex(0).getName(), 4); Assert.assertFalse(this.model.insertColumnIndexes(this.model .getColumnGroupByIndex(0).getName(), 4, 1, 0)); } @Test public void shouldFindColumnGroupPositionForColumnIndex() { Assert.assertEquals(1, this.model.getColumnGroupPositionFromIndex(8)); Assert.assertEquals(-1, this.model.getColumnGroupPositionFromIndex(11)); } @Test public void toggleColumnGroup() throws Exception { Assert.assertFalse(isCollapsed(0)); toggleColumnGroupExpandCollapse(0); Assert.assertTrue(isCollapsed(0)); toggleColumnGroupExpandCollapse(0); Assert.assertFalse(isCollapsed(0)); } @Test public void isCollapsedByName() throws Exception { Assert.assertFalse(this.model.getColumnGroupByName(TEST_GROUP_NAME_1) .isCollapsed()); collapse(0); Assert.assertTrue(this.model.getColumnGroupByName(TEST_GROUP_NAME_1) .isCollapsed()); Assert.assertFalse(this.model.getColumnGroupByName(TEST_GROUP_NAME_2) .isCollapsed()); } @Test public void sizeOfGroup() throws Exception { assertEquals(2, this.model.getColumnGroupByIndex(0).getSize()); } @Test public void markAsUnbreakable() throws Exception { Assert.assertFalse(this.model.isPartOfAnUnbreakableGroup(0)); this.model.getColumnGroupByIndex(0).setUnbreakable(true); Assert.assertTrue(this.model.isPartOfAnUnbreakableGroup(0)); } @Test public void shouldNotRemoveFromAnUnbreakableGroup() throws Exception { ColumnGroup columnGroup = this.model.getColumnGroupByIndex(7); columnGroup.setUnbreakable(true); Assert.assertFalse(columnGroup.removeColumn(7)); } @Test public void getAllIndexesInGroups() throws Exception { List<Integer> indexes = this.model.getAllIndexesInGroups(); Assert.assertEquals(6, indexes.size()); Assert.assertTrue(indexes.contains(0)); Assert.assertTrue(indexes.contains(1)); Assert.assertTrue(indexes.contains(7)); Assert.assertTrue(indexes.contains(8)); Assert.assertTrue(indexes.contains(12)); Assert.assertTrue(indexes.contains(13)); } @Test public void sizeOfStaticColumns() throws Exception { this.model.addColumnsIndexesToGroup("TEST_GROUP_NAME_4", 14, 15, 16, 17); this.model.insertStaticColumnIndexes("TEST_GROUP_NAME_4", 15, 16); Assert.assertEquals(2, sizeOfStaticColumns(14)); Assert.assertEquals(2, sizeOfStaticColumns(15)); Assert.assertEquals(2, sizeOfStaticColumns(16)); Assert.assertEquals(2, sizeOfStaticColumns(17)); } @Test public void getStaticColumnIndexesInGroup() throws Exception { this.model.addColumnsIndexesToGroup("TEST_GROUP_NAME_4", 14, 15, 16, 17); this.model.insertStaticColumnIndexes("TEST_GROUP_NAME_4", 15, 16); Assert.assertEquals(2, this.model.getColumnGroupByIndex(14) .getStaticColumnIndexes().size()); Assert.assertEquals(15, this.model.getColumnGroupByIndex(14) .getStaticColumnIndexes().get(0).intValue()); Assert.assertEquals(16, this.model.getColumnGroupByIndex(14) .getStaticColumnIndexes().get(1).intValue()); } private void toggleColumnGroupExpandCollapse(int columnIndex) { this.model.getColumnGroupByIndex(columnIndex).toggleCollapsed(); } private boolean isCollapsed(int columnIndex) { return this.model.getColumnGroupByIndex(columnIndex).isCollapsed(); } private void collapse(int columnIndex) { this.model.getColumnGroupByIndex(columnIndex).setCollapsed(true); } private void expand(int columnIndex) { this.model.getColumnGroupByIndex(columnIndex).setCollapsed(false); } private int sizeOfStaticColumns(int columnIndex) { return this.model.getColumnGroupByIndex(columnIndex) .getStaticColumnIndexes().size(); } }