blob: aa467a8526a05568f79e1f74500464f63555e589 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012, 2020 Original authors and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Original authors and others - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.group.action;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.eclipse.nebula.widgets.nattable.test.fixture.group.ColumnGroupModelFixture;
import org.eclipse.nebula.widgets.nattable.test.fixture.layer.DataLayerFixture;
import org.junit.Before;
import org.junit.Test;
public class ColumnHeaderReoderDragModeTest {
private ColumnGroupModelFixture model;
private ColumnHeaderReorderDragMode dragMode;
private DataLayerFixture testLayer;
@Before
public void setup() {
this.model = new ColumnGroupModelFixture();
this.model.addColumnsIndexesToGroup("G4", 18, 19, 20);
this.model.getColumnGroupByIndex(0).setUnbreakable(true);
this.model.getColumnGroupByIndex(10).setUnbreakable(true);
this.testLayer = new DataLayerFixture(20, 10, 100, 20);
this.dragMode = new ColumnHeaderReorderDragMode(this.model);
}
/*
* Test Setup
*
* 0 1 2 3 4 5 6 7 ... 10 11 12 ... 17 18 19 20
* ------------------------------
* --------------------------------------------------------- |<- G1 ->| |<--
* G2 -->| |<--- G3 --->| |<--- G4 --->| |UnBreak.| |UnBreakable |
*/
@Test
public void basicReordering() throws Exception {
assertTrue(this.dragMode.isValidTargetColumnPosition(this.testLayer, 6, 9));
}
@Test
public void shouldNotAllowMovingIntoAnUnbreakableGroup() throws Exception {
assertFalse(this.dragMode.isValidTargetColumnPosition(this.testLayer, 2, 10));
}
@Test
public void shouldNotAllowMovingOutOfAnUnbreakableGroup() throws Exception {
assertFalse(this.dragMode.isValidTargetColumnPosition(this.testLayer, 0, 7));
}
// Reordering among column group
@Test
public void shouldAllowReorderingWithinAnUnbreakableGroup()
throws Exception {
assertTrue(this.dragMode.isValidTargetColumnPosition(this.testLayer, 10, 11));
}
@Test
public void shouldAllowReorderingWithinARegularGroup() throws Exception {
assertTrue(this.dragMode.isValidTargetColumnPosition(this.testLayer, 18, 19));
}
// Moving between groups
@Test
public void shouldAllowMovingBetweenRegularGroups() throws Exception {
assertTrue(this.dragMode.isValidTargetColumnPosition(this.testLayer, 3, 19));
}
@Test
public void shouldNotAllowMovingBetweenTwoUnbreakableGroups()
throws Exception {
assertFalse(this.dragMode.isValidTargetColumnPosition(this.testLayer, 0, 11));
}
@Test
public void shouldNotAllowMovingFromUnbreakableGroupToRegularGroup()
throws Exception {
assertFalse(this.dragMode.isValidTargetColumnPosition(this.testLayer, 0, 3));
}
@Test
public void shouldNotAllowMovingFromRegularGroupToUnbreakableGroup()
throws Exception {
assertFalse(this.dragMode.isValidTargetColumnPosition(this.testLayer, 3, 11));
}
}