/*******************************************************************************
* Copyright (c) 2007, 2014 compeople AG 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:
* compeople AG - initial API and implementation
*******************************************************************************/
package org.eclipse.riena.client.controller.test;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
import org.eclipse.riena.beans.common.Person;
import org.eclipse.riena.beans.common.PersonFactory;
import org.eclipse.riena.core.test.collect.NonUITestCase;
import org.eclipse.riena.internal.ui.swt.utils.TestUtils;
import org.eclipse.riena.navigation.ISubModuleNode;
import org.eclipse.riena.navigation.NavigationNodeId;
import org.eclipse.riena.navigation.ui.swt.controllers.AbstractSubModuleControllerTest;
import org.eclipse.riena.ui.ridgets.IActionRidget;
import org.eclipse.riena.ui.ridgets.IComboRidget;
import org.eclipse.riena.ui.ridgets.IDateTextRidget;
import org.eclipse.riena.ui.ridgets.IDateTimeRidget;
import org.eclipse.riena.ui.ridgets.IDecimalTextRidget;
import org.eclipse.riena.ui.ridgets.IGroupedTreeTableRidget;
import org.eclipse.riena.ui.ridgets.IListRidget;
import org.eclipse.riena.ui.ridgets.IMarkableRidget;
import org.eclipse.riena.ui.ridgets.IMultipleChoiceRidget;
import org.eclipse.riena.ui.ridgets.INumericTextRidget;
import org.eclipse.riena.ui.ridgets.ISelectableRidget;
import org.eclipse.riena.ui.ridgets.ISingleChoiceRidget;
import org.eclipse.riena.ui.ridgets.ITableRidget;
import org.eclipse.riena.ui.ridgets.ITextRidget;
import org.eclipse.riena.ui.ridgets.IToggleButtonRidget;
import org.eclipse.riena.ui.ridgets.ITreeRidget;
import org.eclipse.riena.ui.tests.base.TestSingleSelectionBean;
/**
* Tests for the MarkerSubModuleController.
*/
@NonUITestCase
public class MarkerSubModuleControllerTest extends AbstractSubModuleControllerTest<MarkerSubModuleController> {
private List<Person> personList;
@Override
protected void setUp() throws Exception {
super.setUp();
personList = PersonFactory.createPersonList();
}
@Override
protected MarkerSubModuleController createController(final ISubModuleNode node) {
final MarkerSubModuleController newInst = new MarkerSubModuleController();
node.setNodeId(new NavigationNodeId("org.eclipse.riena.example.marker")); //$NON-NLS-1$
newInst.setNavigationNode(node);
return newInst;
}
public void testBasicInitialization() {
final IToggleButtonRidget checkMandatory = getController().getRidget(IToggleButtonRidget.class,
"checkMandatory"); //$NON-NLS-1$
assertFalse(checkMandatory.isSelected());
final IToggleButtonRidget checkError = getController().getRidget(IToggleButtonRidget.class, "checkError"); //$NON-NLS-1$
assertFalse(checkError.isSelected());
final IToggleButtonRidget checkDisabled = getController().getRidget(IToggleButtonRidget.class, "checkDisabled"); //$NON-NLS-1$
assertFalse(checkDisabled.isSelected());
final IToggleButtonRidget checkOutput = getController().getRidget(IToggleButtonRidget.class, "checkOutput"); //$NON-NLS-1$
assertFalse(checkOutput.isSelected());
final IToggleButtonRidget checkHidden = getController().getRidget(IToggleButtonRidget.class, "checkHidden"); //$NON-NLS-1$
assertFalse(checkHidden.isSelected());
final IToggleButtonRidget checkHiddenParent = getController().getRidget(IToggleButtonRidget.class,
"checkHiddenParent"); //$NON-NLS-1$
assertFalse(checkHiddenParent.isSelected());
final ITextRidget textName = getController().getRidget(ITextRidget.class, "textName"); //$NON-NLS-1$
assertEquals("Chateau Schaedelbrummer", textName.getText()); //$NON-NLS-1$
final IDecimalTextRidget textPrice = getController().getRidget(IDecimalTextRidget.class, "textPrice"); //$NON-NLS-1$
assertEquals(TestUtils.getLocalizedNumber("-29,99"), textPrice.getText()); //$NON-NLS-1$
final INumericTextRidget textAmount = getController().getRidget(INumericTextRidget.class, "textAmount"); //$NON-NLS-1$
assertEquals(TestUtils.getLocalizedNumber("1.001"), textAmount.getText()); //$NON-NLS-1$
final IDateTextRidget textDate = getController().getRidget(IDateTextRidget.class, "textDate"); //$NON-NLS-1$
assertEquals("04.12.2008", textDate.getText()); //$NON-NLS-1$
final IDateTimeRidget dtDate = getController().getRidget(IDateTimeRidget.class, "dtDate"); //$NON-NLS-1$
if ("US".equals(Locale.getDefault().getCountry())) { //$NON-NLS-1$
assertEquals("12/4/08 12:00 AM", dtDate.getText()); //$NON-NLS-1$
} else {
assertEquals("04.12.08 00:00", dtDate.getText()); //$NON-NLS-1$
}
final Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(2008, Calendar.DECEMBER, 4);
assertEquals(cal.getTime(), dtDate.getDate());
final IComboRidget comboAge = getController().getRidget(IComboRidget.class, "comboAge"); //$NON-NLS-1$
assertEquals("young", comboAge.getSelection()); //$NON-NLS-1$
final ISingleChoiceRidget choiceType = getController().getRidget(ISingleChoiceRidget.class, "choiceType"); //$NON-NLS-1$
assertEquals("red", choiceType.getSelection()); //$NON-NLS-1$
final IMultipleChoiceRidget choiceFlavor = getController().getRidget(IMultipleChoiceRidget.class,
"choiceFlavor"); //$NON-NLS-1$
assertNotNull(choiceFlavor.getSelection());
assertEquals(2, choiceFlavor.getSelection().size());
assertEquals("dry", choiceFlavor.getSelection().get(0)); //$NON-NLS-1$
assertEquals("spicy", choiceFlavor.getSelection().get(1)); //$NON-NLS-1$
final IToggleButtonRidget buttonToggleA = getController().getRidget(IToggleButtonRidget.class, "buttonToggleA"); //$NON-NLS-1$
assertTrue(buttonToggleA.isSelected());
final IToggleButtonRidget buttonToggleB = getController().getRidget(IToggleButtonRidget.class, "buttonToggleB"); //$NON-NLS-1$
assertFalse(buttonToggleB.isSelected());
final IToggleButtonRidget buttonRadioA = getController().getRidget(IToggleButtonRidget.class, "buttonRadioA"); //$NON-NLS-1$
assertTrue(buttonRadioA.isSelected());
final IToggleButtonRidget buttonRadioB = getController().getRidget(IToggleButtonRidget.class, "buttonRadioB"); //$NON-NLS-1$
assertFalse(buttonRadioB.isSelected());
final IToggleButtonRidget buttonCheckA = getController().getRidget(IToggleButtonRidget.class, "buttonCheckA"); //$NON-NLS-1$
assertTrue(buttonCheckA.isSelected());
final IToggleButtonRidget buttonCheckB = getController().getRidget(IToggleButtonRidget.class, "buttonCheckB"); //$NON-NLS-1$
assertFalse(buttonCheckB.isSelected());
}
public void testMandatoryMarkerOptions() {
final ITreeRidget treePersons = getController().getRidget(ITreeRidget.class, "treePersons"); //$NON-NLS-1$
treePersons.setSelectionType(ISelectableRidget.SelectionType.SINGLE);
final TestSingleSelectionBean singleSelectionBean = new TestSingleSelectionBean();
treePersons.bindSingleSelectionToModel(singleSelectionBean, TestSingleSelectionBean.PROPERTY_SELECTION);
treePersons.updateFromModel();
final IToggleButtonRidget mandatoryToggle = getController().getRidget(IToggleButtonRidget.class,
"checkMandatory"); //$NON-NLS-1$
assertFalse(mandatoryToggle.isSelected());
for (final IMarkableRidget ridget : getAllMarkableRidgets()) {
assertFalse("failed on: " + ridget, ridget.isMandatory()); //$NON-NLS-1$
}
mandatoryToggle.setSelected(true);
assertTrue(mandatoryToggle.isSelected());
for (final IMarkableRidget ridget : getAllMarkableRidgets()) {
assertTrue("failed on: " + ridget, ridget.isMandatory()); //$NON-NLS-1$
}
}
public void testErrorMarkerOptions() {
final IToggleButtonRidget errorToggle = getController().getRidget(IToggleButtonRidget.class, "checkError"); //$NON-NLS-1$
assertFalse(errorToggle.isSelected());
for (final IMarkableRidget ridget : getAllMarkableRidgets()) {
assertFalse("failed on: " + ridget, ridget.isErrorMarked()); //$NON-NLS-1$
}
errorToggle.setSelected(true);
assertTrue(errorToggle.isSelected());
for (final IMarkableRidget ridget : getAllMarkableRidgets()) {
assertTrue("failed on: " + ridget, ridget.isErrorMarked()); //$NON-NLS-1$
}
}
public void testDisabledMarkerOptions() {
final IToggleButtonRidget disabledToggle = getController()
.getRidget(IToggleButtonRidget.class, "checkDisabled"); //$NON-NLS-1$
assertFalse(disabledToggle.isSelected());
for (final IMarkableRidget ridget : getAllMarkableRidgets()) {
assertTrue("failed on: " + ridget, ridget.isEnabled()); //$NON-NLS-1$
}
disabledToggle.setSelected(true);
assertTrue(disabledToggle.isSelected());
for (final IMarkableRidget ridget : getAllMarkableRidgets()) {
assertFalse("failed on: " + ridget, ridget.isEnabled()); //$NON-NLS-1$
}
assertFalse(getController().getRidget(IActionRidget.class, "buttonPush").isEnabled()); //$NON-NLS-1$
}
public void testOutputMarkerOptions() {
final IToggleButtonRidget outputToggle = getController().getRidget(IToggleButtonRidget.class, "checkOutput"); //$NON-NLS-1$
assertFalse(outputToggle.isSelected());
for (final IMarkableRidget ridget : getAllMarkableRidgets()) {
assertFalse("failed on: " + ridget, ridget.isOutputOnly()); //$NON-NLS-1$
}
outputToggle.setSelected(true);
assertTrue(outputToggle.isSelected());
for (final IMarkableRidget ridget : getAllMarkableRidgets()) {
assertTrue("failed on: " + ridget, ridget.isOutputOnly()); //$NON-NLS-1$
}
}
public void testHiddenMarkerOptions() {
final IToggleButtonRidget hiddenToggle = getController().getRidget(IToggleButtonRidget.class, "checkHidden"); //$NON-NLS-1$
assertFalse(hiddenToggle.isSelected());
for (final IMarkableRidget ridget : getAllMarkableRidgets()) {
assertTrue("failed on: " + ridget, ridget.isVisible()); //$NON-NLS-1$
}
hiddenToggle.setSelected(true);
assertTrue(hiddenToggle.isSelected());
for (final IMarkableRidget ridget : getAllMarkableRidgets()) {
assertFalse("failed on: " + ridget, ridget.isVisible()); //$NON-NLS-1$
}
assertFalse(getController().getRidget(IActionRidget.class, "buttonPush").isVisible()); //$NON-NLS-1$
}
public void testList() {
Person expected = null;
Person actual = null;
final IListRidget listPersons = getController().getRidget(IListRidget.class, "listPersons"); //$NON-NLS-1$
assertEquals(personList.size(), listPersons.getOptionCount());
assertEquals(-1, listPersons.getSelectionIndex());
assertEquals(0, listPersons.getSelection().size());
for (int i = 0; i < listPersons.getOptionCount(); i++) {
expected = personList.get(i);
actual = (Person) listPersons.getOption(i);
assertEquals(expected.getFirstname(), actual.getFirstname());
assertEquals(expected.getLastname(), actual.getLastname());
}
listPersons.setSelection(1);
// Fehler: liefert -1
// assertEquals(1, listPersons.getSelectionIndex());
assertEquals(1, listPersons.getSelection().size());
expected = personList.get(1);
actual = (Person) listPersons.getSelection().get(0);
assertEquals(expected.getFirstname(), actual.getFirstname());
assertEquals(expected.getLastname(), actual.getLastname());
}
public void testTable() {
Person expected = null;
Person actual = null;
final ITableRidget tablePersons = getController().getRidget(ITableRidget.class, "tablePersons"); //$NON-NLS-1$
assertEquals(personList.size(), tablePersons.getOptionCount());
assertEquals(-1, tablePersons.getSelectionIndex());
assertEquals(0, tablePersons.getSelection().size());
for (int i = 0; i < tablePersons.getOptionCount(); i++) {
expected = personList.get(i);
actual = (Person) tablePersons.getOption(i);
assertEquals(expected.getFirstname(), actual.getFirstname());
assertEquals(expected.getLastname(), actual.getLastname());
}
tablePersons.setSelection(1);
// Fehler: liefert -1
// assertEquals(1, tablePersons.getSelectionIndex());
assertEquals(1, tablePersons.getSelection().size());
expected = personList.get(1);
actual = (Person) tablePersons.getSelection().get(0);
assertEquals(expected.getFirstname(), actual.getFirstname());
assertEquals(expected.getLastname(), actual.getLastname());
}
public void testTree() {
final ITreeRidget treePersons = getController().getRidget(ITreeRidget.class, "treePersons"); //$NON-NLS-1$
assertTrue(treePersons.getSelection().isEmpty());
}
public void testTreeTable() {
final IGroupedTreeTableRidget treeWCols = getController().getRidget(IGroupedTreeTableRidget.class, "treeWCols"); //$NON-NLS-1$
assertTrue(treeWCols.getSelection().isEmpty());
}
public void testMarkers() {
basicTestMarkers(getController().getRidget(ITextRidget.class, "textName"), "testString"); //$NON-NLS-1$ //$NON-NLS-2$
basicTestMarkers(getController().getRidget(IDecimalTextRidget.class, "textPrice"), "123"); //$NON-NLS-1$ //$NON-NLS-2$
basicTestMarkers(getController().getRidget(INumericTextRidget.class, "textAmount"), "123"); //$NON-NLS-1$ //$NON-NLS-2$
basicTestMarkers(getController().getRidget(IDateTextRidget.class, "textDate"), "01.01.1980"); //$NON-NLS-1$ //$NON-NLS-2$
basicTestMarkers(getController().getRidget(IDateTimeRidget.class, "dtDate")); //$NON-NLS-1$
basicTestMarkers(getController().getRidget(IComboRidget.class, "comboAge")); //$NON-NLS-1$
basicTestMarkers(getController().getRidget(ISingleChoiceRidget.class, "choiceType")); //$NON-NLS-1$
basicTestMarkers(getController().getRidget(IMultipleChoiceRidget.class, "choiceFlavor")); //$NON-NLS-1$
}
// helping methods
//////////////////
private void basicTestMarkers(final ITextRidget textRidget, final String value) {
basicTestMarkers(textRidget);
textRidget.setText(null);
textRidget.setMandatory(true);
assertFalse(textRidget.isDisableMandatoryMarker());
textRidget.setText(value);
assertTrue(textRidget.isDisableMandatoryMarker());
textRidget.setText(null);
assertFalse(textRidget.isDisableMandatoryMarker());
textRidget.setMandatory(false);
}
private void basicTestMarkers(final IComboRidget comboRidget) {
basicTestMarkers((IMarkableRidget) comboRidget);
comboRidget.setMandatory(true);
comboRidget.setSelection(null);
assertFalse(comboRidget.isDisableMandatoryMarker());
if (comboRidget.getEmptySelectionItem() == null) {
comboRidget.setSelection(0);
} else {
comboRidget.setSelection(1);
}
assertTrue(comboRidget.isDisableMandatoryMarker());
comboRidget.setSelection(-1);
assertFalse(comboRidget.isDisableMandatoryMarker());
if (comboRidget.getEmptySelectionItem() == null) {
comboRidget.setSelection(0);
} else {
comboRidget.setSelection(1);
}
assertTrue(comboRidget.isDisableMandatoryMarker());
comboRidget.setSelection(comboRidget.getEmptySelectionItem());
assertFalse(comboRidget.isDisableMandatoryMarker());
comboRidget.setMandatory(false);
}
private void basicTestMarkers(final IMarkableRidget ridget) {
basicTestMandatory(ridget);
basicTestErrorMarked(ridget);
basicTestOutputOnly(ridget);
basicTestEnabled(ridget);
basicTestVisible(ridget);
}
private void basicTestMandatory(final IMarkableRidget ridget) {
assertFalse(ridget.isMandatory());
ridget.setMandatory(true);
assertTrue(ridget.isMandatory());
ridget.setMandatory(false);
assertFalse(ridget.isMandatory());
}
private void basicTestErrorMarked(final IMarkableRidget ridget) {
assertFalse(ridget.isErrorMarked());
ridget.setErrorMarked(true);
assertTrue(ridget.isErrorMarked());
ridget.setErrorMarked(false);
assertFalse(ridget.isErrorMarked());
}
private void basicTestOutputOnly(final IMarkableRidget ridget) {
assertFalse(ridget.isOutputOnly());
ridget.setOutputOnly(true);
assertTrue(ridget.isOutputOnly());
ridget.setOutputOnly(false);
assertFalse(ridget.isOutputOnly());
}
private void basicTestEnabled(final IMarkableRidget ridget) {
assertTrue(ridget.isEnabled());
ridget.setEnabled(false);
assertFalse(ridget.isEnabled());
ridget.setEnabled(true);
assertTrue(ridget.isEnabled());
}
private void basicTestVisible(final IMarkableRidget ridget) {
assertTrue(ridget.isVisible());
ridget.setVisible(false);
assertFalse(ridget.isVisible());
ridget.setVisible(true);
assertTrue(ridget.isVisible());
}
private List<IMarkableRidget> getAllMarkableRidgets() {
final List<IMarkableRidget> markableRidgets = new ArrayList<IMarkableRidget>();
markableRidgets.add(getController().getRidget(ITextRidget.class, "textName")); //$NON-NLS-1$
markableRidgets.add(getController().getRidget(IDecimalTextRidget.class, "textPrice")); //$NON-NLS-1$
markableRidgets.add(getController().getRidget(INumericTextRidget.class, "textAmount")); //$NON-NLS-1$
markableRidgets.add(getController().getRidget(IDateTextRidget.class, "textDate")); //$NON-NLS-1$
markableRidgets.add(getController().getRidget(IDateTimeRidget.class, "dtDate")); //$NON-NLS-1$
markableRidgets.add(getController().getRidget(IComboRidget.class, "comboAge")); //$NON-NLS-1$
markableRidgets.add(getController().getRidget(ISingleChoiceRidget.class, "choiceType")); //$NON-NLS-1$
markableRidgets.add(getController().getRidget(IMultipleChoiceRidget.class, "choiceFlavor")); //$NON-NLS-1$
markableRidgets.add(getController().getRidget(IToggleButtonRidget.class, "buttonToggleA")); //$NON-NLS-1$
markableRidgets.add(getController().getRidget(IToggleButtonRidget.class, "buttonToggleB")); //$NON-NLS-1$
markableRidgets.add(getController().getRidget(IToggleButtonRidget.class, "buttonRadioA")); //$NON-NLS-1$
markableRidgets.add(getController().getRidget(IToggleButtonRidget.class, "buttonRadioB")); //$NON-NLS-1$
markableRidgets.add(getController().getRidget(IToggleButtonRidget.class, "buttonCheckA")); //$NON-NLS-1$
markableRidgets.add(getController().getRidget(IToggleButtonRidget.class, "buttonCheckB")); //$NON-NLS-1$
return markableRidgets;
}
}