/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.uberfire.ext.wires.core.grids.client.model.impl;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.uberfire.ext.wires.core.grids.client.model.GridColumn;
import org.uberfire.ext.wires.core.grids.client.model.GridData;
import org.uberfire.ext.wires.core.grids.client.model.GridRow;
import static org.junit.Assert.*;
public class GridColumnIndexingTest extends BaseGridTest {
@Test
public void testAddInitialColumns() {
final GridData grid = new BaseGridData();
final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1",
100);
final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col2",
100);
grid.appendColumn(gc1);
grid.appendColumn(gc2);
final List<GridColumn<?>> columns = grid.getColumns();
assertEquals(2,
columns.size());
assertEquals(0,
gc1.getIndex());
assertEquals(1,
gc2.getIndex());
assertEquals(columns.get(0),
gc1);
assertEquals(columns.get(1),
gc2);
}
@Test
public void testAddColumn() {
final GridData grid = new BaseGridData();
final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1",
100);
final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col2",
100);
final GridColumn<String> gc3 = new MockMergableGridColumn<String>("col3",
100);
grid.appendColumn(gc1);
grid.appendColumn(gc2);
grid.insertColumn(1,
gc3);
final List<GridColumn<?>> columns = grid.getColumns();
assertEquals(3,
columns.size());
assertEquals(0,
gc1.getIndex());
assertEquals(1,
gc2.getIndex());
assertEquals(2,
gc3.getIndex());
assertEquals(columns.get(0),
gc1);
assertEquals(columns.get(1),
gc3);
assertEquals(columns.get(2),
gc2);
}
@Test
public void testRemoveColumn() {
final GridData grid = new BaseGridData();
final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1",
100);
final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col2",
100);
final GridColumn<String> gc3 = new MockMergableGridColumn<String>("col3",
100);
grid.appendColumn(gc1);
grid.appendColumn(gc2);
grid.appendColumn(gc3);
grid.deleteColumn(gc2);
final List<GridColumn<?>> columns = grid.getColumns();
assertEquals(2,
columns.size());
assertEquals(0,
gc1.getIndex());
assertEquals(1,
gc3.getIndex());
assertEquals(columns.get(0),
gc1);
assertEquals(columns.get(1),
gc3);
}
@Test
public void testMoveColumnToLeft() {
final GridData grid = new BaseGridData();
final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1",
100);
final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col2",
100);
final GridColumn<String> gc3 = new MockMergableGridColumn<String>("col3",
100);
final GridColumn<String> gc4 = new MockMergableGridColumn<String>("col4",
100);
grid.appendColumn(gc1);
grid.appendColumn(gc2);
grid.appendColumn(gc3);
grid.appendColumn(gc4);
grid.moveColumnTo(1,
gc4);
final List<GridColumn<?>> columns = grid.getColumns();
assertEquals(4,
columns.size());
assertEquals(0,
gc1.getIndex());
assertEquals(1,
gc2.getIndex());
assertEquals(2,
gc3.getIndex());
assertEquals(3,
gc4.getIndex());
assertEquals(columns.get(0),
gc1);
assertEquals(columns.get(1),
gc4);
assertEquals(columns.get(2),
gc2);
assertEquals(columns.get(3),
gc3);
}
@Test
public void testMoveColumnsToLeft_RightMostTwoColumns() {
final GridData grid = new BaseGridData();
final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1",
100);
final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col2",
100);
final GridColumn<String> gc3 = new MockMergableGridColumn<String>("col3",
100);
final GridColumn<String> gc4 = new MockMergableGridColumn<String>("col4",
100);
grid.appendColumn(gc1);
grid.appendColumn(gc2);
grid.appendColumn(gc3);
grid.appendColumn(gc4);
grid.moveColumnsTo(1,
new ArrayList<GridColumn<?>>() {{
add(gc3);
add(gc4);
}});
final List<GridColumn<?>> columns = grid.getColumns();
assertEquals(4,
columns.size());
assertEquals(0,
gc1.getIndex());
assertEquals(1,
gc2.getIndex());
assertEquals(2,
gc3.getIndex());
assertEquals(3,
gc4.getIndex());
assertEquals(columns.get(0),
gc1);
assertEquals(columns.get(1),
gc3);
assertEquals(columns.get(2),
gc4);
assertEquals(columns.get(3),
gc2);
}
@Test
public void testMoveColumnsToLeft_MiddleTwoColumns() {
final GridData grid = new BaseGridData();
final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1",
100);
final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col2",
100);
final GridColumn<String> gc3 = new MockMergableGridColumn<String>("col3",
100);
final GridColumn<String> gc4 = new MockMergableGridColumn<String>("col4",
100);
grid.appendColumn(gc1);
grid.appendColumn(gc2);
grid.appendColumn(gc3);
grid.appendColumn(gc4);
grid.moveColumnsTo(0,
new ArrayList<GridColumn<?>>() {{
add(gc2);
add(gc3);
}});
final List<GridColumn<?>> columns = grid.getColumns();
assertEquals(4,
columns.size());
assertEquals(0,
gc1.getIndex());
assertEquals(1,
gc2.getIndex());
assertEquals(2,
gc3.getIndex());
assertEquals(3,
gc4.getIndex());
assertEquals(columns.get(0),
gc2);
assertEquals(columns.get(1),
gc3);
assertEquals(columns.get(2),
gc1);
assertEquals(columns.get(3),
gc4);
}
@Test
public void testMoveColumnToRight_LeftMostColumn() {
final GridData grid = new BaseGridData();
final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1",
100);
final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col2",
100);
final GridColumn<String> gc3 = new MockMergableGridColumn<String>("col3",
100);
final GridColumn<String> gc4 = new MockMergableGridColumn<String>("col4",
100);
grid.appendColumn(gc1);
grid.appendColumn(gc2);
grid.appendColumn(gc3);
grid.appendColumn(gc4);
grid.moveColumnTo(3,
gc1);
final List<GridColumn<?>> columns = grid.getColumns();
assertEquals(4,
columns.size());
assertEquals(0,
gc1.getIndex());
assertEquals(1,
gc2.getIndex());
assertEquals(2,
gc3.getIndex());
assertEquals(3,
gc4.getIndex());
assertEquals(columns.get(0),
gc2);
assertEquals(columns.get(1),
gc3);
assertEquals(columns.get(2),
gc4);
assertEquals(columns.get(3),
gc1);
}
@Test
public void testMoveColumnsToRight_LeftMostTwoColumns() {
final GridData grid = new BaseGridData();
final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1",
100);
final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col2",
100);
final GridColumn<String> gc3 = new MockMergableGridColumn<String>("col3",
100);
final GridColumn<String> gc4 = new MockMergableGridColumn<String>("col4",
100);
grid.appendColumn(gc1);
grid.appendColumn(gc2);
grid.appendColumn(gc3);
grid.appendColumn(gc4);
grid.moveColumnsTo(2,
new ArrayList<GridColumn<?>>() {{
add(gc1);
add(gc2);
}});
final List<GridColumn<?>> columns = grid.getColumns();
assertEquals(4,
columns.size());
assertEquals(0,
gc1.getIndex());
assertEquals(1,
gc2.getIndex());
assertEquals(2,
gc3.getIndex());
assertEquals(3,
gc4.getIndex());
assertEquals(columns.get(0),
gc3);
assertEquals(columns.get(1),
gc1);
assertEquals(columns.get(2),
gc2);
assertEquals(columns.get(3),
gc4);
}
@Test
public void testMoveColumnsToRight_LeftMostTwoColumns_ToRightExtent() {
final GridData grid = new BaseGridData();
final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1",
100);
final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col2",
100);
final GridColumn<String> gc3 = new MockMergableGridColumn<String>("col3",
100);
final GridColumn<String> gc4 = new MockMergableGridColumn<String>("col4",
100);
grid.appendColumn(gc1);
grid.appendColumn(gc2);
grid.appendColumn(gc3);
grid.appendColumn(gc4);
grid.moveColumnsTo(3,
new ArrayList<GridColumn<?>>() {{
add(gc1);
add(gc2);
}});
final List<GridColumn<?>> columns = grid.getColumns();
assertEquals(4,
columns.size());
assertEquals(0,
gc1.getIndex());
assertEquals(1,
gc2.getIndex());
assertEquals(2,
gc3.getIndex());
assertEquals(3,
gc4.getIndex());
assertEquals(columns.get(0),
gc3);
assertEquals(columns.get(1),
gc4);
assertEquals(columns.get(2),
gc1);
assertEquals(columns.get(3),
gc2);
}
@Test
public void testMoveColumnsToRight_LeftMostTwoColumns_MidBlock() {
final GridData grid = new BaseGridData();
final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1",
100);
final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col2",
100);
final GridColumn<String> gc3 = new MockMergableGridColumn<String>("col3",
100);
final GridColumn<String> gc4 = new MockMergableGridColumn<String>("col4",
100);
final GridColumn<String> gc5 = new MockMergableGridColumn<String>("col5",
100);
final GridColumn<String> gc6 = new MockMergableGridColumn<String>("col6",
100);
final GridColumn<String> gc7 = new MockMergableGridColumn<String>("col7",
100);
final GridColumn<String> gc8 = new MockMergableGridColumn<String>("col8",
100);
grid.appendColumn(gc1);
grid.appendColumn(gc2);
grid.appendColumn(gc3);
grid.appendColumn(gc4);
grid.appendColumn(gc5);
grid.appendColumn(gc6);
grid.appendColumn(gc7);
grid.appendColumn(gc8);
grid.moveColumnsTo(5,
new ArrayList<GridColumn<?>>() {{
add(gc1);
add(gc2);
}});
final List<GridColumn<?>> columns = grid.getColumns();
assertEquals(8,
columns.size());
assertEquals(0,
gc1.getIndex());
assertEquals(1,
gc2.getIndex());
assertEquals(2,
gc3.getIndex());
assertEquals(3,
gc4.getIndex());
assertEquals(4,
gc5.getIndex());
assertEquals(5,
gc6.getIndex());
assertEquals(6,
gc7.getIndex());
assertEquals(7,
gc8.getIndex());
assertEquals(columns.get(0),
gc3);
assertEquals(columns.get(1),
gc4);
assertEquals(columns.get(2),
gc5);
assertEquals(columns.get(3),
gc6);
assertEquals(columns.get(4),
gc1);
assertEquals(columns.get(5),
gc2);
assertEquals(columns.get(6),
gc7);
assertEquals(columns.get(7),
gc8);
}
@Test
public void testRemoveRow() {
final GridData grid = new BaseGridData();
final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1",
100);
final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col2",
100);
final GridColumn<String> gc3 = new MockMergableGridColumn<String>("col3",
100);
grid.appendColumn(gc1);
grid.appendColumn(gc2);
grid.appendColumn(gc3);
final GridRow gr1 = new BaseGridRow();
final GridRow gr2 = new BaseGridRow();
final GridRow gr3 = new BaseGridRow();
grid.appendRow(gr1);
grid.appendRow(gr2);
grid.appendRow(gr3);
grid.deleteRow(1);
assertEquals(2,
grid.getRowCount());
assertEquals(gr1,
grid.getRow(0));
assertEquals(gr3,
grid.getRow(1));
}
}