/******************************************************************************* * Copyright (c) 2014 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 * Jonas Hugo <Jonas.Hugo@jeppesen.com>, * Markus Wahl <Markus.Wahl@jeppesen.com> - Test delegation of markers to * model if model is an IMarkerSelectionModel. Test getters and setters * for marker fields. ******************************************************************************/ package org.eclipse.nebula.widgets.nattable.selection; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import java.util.List; import java.util.Set; import org.eclipse.nebula.widgets.nattable.coordinate.Range; import org.eclipse.nebula.widgets.nattable.layer.event.IStructuralChangeEvent; import org.eclipse.nebula.widgets.nattable.test.fixture.TestLayer; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.junit.Before; import org.junit.Test; public class MarkerSelectionModelTest { private TestLayer testLayer; private SelectionLayer selectionLayer; private StubbedMarkerSelectionModel markerSelectionModel = new StubbedMarkerSelectionModel(); @Before public void setup() { String columnInfo = "0:0;100 | 1:1;100 | 2:2;100 | 3:3;100"; String rowInfo = "0:0;40 | 1:1;40 | 2:2;40 | 3:3;40"; String cellInfo = "A0 | < | C0 | D0 \n" + "^ | < | C1 | D1 \n" + "A2 | B2 | C2 | D2 \n" + "A3 | B3 | C3 | D3 \n"; this.testLayer = new TestLayer(4, 4, columnInfo, rowInfo, cellInfo); this.selectionLayer = new SelectionLayer(this.testLayer); } @Test public void testGetLastSelectedRegionDelegatesToAnchorModel() { this.selectionLayer.setSelectionModel(this.markerSelectionModel); Rectangle lastSelectedRegion = new Rectangle(22, 22, 22, 22); this.markerSelectionModel.setLastSelectedRegion(lastSelectedRegion); assertEquals(lastSelectedRegion, this.selectionLayer.getLastSelectedRegion()); } @Test public void testSetLastSelectedRegionDelegatesToAnchorModel() { this.selectionLayer.setSelectionModel(this.markerSelectionModel); Rectangle region = new Rectangle(23454234, 123123, 12, 5); this.selectionLayer.setLastSelectedRegion(region); assertSame(region, this.markerSelectionModel.getLastSelectedRegion()); assertNull(this.selectionLayer.lastSelectedRegion); } @Test public void testSetLastSelectedRegionFieldsDelegatesToAnchorModel() { this.selectionLayer.setSelectionModel(this.markerSelectionModel); Rectangle region = new Rectangle(23454234, 123123, 12, 5); this.selectionLayer.setLastSelectedRegion(region.x, region.y, region.width, region.height); assertEquals(region, this.markerSelectionModel.getLastSelectedRegion()); assertNull(this.selectionLayer.lastSelectedRegion); } @Test public void testGetAnchorDelegatesToAnchorModel() { this.selectionLayer.setSelectionModel(this.markerSelectionModel); Point anchor = new Point(5, 7); this.markerSelectionModel.setSelectionAnchor(anchor); assertEquals(anchor.x, this.selectionLayer.getSelectionAnchor().columnPosition); assertEquals(anchor.y, this.selectionLayer.getSelectionAnchor().rowPosition); } @Test public void testSetSelectionAnchorDelegatesToAnchorModel() { this.selectionLayer.setSelectionModel(this.markerSelectionModel); this.selectionLayer.setSelectionAnchor(456, 8); assertEquals(456, this.markerSelectionModel.getSelectionAnchor().x); assertEquals(8, this.markerSelectionModel.getSelectionAnchor().y); assertFalse(SelectionLayer.hasSelection(this.selectionLayer.selectionAnchor)); } @Test public void testSetLastSelectedCellDelegatesToAnchorModel() { this.selectionLayer.setSelectionModel(this.markerSelectionModel); this.selectionLayer.setLastSelectedCell(456, 8); assertEquals(456, this.markerSelectionModel.getLastSelectedCell().x); assertEquals(8, this.markerSelectionModel.getLastSelectedCell().y); assertFalse(SelectionLayer.hasSelection(this.selectionLayer.lastSelectedCell)); } @Test public void testGetLastSelectedCellDelegatesToAnchorModel() { this.selectionLayer.setSelectionModel(this.markerSelectionModel); Point lastSelected = new Point(5, 7); this.markerSelectionModel.setLastSelectedCell(lastSelected); assertEquals(lastSelected.x, this.selectionLayer.getLastSelectedCell().columnPosition); assertEquals(lastSelected.y, this.selectionLayer.getLastSelectedCell().rowPosition); } public class StubbedMarkerSelectionModel implements IMarkerSelectionModel { private Rectangle lastSelectedRegion = new Rectangle(0, 0, 0, 0); private Point anchor; private Point lastSelectedCell; @Override public boolean isMultipleSelectionAllowed() { return false; } @Override public void setMultipleSelectionAllowed(boolean multipleSelectionAllowed) {} @Override public void addSelection(int columnPosition, int rowPosition) {} @Override public void addSelection(Rectangle range) {} @Override public void clearSelection() {} @Override public void clearSelection(int columnPosition, int rowPosition) {} @Override public void clearSelection(Rectangle removedSelection) {} @Override public boolean isEmpty() { return false; } @Override public List<Rectangle> getSelections() { return null; } @Override public boolean isCellPositionSelected(int columnPosition, int rowPosition) { return false; } @Override public int[] getSelectedColumnPositions() { return null; } @Override public boolean isColumnPositionSelected(int columnPosition) { return false; } @Override public int[] getFullySelectedColumnPositions(int columnHeight) { return null; } @Override public boolean isColumnPositionFullySelected(int columnPosition, int columnHeight) { return false; } @Override public int getSelectedRowCount() { return 0; } @Override public Set<Range> getSelectedRowPositions() { return null; } @Override public boolean isRowPositionSelected(int rowPosition) { return false; } @Override public int[] getFullySelectedRowPositions(int rowWidth) { return null; } @Override public boolean isRowPositionFullySelected(int rowPosition, int rowWidth) { return false; } @Override public Point getSelectionAnchor() { return this.anchor; } @Override public Point getLastSelectedCell() { return this.lastSelectedCell; } @Override public Rectangle getLastSelectedRegion() { return this.lastSelectedRegion; } @Override public void setSelectionAnchor(Point anchor) { this.anchor = anchor; } @Override public void setLastSelectedCell(Point lastSelectedCell) { this.lastSelectedCell = lastSelectedCell; } @Override public void setLastSelectedRegion(Rectangle region) { this.lastSelectedRegion = region; } @Override public void setLastSelectedRegion(int x, int y, int width, int height) { this.lastSelectedRegion.x = x; this.lastSelectedRegion.y = y; this.lastSelectedRegion.width = width; this.lastSelectedRegion.height = height; } @Override public void handleLayerEvent(IStructuralChangeEvent event) {} @Override public Class<IStructuralChangeEvent> getLayerEventClass() { return IStructuralChangeEvent.class; } } }