/******************************************************************************* * 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.beans.IntrospectionException; import java.beans.PropertyDescriptor; import java.math.BigDecimal; import java.math.BigInteger; import java.util.ArrayList; import java.util.Date; import java.util.List; import junit.framework.TestCase; import org.eclipse.core.databinding.observable.Realm; import org.eclipse.core.databinding.observable.list.WritableList; import org.eclipse.jface.databinding.swt.SWTObservables; import org.eclipse.jface.viewers.CellEditor; 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.core.test.collect.UITestCase; import org.eclipse.riena.core.util.ReflectionUtils; import org.eclipse.riena.ui.swt.utils.UIControlsFactory; /** * Tests of the class {@link TableRidgetEditingSupport}. */ @UITestCase public class TableRidgetEditingSupportTest extends TestCase { private Shell shell; private TableRidget ridget; private Table table; @Override protected void setUp() throws Exception { 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.DEFAULT); ridget = new TableRidget(); ridget.setUIControl(table); final List<PropHolder> rows = new ArrayList<PropHolder>(); final PropHolder[] values = new PropHolder[] { new PropHolder(), new PropHolder() }; for (final PropHolder value : values) { rows.add(value); } final String[] propNames = new String[] { "booleanValue", "intValue" }; ridget.bindToModel(new WritableList(rows, PropHolder.class), PropHolder.class, propNames, propNames); } @Override protected void tearDown() throws Exception { ridget = null; shell.dispose(); shell = null; super.tearDown(); } /** * Tests the <i>private</i> method {@code getAlignment(int)}. */ public void testGetAlignment() { final TableRidgetEditingSupport support = new TableRidgetEditingSupport(ridget, null, SWT.DEFAULT); int style = 0; int ret = ReflectionUtils.invokeHidden(support, "getAlignment", style); //$NON-NLS-1$ assertEquals(SWT.DEFAULT, ret); style = SWT.SHORT; ret = ReflectionUtils.invokeHidden(support, "getAlignment", style); //$NON-NLS-1$ assertEquals(SWT.DEFAULT, ret); style = SWT.LEFT; ret = ReflectionUtils.invokeHidden(support, "getAlignment", style); //$NON-NLS-1$ assertEquals(SWT.LEFT, ret); style = SWT.LEFT | SWT.SHORT; ret = ReflectionUtils.invokeHidden(support, "getAlignment", style); //$NON-NLS-1$ assertEquals(SWT.LEFT, ret); style = SWT.RIGHT; ret = ReflectionUtils.invokeHidden(support, "getAlignment", style); //$NON-NLS-1$ assertEquals(SWT.RIGHT, ret); style = SWT.RIGHT | SWT.MEDIUM; ret = ReflectionUtils.invokeHidden(support, "getAlignment", style); //$NON-NLS-1$ assertEquals(SWT.RIGHT, ret); style = SWT.CENTER; ret = ReflectionUtils.invokeHidden(support, "getAlignment", style); //$NON-NLS-1$ assertEquals(SWT.CENTER, ret); style = SWT.CENTER | SWT.SHORT; ret = ReflectionUtils.invokeHidden(support, "getAlignment", style); //$NON-NLS-1$ assertEquals(SWT.CENTER, ret); style = SWT.LEFT | SWT.RIGHT; ret = ReflectionUtils.invokeHidden(support, "getAlignment", style); //$NON-NLS-1$ assertEquals(SWT.LEFT, ret); style = SWT.RIGHT | SWT.CENTER; ret = ReflectionUtils.invokeHidden(support, "getAlignment", style); //$NON-NLS-1$ assertEquals(SWT.RIGHT, ret); style = SWT.LEFT | SWT.RIGHT | SWT.CENTER; ret = ReflectionUtils.invokeHidden(support, "getAlignment", style); //$NON-NLS-1$ assertEquals(SWT.LEFT, ret); } /** * Tests the <i>private</i> method {@code createCellEditort}. * * @throws IntrospectionException */ public void testCreateCellEditort() throws IntrospectionException { final TableRidgetEditingSupport support = new TableRidgetEditingSupport(ridget, null, SWT.DEFAULT); PropertyDescriptor property = null; CellEditor editor = ReflectionUtils.invokeHidden(support, "createCellEditort", property, SWT.LEFT); //$NON-NLS-1$ assertNull(editor); property = new PropertyDescriptor("booleanValue", PropHolder.class); //$NON-NLS-1$ editor = ReflectionUtils.invokeHidden(support, "createCellEditort", property, SWT.LEFT); //$NON-NLS-1$ assertNull(editor); property = new PropertyDescriptor("intValue", PropHolder.class); //$NON-NLS-1$ editor = ReflectionUtils.invokeHidden(support, "createCellEditort", property, SWT.LEFT); //$NON-NLS-1$ assertNotNull(editor); Object data = editor.getControl().getData(UIControlsFactory.KEY_TYPE); assertEquals(UIControlsFactory.TYPE_NUMERIC, data); int style = editor.getControl().getStyle(); assertEquals(SWT.LEFT, style & SWT.LEFT); property = new PropertyDescriptor("longValue", PropHolder.class); //$NON-NLS-1$ editor = ReflectionUtils.invokeHidden(support, "createCellEditort", property, SWT.RIGHT); //$NON-NLS-1$ assertNotNull(editor); data = editor.getControl().getData(UIControlsFactory.KEY_TYPE); assertEquals(UIControlsFactory.TYPE_NUMERIC, data); style = editor.getControl().getStyle(); assertEquals(SWT.RIGHT, style & SWT.RIGHT); property = new PropertyDescriptor("floatValue", PropHolder.class); //$NON-NLS-1$ editor = ReflectionUtils.invokeHidden(support, "createCellEditort", property, SWT.CENTER); //$NON-NLS-1$ assertNotNull(editor); data = editor.getControl().getData(UIControlsFactory.KEY_TYPE); assertEquals(UIControlsFactory.TYPE_DECIMAL, data); style = editor.getControl().getStyle(); assertEquals(SWT.CENTER, style & SWT.CENTER); property = new PropertyDescriptor("doubleValue", PropHolder.class); //$NON-NLS-1$ editor = ReflectionUtils.invokeHidden(support, "createCellEditort", property, SWT.LEFT); //$NON-NLS-1$ assertNotNull(editor); data = editor.getControl().getData(UIControlsFactory.KEY_TYPE); assertEquals(UIControlsFactory.TYPE_DECIMAL, data); property = new PropertyDescriptor("bigIntegerValue", PropHolder.class); //$NON-NLS-1$ editor = ReflectionUtils.invokeHidden(support, "createCellEditort", property, SWT.LEFT); //$NON-NLS-1$ assertNotNull(editor); data = editor.getControl().getData(UIControlsFactory.KEY_TYPE); assertEquals(UIControlsFactory.TYPE_NUMERIC, data); property = new PropertyDescriptor("bigDecimalValue", PropHolder.class); //$NON-NLS-1$ editor = ReflectionUtils.invokeHidden(support, "createCellEditort", property, SWT.LEFT); //$NON-NLS-1$ assertNotNull(editor); data = editor.getControl().getData(UIControlsFactory.KEY_TYPE); assertEquals(UIControlsFactory.TYPE_DECIMAL, data); property = new PropertyDescriptor("integerValue", PropHolder.class); //$NON-NLS-1$ editor = ReflectionUtils.invokeHidden(support, "createCellEditort", property, SWT.LEFT); //$NON-NLS-1$ assertNotNull(editor); data = editor.getControl().getData(UIControlsFactory.KEY_TYPE); assertEquals(UIControlsFactory.TYPE_NUMERIC, data); property = new PropertyDescriptor("dateValue", PropHolder.class); //$NON-NLS-1$ editor = ReflectionUtils.invokeHidden(support, "createCellEditort", property, SWT.LEFT); //$NON-NLS-1$ assertNotNull(editor); data = editor.getControl().getData(UIControlsFactory.KEY_TYPE); assertEquals(UIControlsFactory.TYPE_DATE, data); property = new PropertyDescriptor("someValue", PropHolder.class); //$NON-NLS-1$ editor = ReflectionUtils.invokeHidden(support, "createCellEditort", property, SWT.LEFT); //$NON-NLS-1$ assertNotNull(editor); data = editor.getControl().getData(UIControlsFactory.KEY_TYPE); assertNull(data); property = new PropertyDescriptor("stringValue", PropHolder.class); //$NON-NLS-1$ editor = ReflectionUtils.invokeHidden(support, "createCellEditort", property, SWT.LEFT); //$NON-NLS-1$ assertNotNull(editor); data = editor.getControl().getData(UIControlsFactory.KEY_TYPE); assertNull(data); } private class PropHolder { private boolean booleanValue; private int intValue; private long longValue; private float floatValue; private double doubleValue; private BigInteger bigIntegerValue; private BigDecimal bigDecimalValue; private Integer integerValue; private Date dateValue; private Object someValue; private String stringValue; public boolean isBooleanValue() { return booleanValue; } public void setBooleanValue(final boolean booleanValue) { this.booleanValue = booleanValue; } public int getIntValue() { return intValue; } public void setIntValue(final int intValue) { this.intValue = intValue; } public long getLongValue() { return longValue; } public void setLongValue(final long longValue) { this.longValue = longValue; } public float getFloatValue() { return floatValue; } public void setFloatValue(final float floatValue) { this.floatValue = floatValue; } public double getDoubleValue() { return doubleValue; } public void setDoubleValue(final double doubleValue) { this.doubleValue = doubleValue; } public BigInteger getBigIntegerValue() { return bigIntegerValue; } public void setBigIntegerValue(final BigInteger bigIntegerValue) { this.bigIntegerValue = bigIntegerValue; } public BigDecimal getBigDecimalValue() { return bigDecimalValue; } public void setBigDecimalValue(final BigDecimal bigDecimalValue) { this.bigDecimalValue = bigDecimalValue; } public Integer getIntegerValue() { return integerValue; } public void setIntegerValue(final Integer integerValue) { this.integerValue = integerValue; } public Date getDateValue() { return dateValue; } public void setDateValue(final Date dateValue) { this.dateValue = dateValue; } public Object getSomeValue() { return someValue; } /** * @param someValue * the someValue to set */ public void setSomeValue(final Object someValue) { this.someValue = someValue; } /** * @return the stringValue */ public String getStringValue() { return stringValue; } /** * @param stringValue * the stringValue to set */ public void setStringValue(final String stringValue) { this.stringValue = stringValue; } } }