/*******************************************************************************
* 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.layer;
import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
import org.eclipse.nebula.widgets.nattable.test.fixture.layer.DataLayerFixture;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class DataLayerTest {
private DataLayer dataLayer;
@Before
public void setup() {
this.dataLayer = new DataLayerFixture();
}
// Horizontal features
// Columns
@Test
public void testColumnCount() {
Assert.assertEquals(5, this.dataLayer.getColumnCount());
}
@Test
public void testColumnIndexByPosition() {
Assert.assertEquals(-1, this.dataLayer.getColumnIndexByPosition(-1));
Assert.assertEquals(0, this.dataLayer.getColumnIndexByPosition(0));
Assert.assertEquals(1, this.dataLayer.getColumnIndexByPosition(1));
Assert.assertEquals(2, this.dataLayer.getColumnIndexByPosition(2));
Assert.assertEquals(3, this.dataLayer.getColumnIndexByPosition(3));
Assert.assertEquals(4, this.dataLayer.getColumnIndexByPosition(4));
Assert.assertEquals(-1, this.dataLayer.getColumnIndexByPosition(5));
}
@Test
public void testColumnPositionByIndex() {
Assert.assertEquals(-1, this.dataLayer.getColumnPositionByIndex(-1));
Assert.assertEquals(0, this.dataLayer.getColumnPositionByIndex(0));
Assert.assertEquals(1, this.dataLayer.getColumnPositionByIndex(1));
Assert.assertEquals(2, this.dataLayer.getColumnPositionByIndex(2));
Assert.assertEquals(3, this.dataLayer.getColumnPositionByIndex(3));
Assert.assertEquals(4, this.dataLayer.getColumnPositionByIndex(4));
Assert.assertEquals(-1, this.dataLayer.getColumnPositionByIndex(5));
}
// Width
@Test
public void testWidth() {
Assert.assertEquals(465, this.dataLayer.getWidth());
}
@Test
public void testWidthAfterModify() {
testWidth();
this.dataLayer.setColumnWidthByPosition(0, 120);
this.dataLayer.setColumnWidthByPosition(2, 40);
Assert.assertEquals(440, this.dataLayer.getWidth());
}
@Test
public void testColumnWidthByPosition() {
Assert.assertEquals(150, this.dataLayer.getColumnWidthByPosition(0));
Assert.assertEquals(100, this.dataLayer.getColumnWidthByPosition(1));
Assert.assertEquals(35, this.dataLayer.getColumnWidthByPosition(2));
Assert.assertEquals(100, this.dataLayer.getColumnWidthByPosition(3));
Assert.assertEquals(80, this.dataLayer.getColumnWidthByPosition(4));
}
@Test
public void testColumnWidthByPositionAfterModify() {
testColumnWidthByPosition();
this.dataLayer.setColumnWidthByPosition(0, 120);
this.dataLayer.setColumnWidthByPosition(2, 40);
Assert.assertEquals(120, this.dataLayer.getColumnWidthByPosition(0));
Assert.assertEquals(100, this.dataLayer.getColumnWidthByPosition(1));
Assert.assertEquals(40, this.dataLayer.getColumnWidthByPosition(2));
Assert.assertEquals(100, this.dataLayer.getColumnWidthByPosition(3));
Assert.assertEquals(80, this.dataLayer.getColumnWidthByPosition(4));
}
@Test
public void testPreferredColumnWidth() {
testColumnWidthByPosition();
this.dataLayer.setDefaultColumnWidth(200);
Assert.assertEquals(150, this.dataLayer.getColumnWidthByPosition(0));
Assert.assertEquals(200, this.dataLayer.getColumnWidthByPosition(1));
Assert.assertEquals(35, this.dataLayer.getColumnWidthByPosition(2));
Assert.assertEquals(200, this.dataLayer.getColumnWidthByPosition(3));
Assert.assertEquals(80, this.dataLayer.getColumnWidthByPosition(4));
Assert.assertEquals(665, this.dataLayer.getWidth());
}
@Test
public void testPreferredColumnWidthByPosition() {
testColumnWidthByPosition();
this.dataLayer.setDefaultColumnWidthByPosition(1, 75);
this.dataLayer.setDefaultColumnWidthByPosition(3, 45);
Assert.assertEquals(150, this.dataLayer.getColumnWidthByPosition(0));
Assert.assertEquals(75, this.dataLayer.getColumnWidthByPosition(1));
Assert.assertEquals(35, this.dataLayer.getColumnWidthByPosition(2));
Assert.assertEquals(45, this.dataLayer.getColumnWidthByPosition(3));
Assert.assertEquals(80, this.dataLayer.getColumnWidthByPosition(4));
this.dataLayer.setColumnWidthByPosition(1, 30);
Assert.assertEquals(150, this.dataLayer.getColumnWidthByPosition(0));
Assert.assertEquals(30, this.dataLayer.getColumnWidthByPosition(1));
Assert.assertEquals(35, this.dataLayer.getColumnWidthByPosition(2));
Assert.assertEquals(45, this.dataLayer.getColumnWidthByPosition(3));
Assert.assertEquals(80, this.dataLayer.getColumnWidthByPosition(4));
}
// Column resize
@Test
public void testColumnsResizableByDefault() {
testColumnWidthByPosition();
this.dataLayer.setColumnWidthByPosition(0, 35);
Assert.assertEquals(35, this.dataLayer.getColumnWidthByPosition(0));
this.dataLayer.setColumnsResizableByDefault(false);
this.dataLayer.setColumnWidthByPosition(0, 85);
Assert.assertEquals(35, this.dataLayer.getColumnWidthByPosition(0));
this.dataLayer.setColumnsResizableByDefault(true);
this.dataLayer.setColumnWidthByPosition(0, 65);
Assert.assertEquals(65, this.dataLayer.getColumnWidthByPosition(0));
}
@Test
public void testColumnPositionResizable() {
testColumnWidthByPosition();
Assert.assertTrue(this.dataLayer.isColumnPositionResizable(0));
this.dataLayer.setColumnWidthByPosition(0, 35);
Assert.assertEquals(35, this.dataLayer.getColumnWidthByPosition(0));
this.dataLayer.setColumnPositionResizable(0, false);
Assert.assertFalse(this.dataLayer.isColumnPositionResizable(0));
this.dataLayer.setColumnWidthByPosition(0, 85);
Assert.assertEquals(35, this.dataLayer.getColumnWidthByPosition(0));
this.dataLayer.setColumnsResizableByDefault(false);
this.dataLayer.setColumnPositionResizable(0, true);
Assert.assertTrue(this.dataLayer.isColumnPositionResizable(0));
this.dataLayer.setColumnWidthByPosition(0, 65);
Assert.assertEquals(65, this.dataLayer.getColumnWidthByPosition(0));
}
// X
@Test
public void testColumnPositionByX() {
Assert.assertEquals(-1, this.dataLayer.getColumnPositionByX(-1));
Assert.assertEquals(0, this.dataLayer.getColumnPositionByX(0));
Assert.assertEquals(0, this.dataLayer.getColumnPositionByX(149));
Assert.assertEquals(1, this.dataLayer.getColumnPositionByX(150));
Assert.assertEquals(1, this.dataLayer.getColumnPositionByX(170));
Assert.assertEquals(2, this.dataLayer.getColumnPositionByX(250));
Assert.assertEquals(2, this.dataLayer.getColumnPositionByX(284));
Assert.assertEquals(3, this.dataLayer.getColumnPositionByX(285));
Assert.assertEquals(3, this.dataLayer.getColumnPositionByX(384));
Assert.assertEquals(4, this.dataLayer.getColumnPositionByX(385));
Assert.assertEquals(4, this.dataLayer.getColumnPositionByX(464));
}
@Test
public void testColumnPositionByXAfterModify() {
testColumnPositionByX();
this.dataLayer.setColumnWidthByPosition(1, 50);
Assert.assertEquals(-1, this.dataLayer.getColumnPositionByX(-1));
Assert.assertEquals(0, this.dataLayer.getColumnPositionByX(0));
Assert.assertEquals(0, this.dataLayer.getColumnPositionByX(149));
Assert.assertEquals(1, this.dataLayer.getColumnPositionByX(150));
Assert.assertEquals(1, this.dataLayer.getColumnPositionByX(170));
Assert.assertEquals(2, this.dataLayer.getColumnPositionByX(200));
Assert.assertEquals(2, this.dataLayer.getColumnPositionByX(234));
Assert.assertEquals(3, this.dataLayer.getColumnPositionByX(235));
Assert.assertEquals(3, this.dataLayer.getColumnPositionByX(334));
Assert.assertEquals(4, this.dataLayer.getColumnPositionByX(335));
Assert.assertEquals(4, this.dataLayer.getColumnPositionByX(414));
}
@Test
public void testStartXOfColumnPosition() {
Assert.assertEquals(0, this.dataLayer.getStartXOfColumnPosition(0));
Assert.assertEquals(150, this.dataLayer.getStartXOfColumnPosition(1));
Assert.assertEquals(250, this.dataLayer.getStartXOfColumnPosition(2));
Assert.assertEquals(285, this.dataLayer.getStartXOfColumnPosition(3));
Assert.assertEquals(385, this.dataLayer.getStartXOfColumnPosition(4));
}
@Test
public void testStartXOfColumnPositionAfterModify() {
testStartXOfColumnPosition();
this.dataLayer.setColumnWidthByPosition(1, 50);
Assert.assertEquals(0, this.dataLayer.getStartXOfColumnPosition(0));
Assert.assertEquals(150, this.dataLayer.getStartXOfColumnPosition(1));
Assert.assertEquals(200, this.dataLayer.getStartXOfColumnPosition(2));
Assert.assertEquals(235, this.dataLayer.getStartXOfColumnPosition(3));
Assert.assertEquals(335, this.dataLayer.getStartXOfColumnPosition(4));
}
// Vertical features
// Rows
@Test
public void testRowCount() {
Assert.assertEquals(7, this.dataLayer.getRowCount());
}
@Test
public void testRowIndexByPosition() {
Assert.assertEquals(-1, this.dataLayer.getRowIndexByPosition(-1));
Assert.assertEquals(0, this.dataLayer.getRowIndexByPosition(0));
Assert.assertEquals(1, this.dataLayer.getRowIndexByPosition(1));
Assert.assertEquals(2, this.dataLayer.getRowIndexByPosition(2));
Assert.assertEquals(3, this.dataLayer.getRowIndexByPosition(3));
Assert.assertEquals(4, this.dataLayer.getRowIndexByPosition(4));
Assert.assertEquals(5, this.dataLayer.getRowIndexByPosition(5));
Assert.assertEquals(6, this.dataLayer.getRowIndexByPosition(6));
Assert.assertEquals(-1, this.dataLayer.getRowIndexByPosition(7));
}
@Test
public void testRowPositionByIndex() {
Assert.assertEquals(-1, this.dataLayer.getRowPositionByIndex(-1));
Assert.assertEquals(0, this.dataLayer.getRowPositionByIndex(0));
Assert.assertEquals(1, this.dataLayer.getRowPositionByIndex(1));
Assert.assertEquals(2, this.dataLayer.getRowPositionByIndex(2));
Assert.assertEquals(3, this.dataLayer.getRowPositionByIndex(3));
Assert.assertEquals(4, this.dataLayer.getRowPositionByIndex(4));
Assert.assertEquals(5, this.dataLayer.getRowPositionByIndex(5));
Assert.assertEquals(6, this.dataLayer.getRowPositionByIndex(6));
Assert.assertEquals(-1, this.dataLayer.getRowPositionByIndex(7));
}
// Height
@Test
public void testHeight() {
Assert.assertEquals(365, this.dataLayer.getHeight());
}
@Test
public void testHeightAfterModify() {
testHeight();
this.dataLayer.setRowHeightByPosition(0, 20);
this.dataLayer.setRowHeightByPosition(2, 30);
Assert.assertEquals(350, this.dataLayer.getHeight());
}
@Test
public void testRowHeightByPosition() {
Assert.assertEquals(40, this.dataLayer.getRowHeightByPosition(0));
Assert.assertEquals(70, this.dataLayer.getRowHeightByPosition(1));
Assert.assertEquals(25, this.dataLayer.getRowHeightByPosition(2));
Assert.assertEquals(40, this.dataLayer.getRowHeightByPosition(3));
Assert.assertEquals(50, this.dataLayer.getRowHeightByPosition(4));
Assert.assertEquals(40, this.dataLayer.getRowHeightByPosition(5));
Assert.assertEquals(100, this.dataLayer.getRowHeightByPosition(6));
Assert.assertEquals(365, this.dataLayer.getHeight());
}
@Test
public void testRowHeightByPositionAfterModify() {
testRowHeightByPosition();
this.dataLayer.setRowHeightByPosition(0, 20);
this.dataLayer.setRowHeightByPosition(3, 30);
Assert.assertEquals(20, this.dataLayer.getRowHeightByPosition(0));
Assert.assertEquals(70, this.dataLayer.getRowHeightByPosition(1));
Assert.assertEquals(25, this.dataLayer.getRowHeightByPosition(2));
Assert.assertEquals(30, this.dataLayer.getRowHeightByPosition(3));
Assert.assertEquals(50, this.dataLayer.getRowHeightByPosition(4));
Assert.assertEquals(40, this.dataLayer.getRowHeightByPosition(5));
Assert.assertEquals(100, this.dataLayer.getRowHeightByPosition(6));
Assert.assertEquals(335, this.dataLayer.getHeight());
}
@Test
public void testPreferredRowHeight() {
testRowHeightByPosition();
this.dataLayer.setDefaultRowHeight(50);
Assert.assertEquals(50, this.dataLayer.getRowHeightByPosition(0));
Assert.assertEquals(70, this.dataLayer.getRowHeightByPosition(1));
Assert.assertEquals(25, this.dataLayer.getRowHeightByPosition(2));
Assert.assertEquals(50, this.dataLayer.getRowHeightByPosition(3));
Assert.assertEquals(50, this.dataLayer.getRowHeightByPosition(4));
Assert.assertEquals(50, this.dataLayer.getRowHeightByPosition(5));
Assert.assertEquals(100, this.dataLayer.getRowHeightByPosition(6));
Assert.assertEquals(395, this.dataLayer.getHeight());
}
@Test
public void testPreferredRowHeightByPosition() {
testRowHeightByPosition();
this.dataLayer.setDefaultRowHeightByPosition(1, 75);
this.dataLayer.setDefaultRowHeightByPosition(3, 45);
Assert.assertEquals(40, this.dataLayer.getRowHeightByPosition(0));
Assert.assertEquals(70, this.dataLayer.getRowHeightByPosition(1));
Assert.assertEquals(25, this.dataLayer.getRowHeightByPosition(2));
Assert.assertEquals(45, this.dataLayer.getRowHeightByPosition(3));
Assert.assertEquals(50, this.dataLayer.getRowHeightByPosition(4));
Assert.assertEquals(40, this.dataLayer.getRowHeightByPosition(5));
Assert.assertEquals(100, this.dataLayer.getRowHeightByPosition(6));
this.dataLayer.setRowHeightByPosition(1, 30);
Assert.assertEquals(40, this.dataLayer.getRowHeightByPosition(0));
Assert.assertEquals(30, this.dataLayer.getRowHeightByPosition(1));
Assert.assertEquals(25, this.dataLayer.getRowHeightByPosition(2));
Assert.assertEquals(45, this.dataLayer.getRowHeightByPosition(3));
Assert.assertEquals(50, this.dataLayer.getRowHeightByPosition(4));
Assert.assertEquals(40, this.dataLayer.getRowHeightByPosition(5));
Assert.assertEquals(100, this.dataLayer.getRowHeightByPosition(6));
}
// Row resize
@Test
public void testRowsResizableByDefault() {
testRowHeightByPosition();
this.dataLayer.setRowHeightByPosition(0, 35);
Assert.assertEquals(35, this.dataLayer.getRowHeightByPosition(0));
this.dataLayer.setRowsResizableByDefault(false);
this.dataLayer.setRowHeightByPosition(0, 85);
Assert.assertEquals(35, this.dataLayer.getRowHeightByPosition(0));
this.dataLayer.setRowsResizableByDefault(true);
this.dataLayer.setRowHeightByPosition(0, 65);
Assert.assertEquals(65, this.dataLayer.getRowHeightByPosition(0));
}
@Test
public void testRowPositionResizable() {
testRowHeightByPosition();
Assert.assertTrue(this.dataLayer.isRowPositionResizable(0));
this.dataLayer.setRowHeightByPosition(0, 35);
Assert.assertEquals(35, this.dataLayer.getRowHeightByPosition(0));
this.dataLayer.setRowPositionResizable(0, false);
Assert.assertFalse(this.dataLayer.isRowPositionResizable(0));
this.dataLayer.setRowHeightByPosition(0, 85);
Assert.assertEquals(35, this.dataLayer.getRowHeightByPosition(0));
this.dataLayer.setRowsResizableByDefault(false);
this.dataLayer.setRowPositionResizable(0, true);
Assert.assertTrue(this.dataLayer.isRowPositionResizable(0));
this.dataLayer.setRowHeightByPosition(0, 65);
Assert.assertEquals(65, this.dataLayer.getRowHeightByPosition(0));
}
// Y
@Test
public void testRowPositionByY() {
Assert.assertEquals(-1, this.dataLayer.getRowPositionByY(-1));
Assert.assertEquals(0, this.dataLayer.getRowPositionByY(0));
Assert.assertEquals(0, this.dataLayer.getRowPositionByY(39));
Assert.assertEquals(1, this.dataLayer.getRowPositionByY(40));
Assert.assertEquals(1, this.dataLayer.getRowPositionByY(109));
Assert.assertEquals(2, this.dataLayer.getRowPositionByY(110));
Assert.assertEquals(2, this.dataLayer.getRowPositionByY(134));
Assert.assertEquals(3, this.dataLayer.getRowPositionByY(135));
Assert.assertEquals(3, this.dataLayer.getRowPositionByY(174));
Assert.assertEquals(4, this.dataLayer.getRowPositionByY(175));
Assert.assertEquals(4, this.dataLayer.getRowPositionByY(224));
Assert.assertEquals(5, this.dataLayer.getRowPositionByY(225));
Assert.assertEquals(5, this.dataLayer.getRowPositionByY(264));
Assert.assertEquals(6, this.dataLayer.getRowPositionByY(265));
Assert.assertEquals(6, this.dataLayer.getRowPositionByY(364));
}
@Test
public void testRowPositionByYAfterModify() {
testRowPositionByY();
this.dataLayer.setRowHeightByPosition(2, 100);
Assert.assertEquals(-1, this.dataLayer.getRowPositionByY(-1));
Assert.assertEquals(0, this.dataLayer.getRowPositionByY(0));
Assert.assertEquals(0, this.dataLayer.getRowPositionByY(39));
Assert.assertEquals(1, this.dataLayer.getRowPositionByY(40));
Assert.assertEquals(1, this.dataLayer.getRowPositionByY(109));
Assert.assertEquals(2, this.dataLayer.getRowPositionByY(110));
Assert.assertEquals(2, this.dataLayer.getRowPositionByY(134));
Assert.assertEquals(2, this.dataLayer.getRowPositionByY(135));
Assert.assertEquals(2, this.dataLayer.getRowPositionByY(209));
Assert.assertEquals(3, this.dataLayer.getRowPositionByY(210));
Assert.assertEquals(3, this.dataLayer.getRowPositionByY(249));
Assert.assertEquals(4, this.dataLayer.getRowPositionByY(250));
Assert.assertEquals(4, this.dataLayer.getRowPositionByY(299));
Assert.assertEquals(5, this.dataLayer.getRowPositionByY(300));
Assert.assertEquals(5, this.dataLayer.getRowPositionByY(339));
Assert.assertEquals(6, this.dataLayer.getRowPositionByY(340));
Assert.assertEquals(6, this.dataLayer.getRowPositionByY(439));
}
@Test
public void testStartYOfRowPosition() {
Assert.assertEquals(0, this.dataLayer.getStartYOfRowPosition(0));
Assert.assertEquals(40, this.dataLayer.getStartYOfRowPosition(1));
Assert.assertEquals(110, this.dataLayer.getStartYOfRowPosition(2));
Assert.assertEquals(135, this.dataLayer.getStartYOfRowPosition(3));
Assert.assertEquals(175, this.dataLayer.getStartYOfRowPosition(4));
Assert.assertEquals(225, this.dataLayer.getStartYOfRowPosition(5));
Assert.assertEquals(265, this.dataLayer.getStartYOfRowPosition(6));
}
@Test
public void testStartYOfRowPositionAfterModify() {
testStartYOfRowPosition();
this.dataLayer.setRowHeightByPosition(2, 100);
Assert.assertEquals(0, this.dataLayer.getStartYOfRowPosition(0));
Assert.assertEquals(40, this.dataLayer.getStartYOfRowPosition(1));
Assert.assertEquals(110, this.dataLayer.getStartYOfRowPosition(2));
Assert.assertEquals(210, this.dataLayer.getStartYOfRowPosition(3));
Assert.assertEquals(250, this.dataLayer.getStartYOfRowPosition(4));
Assert.assertEquals(300, this.dataLayer.getStartYOfRowPosition(5));
Assert.assertEquals(340, this.dataLayer.getStartYOfRowPosition(6));
}
}