/*
* 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.widget.grid.renderers.grids.SelectionsTransformer;
import org.uberfire.ext.wires.core.grids.client.widget.grid.renderers.grids.impl.DefaultSelectionsTransformer;
import org.uberfire.ext.wires.core.grids.client.widget.grid.renderers.grids.impl.FloatingSelectionsTransformer;
import org.uberfire.ext.wires.core.grids.client.widget.grid.renderers.grids.impl.SelectedRange;
import static org.junit.Assert.*;
public class GridCellSelectionsTransformationTest extends BaseGridTest {
@Test
public void testTransformationVerticalRightExtent() {
final GridData data = 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);
data.appendColumn(gc1);
data.appendColumn(gc2);
data.appendColumn(gc3);
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(0,
data.getSelectedCells().size());
final SelectionsTransformer transformer = new DefaultSelectionsTransformer(data,
data.getColumns());
final List<SelectedRange> selectedRanges1 = transformer.transformToSelectedRanges();
assertEquals(0,
selectedRanges1.size());
// - - x
// x x x
// - - x
data.selectCell(1,
0);
data.selectCell(1,
1);
data.selectCell(1,
2);
data.selectCell(0,
2);
data.selectCell(2,
2);
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(5,
data.getSelectedCells().size());
final List<SelectedRange> selectedRanges2 = transformer.transformToSelectedRanges();
assertEquals(2,
selectedRanges2.size());
}
@Test
public void testTransformationPlusSign() {
final GridData data = 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);
data.appendColumn(gc1);
data.appendColumn(gc2);
data.appendColumn(gc3);
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(0,
data.getSelectedCells().size());
final SelectionsTransformer transformer = new DefaultSelectionsTransformer(data,
data.getColumns());
final List<SelectedRange> selectedRanges1 = transformer.transformToSelectedRanges();
assertEquals(0,
selectedRanges1.size());
// - x -
// x x x
// - x -
data.selectCell(1,
0);
data.selectCell(1,
1);
data.selectCell(1,
2);
data.selectCell(0,
1);
data.selectCell(2,
1);
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(5,
data.getSelectedCells().size());
final List<SelectedRange> selectedRanges2 = transformer.transformToSelectedRanges();
assertEquals(3,
selectedRanges2.size());
}
@Test
public void testTransformationColumnSubsetVerticalRightExtent() {
final GridData data = 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);
data.appendColumn(gc1);
data.appendColumn(gc2);
data.appendColumn(gc3);
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(0,
data.getSelectedCells().size());
final SelectionsTransformer transformer1 = new DefaultSelectionsTransformer(data,
data.getColumns());
final List<SelectedRange> selectedRanges1 = transformer1.transformToSelectedRanges();
assertEquals(0,
selectedRanges1.size());
// - - x
// x x x
// - - x
data.selectCell(1,
0);
data.selectCell(1,
1);
data.selectCell(1,
2);
data.selectCell(0,
2);
data.selectCell(2,
2);
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(5,
data.getSelectedCells().size());
final List<GridColumn<?>> columns = new ArrayList<GridColumn<?>>() {{
add(gc1);
add(gc2);
}};
final SelectionsTransformer transformer2 = new FloatingSelectionsTransformer(data,
columns);
final List<SelectedRange> selectedRanges2 = transformer2.transformToSelectedRanges();
assertEquals(1,
selectedRanges2.size());
}
@Test
public void testTransformationColumnSubsetPlusSign() {
final GridData data = 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);
data.appendColumn(gc1);
data.appendColumn(gc2);
data.appendColumn(gc3);
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(0,
data.getSelectedCells().size());
final SelectionsTransformer transformer1 = new DefaultSelectionsTransformer(data,
data.getColumns());
final List<SelectedRange> selectedRanges1 = transformer1.transformToSelectedRanges();
assertEquals(0,
selectedRanges1.size());
// - x -
// x x x
// - x -
data.selectCell(1,
0);
data.selectCell(1,
1);
data.selectCell(1,
2);
data.selectCell(0,
1);
data.selectCell(2,
1);
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(5,
data.getSelectedCells().size());
final List<GridColumn<?>> columns = new ArrayList<GridColumn<?>>() {{
add(gc1);
add(gc3);
}};
final SelectionsTransformer transformer2 = new FloatingSelectionsTransformer(data,
columns);
final List<SelectedRange> selectedRanges2 = transformer2.transformToSelectedRanges();
assertEquals(1,
selectedRanges2.size());
}
@Test
public void testTransformationSplitRows() {
final GridData data = 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);
data.appendColumn(gc1);
data.appendColumn(gc2);
data.appendColumn(gc3);
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(0,
data.getSelectedCells().size());
final SelectionsTransformer transformer = new DefaultSelectionsTransformer(data,
data.getColumns());
final List<SelectedRange> selectedRanges1 = transformer.transformToSelectedRanges();
assertEquals(0,
selectedRanges1.size());
// x x x
// - - -
// x x x
data.selectCell(0,
0);
data.selectCell(0,
1);
data.selectCell(0,
2);
data.selectCell(2,
0);
data.selectCell(2,
1);
data.selectCell(2,
2);
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(6,
data.getSelectedCells().size());
final List<SelectedRange> selectedRanges2 = transformer.transformToSelectedRanges();
assertEquals(2,
selectedRanges2.size());
}
@Test
public void testTransformationNeighbours() {
final GridData data = 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);
data.appendColumn(gc1);
data.appendColumn(gc2);
data.appendColumn(gc3);
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(0,
data.getSelectedCells().size());
final SelectionsTransformer transformer = new DefaultSelectionsTransformer(data,
data.getColumns());
final List<SelectedRange> selectedRanges1 = transformer.transformToSelectedRanges();
assertEquals(0,
selectedRanges1.size());
// x - x
// x - x
// - x -
data.selectCell(0,
0);
data.selectCell(0,
2);
data.selectCell(1,
0);
data.selectCell(1,
2);
data.selectCell(2,
1);
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(5,
data.getSelectedCells().size());
final List<SelectedRange> selectedRanges2 = transformer.transformToSelectedRanges();
assertEquals(3,
selectedRanges2.size());
}
@Test
public void testTransformationDiagonalCross() {
final GridData data = 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);
data.appendColumn(gc1);
data.appendColumn(gc2);
data.appendColumn(gc3);
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
data.appendRow(new BaseGridRow());
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(0,
data.getSelectedCells().size());
final SelectionsTransformer transformer = new DefaultSelectionsTransformer(data,
data.getColumns());
final List<SelectedRange> selectedRanges1 = transformer.transformToSelectedRanges();
assertEquals(0,
selectedRanges1.size());
// x - x
// - x -
// x - x
data.selectCell(0,
0);
data.selectCell(0,
2);
data.selectCell(1,
1);
data.selectCell(2,
0);
data.selectCell(2,
2);
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(0,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(0,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(0,
2)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
0)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(1,
1)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(1,
2)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(2,
0)));
assertFalse(data.getSelectedCells().contains(new GridData.SelectedCell(2,
1)));
assertTrue(data.getSelectedCells().contains(new GridData.SelectedCell(2,
2)));
assertEquals(5,
data.getSelectedCells().size());
final List<SelectedRange> selectedRanges2 = transformer.transformToSelectedRanges();
assertEquals(5,
selectedRanges2.size());
}
}