blob: df8af615325c4e9bffbe9e97baa46d2b723b7542 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014, 2020 Jonas Hugo, Markus Wahl.
* 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:
* Jonas Hugo <Jonas.Hugo@jeppesen.com>,
* Markus Wahl <Markus.Wahl@jeppesen.com> - initial test
* Dirk Fauth <dirk.fauth@googlemail.com> - made Selections.Row a static inner class
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.selection.preserve;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.Serializable;
import java.util.Arrays;
import java.util.HashSet;
import org.eclipse.nebula.widgets.nattable.selection.preserve.Selections.CellPosition;
import org.junit.Test;
public class SelectionsTest {
private Selections<String[]> testee = new Selections<>();
private Serializable rowA = "rowA";
private Serializable rowB = "rowB";
/**
* Each row consist of an array of String, one String for each column, i e
* each cell is a String.
*/
private String[] rowObjectA = new String[] { "good", "day" };
private String[] rowObjectB = new String[] { "bad", "night" };
private int columnPosition1 = 1;
private int columnPosition2 = 2;
private int columnPosition3 = 3;
@Test
public void Never_Selected_Cell_Is_Not_Selected() {
assertFalse(this.testee.isSelected(this.rowA, this.columnPosition2));
}
@Test
public void Selecting_A_Cell_For_Unselected_Row() {
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition2);
assertTrue(this.testee.isSelected(this.rowA, this.columnPosition2));
}
@Test
public void Selecting_A_Cell_For_Already_Selected_Row() {
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition1);
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition2);
assertTrue(this.testee.isSelected(this.rowA, this.columnPosition1));
assertTrue(this.testee.isSelected(this.rowA, this.columnPosition2));
}
@Test
public void Clear_Removes_All_Selections() {
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition1);
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition2);
this.testee.select(this.rowB, this.rowObjectB, this.columnPosition2);
this.testee.clear();
assertFalse(this.testee.isSelected(this.rowA, this.columnPosition1));
assertFalse(this.testee.isSelected(this.rowA, this.columnPosition2));
assertFalse(this.testee.isSelected(this.rowB, this.columnPosition2));
assertTrue(this.testee.getRows().isEmpty());
assertTrue(this.testee.getColumnPositions().length == 0);
}
@Test
public void Deselecting_Cells_Does_Only_Affect_Those_Cells() {
// cell not to be touched
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition1);
// Cells to be touched
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition2);
this.testee.select(this.rowB, this.rowObjectB, this.columnPosition2);
this.testee.deselect(this.rowA, this.columnPosition2);
this.testee.deselect(this.rowB, this.columnPosition2);
assertTrue(this.testee.isSelected(this.rowA, this.columnPosition1));
assertFalse(this.testee.isSelected(this.rowA, this.columnPosition2));
assertFalse(this.testee.isSelected(this.rowB, this.columnPosition2));
}
@Test
public void Fully_Deselected_Row_Doesent_Linger() {
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition1);
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition2);
this.testee.deselect(this.rowA, this.columnPosition1);
this.testee.deselect(this.rowA, this.columnPosition2);
assertFalse(this.testee.isRowSelected(this.rowA));
}
@Test
public void None_Selected_Cells_Is_Empty() {
assertTrue(this.testee.isEmpty());
}
@Test
public void Selected_Cell_Is_Not_Empty() {
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition1);
assertFalse(this.testee.isEmpty());
}
@Test
public void Fully_Deselecting_All_Rows_Causes_Is_Empty() {
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition1);
this.testee.deselect(this.rowA, this.columnPosition1);
assertTrue(this.testee.isEmpty());
}
@Test
public void getSelections_Retrieves_All_Cells() {
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition2);
this.testee.select(this.rowB, this.rowObjectB, this.columnPosition2);
HashSet<CellPosition<String[]>> actualCells = new HashSet<>(this.testee.getSelections());
HashSet<CellPosition<String[]>> expectedCells = new HashSet<>();
expectedCells.add(new CellPosition<>(this.rowObjectA, this.columnPosition2));
expectedCells.add(new CellPosition<>(this.rowObjectB, this.columnPosition2));
assertEquals(expectedCells, actualCells);
}
@Test
public void getRows() {
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition2);
this.testee.select(this.rowB, this.rowObjectB, this.columnPosition2);
HashSet<Serializable> actualRowIds = new HashSet<>();
for (Selections.Row<String[]> row : this.testee.getRows()) {
actualRowIds.add(row.getId());
}
HashSet<Serializable> expectedRowIds = new HashSet<>();
expectedRowIds.add(this.rowA);
expectedRowIds.add(this.rowB);
assertEquals(expectedRowIds, actualRowIds);
}
@Test
public void getColumns() {
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition2);
this.testee.select(this.rowA, this.rowObjectA, this.columnPosition3);
this.testee.select(this.rowB, this.rowObjectB, this.columnPosition1);
int[] actualColumns = this.testee.getColumnPositions();
int[] expectedColumns = new int[] { this.columnPosition1, this.columnPosition2, this.columnPosition3 };
assertTrue(Arrays.equals(expectedColumns, actualColumns));
}
}