/* * 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 com.ait.lienzo.client.core.shape.Group; import org.uberfire.client.callbacks.Callback; import org.uberfire.ext.wires.core.grids.client.model.GridCell; import org.uberfire.ext.wires.core.grids.client.model.GridCellValue; import org.uberfire.ext.wires.core.grids.client.model.GridData; import org.uberfire.ext.wires.core.grids.client.model.GridRow; import org.uberfire.ext.wires.core.grids.client.widget.context.GridBodyCellRenderContext; import org.uberfire.ext.wires.core.grids.client.widget.grid.renderers.columns.impl.BaseGridColumnRenderer; import static org.junit.Assert.*; public abstract class BaseGridTest { public void assertGridIndexes(final GridData data, final boolean[] expectedRowMergeStates, final boolean[] expectedRowCollapseStates, final Expected[][] expectedCellStates) { if (data.getRowCount() != expectedRowMergeStates.length) { fail("Size of parameter 'expectedRowMergeStates' differs to expected row count."); } if (data.getRowCount() != expectedRowCollapseStates.length) { fail("Size of parameter 'expectedRowCollapseStates' differs to expected row count."); } if (data.getRowCount() != expectedCellStates.length) { fail("Size of parameter 'expectedCellStates' differs to expected row count."); } for (int rowIndex = 0; rowIndex < data.getRowCount(); rowIndex++) { final GridRow row = data.getRow(rowIndex); assertEquals("Row[" + rowIndex + "] actual isMerged() differs to expected.", expectedRowMergeStates[rowIndex], row.isMerged()); assertEquals("Row[" + rowIndex + "] actual isCollapsed() differs to expected.", expectedRowCollapseStates[rowIndex], row.isCollapsed()); if (data.getColumnCount() != expectedCellStates[rowIndex].length) { fail("Size of parameter 'expectedCellStates[" + rowIndex + "]' differs to expected column count."); } for (int columnIndex = 0; columnIndex < data.getColumnCount(); columnIndex++) { final GridCell cell = data.getCell(rowIndex, columnIndex); if (cell == null) { assertNull("Cell[" + columnIndex + ", " + rowIndex + "] was expected to be null.", expectedCellStates[rowIndex][columnIndex].value); } else { assertEquals("Cell[" + columnIndex + ", " + rowIndex + "] actual isMerged() differs to expected.", expectedCellStates[rowIndex][columnIndex].isMerged, cell.isMerged()); assertEquals("Cell[" + columnIndex + ", " + rowIndex + "] actual getMergedCellCount() differs to expected.", expectedCellStates[rowIndex][columnIndex].mergedCellCount, cell.getMergedCellCount()); assertEquals("Cell[" + columnIndex + ", " + rowIndex + "] actual getValue() differs to expected.", expectedCellStates[rowIndex][columnIndex].value, cell.getValue().getValue()); } } } } public static class Expected { private boolean isMerged; private int mergedCellCount; private Object value; private Expected(final boolean isMerged, final int mergedCellCount, final Object value) { this.isMerged = isMerged; this.mergedCellCount = mergedCellCount; this.value = value; } private Expected(final Object value) { this.value = value; } public static Expected build(final Object value) { return new Expected(value); } public static Expected build(final boolean isMerged, final int mergedCellCount, final Object value) { return new Expected(isMerged, mergedCellCount, value); } } public static class MockMergableGridColumn<T> extends BaseGridColumn<T> { public MockMergableGridColumn(final String title, final double width) { super(new BaseHeaderMetaData(title), new MockMergableGridColumnRenderer<T>(), width); } @Override public void edit(final GridCell<T> cell, final GridBodyCellRenderContext context, final Callback<GridCellValue<T>> callback) { //Do nothing } } public static class MockMergableGridColumnRenderer<T> extends BaseGridColumnRenderer<T> { @Override public Group renderCell(final GridCell<T> cell, final GridBodyCellRenderContext context) { return null; } } }