/* * Copyright 2016 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 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; public class GridRowsMergedTest extends BaseGridTest { @Test public void testRemoveRow() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = (rowIndex > 0 && rowIndex < 4 ? "b" : "a"); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } assertGridIndexes(data, new boolean[]{false, true, true, true, false}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, "a")}, {Expected.build(true, 3, "b")}, {Expected.build(true, 0, "b")}, {Expected.build(true, 0, "b")}, {Expected.build(false, 1, "a")} }); data.deleteRow(2); assertGridIndexes(data, new boolean[]{false, true, true, false}, new boolean[]{false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, "a")}, {Expected.build(true, 2, "b")}, {Expected.build(true, 0, "b")}, {Expected.build(false, 1, "a")} }); } @Test public void testAppendRow() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = (rowIndex < 2 ? "a" : "b"); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } assertGridIndexes(data, new boolean[]{true, true, true, true}, new boolean[]{false, false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(true, 2, "b")}, {Expected.build(true, 0, "b")} }); data.appendRow(new BaseGridRow()); assertGridIndexes(data, new boolean[]{true, true, true, true, false}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(true, 2, "b")}, {Expected.build(true, 0, "b")}, {Expected.build(false, 1, null)} }); } @Test public void testInsertRowAtZeroIndex() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = (rowIndex < 2 ? "a" : "b"); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } assertGridIndexes(data, new boolean[]{true, true, true, true}, new boolean[]{false, false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(true, 2, "b")}, {Expected.build(true, 0, "b")} }); data.insertRow(0, new BaseGridRow()); assertGridIndexes(data, new boolean[]{false, true, true, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, null)}, {Expected.build(true, 2, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(true, 2, "b")}, {Expected.build(true, 0, "b")} }); } @Test public void testInsertRowAtStartEndBlock() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = (rowIndex < 2 ? "a" : "b"); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } assertGridIndexes(data, new boolean[]{true, true, true, true}, new boolean[]{false, false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(true, 2, "b")}, {Expected.build(true, 0, "b")} }); data.insertRow(2, new BaseGridRow()); assertGridIndexes(data, new boolean[]{true, true, false, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(false, 1, null)}, {Expected.build(true, 2, "b")}, {Expected.build(true, 0, "b")} }); } @Test public void testInsertRowAtMidBlock() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>("a")); } } assertGridIndexes(data, new boolean[]{true, true, true, true}, new boolean[]{false, false, false, false}, new Expected[][]{ {Expected.build(true, 4, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(true, 0, "a")} }); data.insertRow(2, new BaseGridRow()); assertGridIndexes(data, new boolean[]{true, true, false, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(false, 1, null)}, {Expected.build(true, 2, "a")}, {Expected.build(true, 0, "a")} }); } @Test public void testDeleteRowAtZeroIndex() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = (rowIndex < 2 ? "a" : "b"); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } assertGridIndexes(data, new boolean[]{true, true, true, true}, new boolean[]{false, false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(true, 2, "b")}, {Expected.build(true, 0, "b")} }); data.deleteRow(0); assertGridIndexes(data, new boolean[]{false, true, true}, new boolean[]{false, false, false}, new Expected[][]{ {Expected.build(false, 1, "a")}, {Expected.build(true, 2, "b")}, {Expected.build(true, 0, "b")} }); } @Test public void testDeleteRowAtStartEndBlock() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = (rowIndex < 2 ? "a" : "b"); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } assertGridIndexes(data, new boolean[]{true, true, true, true}, new boolean[]{false, false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(true, 2, "b")}, {Expected.build(true, 0, "b")} }); data.deleteRow(2); assertGridIndexes(data, new boolean[]{true, true, false}, new boolean[]{false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(false, 1, "b")} }); } @Test public void testDeleteRowAtMidBlock() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); data.appendRow(new BaseGridRow()); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>("a")); } } assertGridIndexes(data, new boolean[]{true, true, true, true}, new boolean[]{false, false, false, false}, new Expected[][]{ {Expected.build(true, 4, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(true, 0, "a")} }); data.deleteRow(2); assertGridIndexes(data, new boolean[]{true, true, true}, new boolean[]{false, false, false}, new Expected[][]{ {Expected.build(true, 3, "a")}, {Expected.build(true, 0, "a")}, {Expected.build(true, 0, "a")} }); } @Test public void testMergedBlock_MoveRowUp_Index4to3() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendColumn(gc2); final GridRow row0 = new BaseGridRow(); final GridRow row1 = new BaseGridRow(); final GridRow row2 = new BaseGridRow(); final GridRow row3 = new BaseGridRow(); final GridRow row4 = new BaseGridRow(); data.appendRow(row0); data.appendRow(row1); data.appendRow(row2); data.appendRow(row3); data.appendRow(row4); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = columnIndex == 0 ? (rowIndex == 4 ? "b" : "a") : Integer.toString(rowIndex); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } // row0 = a, 0 // row1 = a, 1 // row2 = a, 2 // row3 = a, 3 // row4 = b, 4 assertGridIndexes(data, new boolean[]{true, true, true, true, false}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 4, "a"), Expected.build(false, 1, "0")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "1")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "2")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "3")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "4")} }); //Move row data.moveRowTo(3, row4); // row0 = a, 0 // row1 = a, 1 // row2 = a, 2 // row3 = b, 4 // row4 = a, 3 assertGridIndexes(data, new boolean[]{true, true, true, false, false}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 3, "a"), Expected.build(false, 1, "0")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "1")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "2")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "4")}, {Expected.build(false, 1, "a"), Expected.build(false, 1, "3")} }); } @Test public void testMergedBlock_MoveRowUp_Index3to2() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendColumn(gc2); final GridRow row0 = new BaseGridRow(); final GridRow row1 = new BaseGridRow(); final GridRow row2 = new BaseGridRow(); final GridRow row3 = new BaseGridRow(); final GridRow row4 = new BaseGridRow(); data.appendRow(row0); data.appendRow(row1); data.appendRow(row2); data.appendRow(row3); data.appendRow(row4); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = columnIndex == 0 ? (rowIndex == 3 ? "b" : "a") : Integer.toString(rowIndex); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } // row0 = a, 0 // row1 = a, 1 // row2 = a, 2 // row3 = b, 3 // row4 = a, 4 assertGridIndexes(data, new boolean[]{true, true, true, false, false}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 3, "a"), Expected.build(false, 1, "0")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "1")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "2")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "3")}, {Expected.build(false, 1, "a"), Expected.build(false, 1, "4")} }); //Move row data.moveRowTo(2, row3); // row0 = a, 0 // row1 = a, 1 // row2 = b, 3 // row3 = a, 2 // row4 = a, 4 assertGridIndexes(data, new boolean[]{true, true, false, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a"), Expected.build(false, 1, "0")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "1")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "3")}, {Expected.build(true, 2, "a"), Expected.build(false, 1, "2")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "4")} }); } @Test public void testMergedBlock_MoveRowUp_Index2to1() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendColumn(gc2); final GridRow row0 = new BaseGridRow(); final GridRow row1 = new BaseGridRow(); final GridRow row2 = new BaseGridRow(); final GridRow row3 = new BaseGridRow(); final GridRow row4 = new BaseGridRow(); data.appendRow(row0); data.appendRow(row1); data.appendRow(row2); data.appendRow(row3); data.appendRow(row4); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = columnIndex == 0 ? (rowIndex == 2 ? "b" : "a") : Integer.toString(rowIndex); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } // row0 = a, 0 // row1 = a, 1 // row2 = b, 2 // row3 = a, 3 // row4 = a, 4 assertGridIndexes(data, new boolean[]{true, true, false, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a"), Expected.build(false, 1, "0")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "1")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "2")}, {Expected.build(true, 2, "a"), Expected.build(false, 1, "3")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "4")} }); //Move row data.moveRowTo(1, row2); // row0 = a, 0 // row1 = b, 2 // row2 = a, 1 // row3 = a, 3 // row4 = a, 4 assertGridIndexes(data, new boolean[]{false, false, true, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, "a"), Expected.build(false, 1, "0")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "2")}, {Expected.build(true, 3, "a"), Expected.build(false, 1, "1")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "3")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "4")} }); } @Test public void testMergedBlock_MoveRowUp_Index1to0() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendColumn(gc2); final GridRow row0 = new BaseGridRow(); final GridRow row1 = new BaseGridRow(); final GridRow row2 = new BaseGridRow(); final GridRow row3 = new BaseGridRow(); final GridRow row4 = new BaseGridRow(); data.appendRow(row0); data.appendRow(row1); data.appendRow(row2); data.appendRow(row3); data.appendRow(row4); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = columnIndex == 0 ? (rowIndex == 1 ? "b" : "a") : Integer.toString(rowIndex); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } // row0 = a, 0 // row1 = b, 1 // row2 = a, 2 // row3 = a, 3 // row4 = a, 4 assertGridIndexes(data, new boolean[]{false, false, true, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, "a"), Expected.build(false, 1, "0")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "1")}, {Expected.build(true, 3, "a"), Expected.build(false, 1, "2")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "3")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "4")} }); //Move row data.moveRowTo(0, row1); // row0 = b, 1 // row1 = a, 0 // row2 = a, 2 // row3 = a, 3 // row4 = a, 4 assertGridIndexes(data, new boolean[]{false, true, true, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, "b"), Expected.build(false, 1, "1")}, {Expected.build(true, 4, "a"), Expected.build(false, 1, "0")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "2")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "3")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "4")} }); } @Test public void testMergedBlock_MoveRowUp_Index2to1_NewMergedBlock() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendColumn(gc2); final GridRow row0 = new BaseGridRow(); final GridRow row1 = new BaseGridRow(); final GridRow row2 = new BaseGridRow(); final GridRow row3 = new BaseGridRow(); final GridRow row4 = new BaseGridRow(); data.appendRow(row0); data.appendRow(row1); data.appendRow(row2); data.appendRow(row3); data.appendRow(row4); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = columnIndex == 0 ? (rowIndex == 1 ? "b" : "a") : (rowIndex < 2 ? "a" : "b"); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } // row0 = a, a // row1 = b, a // row2 = a, b // row3 = a, b // row4 = a, b assertGridIndexes(data, new boolean[]{true, true, true, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, "a"), Expected.build(true, 2, "a")}, {Expected.build(false, 1, "b"), Expected.build(true, 0, "a")}, {Expected.build(true, 3, "a"), Expected.build(true, 3, "b")}, {Expected.build(true, 0, "a"), Expected.build(true, 0, "b")}, {Expected.build(true, 0, "a"), Expected.build(true, 0, "b")} }); //Move row data.moveRowTo(1, row2); // row0 = a, a // row1 = a, b // row2 = b, a // row3 = a, b // row4 = a, b assertGridIndexes(data, new boolean[]{true, true, false, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a"), Expected.build(false, 1, "a")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "b")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "a")}, {Expected.build(true, 2, "a"), Expected.build(true, 2, "b")}, {Expected.build(true, 0, "a"), Expected.build(true, 0, "b")} }); } @Test public void testMergedBlock_MoveRowUp_Index3to2_NewMergedBlock() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendColumn(gc2); final GridRow row0 = new BaseGridRow(); final GridRow row1 = new BaseGridRow(); final GridRow row2 = new BaseGridRow(); final GridRow row3 = new BaseGridRow(); final GridRow row4 = new BaseGridRow(); data.appendRow(row0); data.appendRow(row1); data.appendRow(row2); data.appendRow(row3); data.appendRow(row4); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = columnIndex == 0 ? (rowIndex == 1 ? "b" : "a") : (rowIndex == 2 ? "a" : "b"); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } // row0 = a, b // row1 = b, b // row2 = a, a // row3 = a, b // row4 = a, b assertGridIndexes(data, new boolean[]{true, true, true, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, "a"), Expected.build(true, 2, "b")}, {Expected.build(false, 1, "b"), Expected.build(true, 0, "b")}, {Expected.build(true, 3, "a"), Expected.build(false, 1, "a")}, {Expected.build(true, 0, "a"), Expected.build(true, 2, "b")}, {Expected.build(true, 0, "a"), Expected.build(true, 0, "b")} }); //Move row data.moveRowTo(2, row3); // row0 = a, b // row1 = b, b // row2 = a, b // row3 = a, a // row4 = a, b assertGridIndexes(data, new boolean[]{true, true, true, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, "a"), Expected.build(true, 3, "b")}, {Expected.build(false, 1, "b"), Expected.build(true, 0, "b")}, {Expected.build(true, 3, "a"), Expected.build(true, 0, "b")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "a")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "b")} }); } @Test public void testMergedBlock_MoveRowDown_Index0to1() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendColumn(gc2); final GridRow row0 = new BaseGridRow(); final GridRow row1 = new BaseGridRow(); final GridRow row2 = new BaseGridRow(); final GridRow row3 = new BaseGridRow(); final GridRow row4 = new BaseGridRow(); data.appendRow(row0); data.appendRow(row1); data.appendRow(row2); data.appendRow(row3); data.appendRow(row4); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = columnIndex == 0 ? (rowIndex == 4 ? "b" : "a") : Integer.toString(rowIndex); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } // row0 = a, 0 // row1 = a, 1 // row2 = a, 2 // row3 = a, 3 // row4 = b, 4 assertGridIndexes(data, new boolean[]{true, true, true, true, false}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 4, "a"), Expected.build(false, 1, "0")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "1")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "2")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "3")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "4")} }); //Move row data.moveRowTo(1, row0); // row0 = a, 1 // row1 = a, 0 // row2 = a, 2 // row3 = a, 3 // row4 = b, 4 assertGridIndexes(data, new boolean[]{true, true, true, true, false}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 4, "a"), Expected.build(false, 1, "1")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "0")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "2")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "3")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "4")} }); } @Test public void testMergedBlock_MoveRowDown_Index1to2() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendColumn(gc2); final GridRow row0 = new BaseGridRow(); final GridRow row1 = new BaseGridRow(); final GridRow row2 = new BaseGridRow(); final GridRow row3 = new BaseGridRow(); final GridRow row4 = new BaseGridRow(); data.appendRow(row0); data.appendRow(row1); data.appendRow(row2); data.appendRow(row3); data.appendRow(row4); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = columnIndex == 0 ? (rowIndex == 3 ? "b" : "a") : Integer.toString(rowIndex); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } // row0 = a, 0 // row1 = a, 1 // row2 = a, 2 // row3 = b, 3 // row4 = a, 4 assertGridIndexes(data, new boolean[]{true, true, true, false, false}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 3, "a"), Expected.build(false, 1, "0")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "1")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "2")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "3")}, {Expected.build(false, 1, "a"), Expected.build(false, 1, "4")} }); //Move row data.moveRowTo(2, row1); // row0 = a, 0 // row1 = a, 2 // row2 = a, 1 // row3 = b, 3 // row4 = a, 4 assertGridIndexes(data, new boolean[]{true, true, true, false, false}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 3, "a"), Expected.build(false, 1, "0")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "2")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "1")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "3")}, {Expected.build(false, 1, "a"), Expected.build(false, 1, "4")} }); } @Test public void testMergedBlock_MoveRowDown_Index2to3() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendColumn(gc2); final GridRow row0 = new BaseGridRow(); final GridRow row1 = new BaseGridRow(); final GridRow row2 = new BaseGridRow(); final GridRow row3 = new BaseGridRow(); final GridRow row4 = new BaseGridRow(); data.appendRow(row0); data.appendRow(row1); data.appendRow(row2); data.appendRow(row3); data.appendRow(row4); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = columnIndex == 0 ? (rowIndex == 2 ? "b" : "a") : Integer.toString(rowIndex); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } // row0 = a, 0 // row1 = a, 1 // row2 = b, 2 // row3 = a, 3 // row4 = a, 4 assertGridIndexes(data, new boolean[]{true, true, false, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a"), Expected.build(false, 1, "0")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "1")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "2")}, {Expected.build(true, 2, "a"), Expected.build(false, 1, "3")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "4")} }); //Move row data.moveRowTo(3, row2); // row0 = a, 0 // row1 = a, 1 // row2 = a, 3 // row3 = b, 2 // row4 = a, 4 assertGridIndexes(data, new boolean[]{true, true, true, false, false}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 3, "a"), Expected.build(false, 1, "0")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "1")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "3")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "2")}, {Expected.build(false, 1, "a"), Expected.build(false, 1, "4")} }); } @Test public void testMergedBlock_MoveRowDown_Index3to4() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendColumn(gc2); final GridRow row0 = new BaseGridRow(); final GridRow row1 = new BaseGridRow(); final GridRow row2 = new BaseGridRow(); final GridRow row3 = new BaseGridRow(); final GridRow row4 = new BaseGridRow(); data.appendRow(row0); data.appendRow(row1); data.appendRow(row2); data.appendRow(row3); data.appendRow(row4); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = columnIndex == 0 ? (rowIndex == 1 ? "b" : "a") : Integer.toString(rowIndex); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } // row0 = a, 0 // row1 = b, 1 // row2 = a, 2 // row3 = a, 3 // row4 = a, 4 assertGridIndexes(data, new boolean[]{false, false, true, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, "a"), Expected.build(false, 1, "0")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "1")}, {Expected.build(true, 3, "a"), Expected.build(false, 1, "2")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "3")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "4")} }); //Move row data.moveRowTo(4, row3); // row0 = a, 0 // row1 = b, 1 // row2 = a, 2 // row3 = a, 4 // row4 = a, 3 assertGridIndexes(data, new boolean[]{false, false, true, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, "a"), Expected.build(false, 1, "0")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "1")}, {Expected.build(true, 3, "a"), Expected.build(false, 1, "2")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "4")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "3")} }); } @Test public void testMergedBlock_MoveRowDown_Index1to2_NewMergedBlock() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendColumn(gc2); final GridRow row0 = new BaseGridRow(); final GridRow row1 = new BaseGridRow(); final GridRow row2 = new BaseGridRow(); final GridRow row3 = new BaseGridRow(); final GridRow row4 = new BaseGridRow(); data.appendRow(row0); data.appendRow(row1); data.appendRow(row2); data.appendRow(row3); data.appendRow(row4); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = columnIndex == 0 ? (rowIndex == 1 ? "b" : "a") : (rowIndex < 2 ? "a" : "b"); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } // row0 = a, a // row1 = b, a // row2 = a, b // row3 = a, b // row4 = a, b assertGridIndexes(data, new boolean[]{true, true, true, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, "a"), Expected.build(true, 2, "a")}, {Expected.build(false, 1, "b"), Expected.build(true, 0, "a")}, {Expected.build(true, 3, "a"), Expected.build(true, 3, "b")}, {Expected.build(true, 0, "a"), Expected.build(true, 0, "b")}, {Expected.build(true, 0, "a"), Expected.build(true, 0, "b")} }); //Move row data.moveRowTo(2, row1); // row0 = a, a // row1 = a, b // row2 = b, a // row3 = a, b // row4 = a, b assertGridIndexes(data, new boolean[]{true, true, false, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(true, 2, "a"), Expected.build(false, 1, "a")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "b")}, {Expected.build(false, 1, "b"), Expected.build(false, 1, "a")}, {Expected.build(true, 2, "a"), Expected.build(true, 2, "b")}, {Expected.build(true, 0, "a"), Expected.build(true, 0, "b")} }); } @Test public void testMergedBlock_MoveRowDown_Index2to3_NewMergedBlock() { final GridData data = new BaseGridData(); final GridColumn<String> gc1 = new MockMergableGridColumn<String>("col1", 100); final GridColumn<String> gc2 = new MockMergableGridColumn<String>("col1", 100); data.appendColumn(gc1); data.appendColumn(gc2); final GridRow row0 = new BaseGridRow(); final GridRow row1 = new BaseGridRow(); final GridRow row2 = new BaseGridRow(); final GridRow row3 = new BaseGridRow(); final GridRow row4 = new BaseGridRow(); data.appendRow(row0); data.appendRow(row1); data.appendRow(row2); data.appendRow(row3); data.appendRow(row4); for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final String value = columnIndex == 0 ? (rowIndex == 1 ? "b" : "a") : (rowIndex == 2 ? "a" : "b"); data.setCell(rowIndex, columnIndex, new BaseGridCellValue<String>(value)); } } // row0 = a, b // row1 = b, b // row2 = a, a // row3 = a, b // row4 = a, b assertGridIndexes(data, new boolean[]{true, true, true, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, "a"), Expected.build(true, 2, "b")}, {Expected.build(false, 1, "b"), Expected.build(true, 0, "b")}, {Expected.build(true, 3, "a"), Expected.build(false, 1, "a")}, {Expected.build(true, 0, "a"), Expected.build(true, 2, "b")}, {Expected.build(true, 0, "a"), Expected.build(true, 0, "b")} }); //Move row data.moveRowTo(3, row2); // row0 = a, b // row1 = b, b // row2 = a, b // row3 = a, a // row4 = a, b assertGridIndexes(data, new boolean[]{true, true, true, true, true}, new boolean[]{false, false, false, false, false}, new Expected[][]{ {Expected.build(false, 1, "a"), Expected.build(true, 3, "b")}, {Expected.build(false, 1, "b"), Expected.build(true, 0, "b")}, {Expected.build(true, 3, "a"), Expected.build(true, 0, "b")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "a")}, {Expected.build(true, 0, "a"), Expected.build(false, 1, "b")} }); } }