/*******************************************************************************
* 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.internal.ui.ridgets.swt;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import junit.framework.TestCase;
import org.eclipse.core.databinding.observable.Realm;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.riena.beans.common.Person;
import org.eclipse.riena.beans.common.PersonManager;
import org.eclipse.riena.core.test.collect.NonUITestCase;
import org.eclipse.riena.core.util.ReflectionUtils;
import org.eclipse.riena.ui.tests.base.TestMultiSelectionBean;
import org.eclipse.riena.ui.tests.base.TestSingleSelectionBean;
/**
* Tests of the class TableRidgetTableViewer (and also inner classes).
*/
@NonUITestCase
public class TableRidgetTableViewerTest extends TestCase {
protected PersonManager manager;
protected Person person1;
protected Person person2;
protected Person person3;
protected TestSingleSelectionBean singleSelectionBean;
protected TestMultiSelectionBean multiSelectionBean;
private TableRidget ridget;
private Shell shell;
private Table table;
@Override
public void setUp() throws Exception {
super.setUp();
final Display display = Display.getDefault();
final Realm realm = SWTObservables.getRealm(display);
assertNotNull(realm);
ReflectionUtils.invokeHidden(realm, "setDefault", realm); //$NON-NLS-1$
shell = new Shell(SWT.SYSTEM_MODAL | SWT.ON_TOP);
table = new Table(shell, SWT.NONE);
ridget = new TableRidget();
ridget.setUIControl(table);
manager = new PersonManager(createPersonList());
final Iterator<Person> it = manager.getPersons().iterator();
person1 = it.next();
person2 = it.next();
person3 = it.next();
}
@Override
protected void tearDown() throws Exception {
ridget = null;
table = null;
shell.dispose();
shell = null;
super.tearDown();
}
/**
* Tests the method {@code checkStateChanged} of the inner class {@code TableRidgetCheckStateListener}.
*
* @throws Exception
* handled by junit
*/
public void testCheckStateChanged() throws Exception {
final String[] properties1 = new String[] { "hasCat", "firstname" }; //$NON-NLS-1$ //$NON-NLS-2$
final String[] headers1 = new String[] { "Cat", "First Name" }; //$NON-NLS-1$ //$NON-NLS-2$
ridget.bindToModel(manager, "persons", Person.class, properties1, headers1); //$NON-NLS-1$
final TableRidgetTableViewer viewer = new TableRidgetTableViewer(ridget);
final Object listener = ReflectionUtils.newInstanceHidden(
"org.eclipse.riena.internal.ui.ridgets.swt.TableRidgetTableViewer$TableRidgetCheckStateListener", ridget); //$NON-NLS-1$
assertTrue(person1.isHasCat());
CheckStateChangedEvent event = new CheckStateChangedEvent(viewer, person1, true);
ReflectionUtils.invokeHidden(listener, "checkStateChanged", event); //$NON-NLS-1$
assertTrue(person1.isHasCat());
event = new CheckStateChangedEvent(viewer, person1, false);
ReflectionUtils.invokeHidden(listener, "checkStateChanged", event); //$NON-NLS-1$
assertFalse(person1.isHasCat());
assertFalse(person2.isHasCat());
event = new CheckStateChangedEvent(viewer, person2, true);
ReflectionUtils.invokeHidden(listener, "checkStateChanged", event); //$NON-NLS-1$
assertTrue(person2.isHasCat());
}
private Collection<Person> createPersonList() {
final Collection<Person> newList = new ArrayList<Person>();
Person person = new Person("Doe", "John"); //$NON-NLS-1$ //$NON-NLS-2$
person.setHasCat(true);
newList.add(person);
person = new Person("Jackson", "Janet"); //$NON-NLS-1$ //$NON-NLS-2$
person.setHasCat(false);
newList.add(person);
person = new Person("Jackson", "Jermaine"); //$NON-NLS-1$ //$NON-NLS-2$
person.setHasCat(true);
newList.add(person);
return newList;
}
}