/*******************************************************************************
* 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 org.easymock.EasyMock;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Widget;
import org.eclipse.riena.ui.ridgets.AbstractMarkerSupport;
import org.eclipse.riena.ui.ridgets.IControlDecoration;
import org.eclipse.riena.ui.ridgets.IRidget;
import org.eclipse.riena.ui.ridgets.swt.MarkerSupport;
/**
* Test for {@link MarkerSupport} with a shared {@link Widget}
*/
public class MarkerViewSharedTest extends AbstractRidgetSharedTestCase {
private final IControlDecoration[] decorationMocks = new IControlDecoration[2];
private int mockIndex = 0;
@Override
protected Control createWidget(final Composite parent) {
return new Text(parent, SWT.NONE);
}
@Override
protected void setUp() throws Exception {
super.setUp();
mockIndex = 0;
}
@Override
protected IRidget createRidget() {
return new TextRidget() {
@Override
protected AbstractMarkerSupport createMarkerSupport() {
return new MarkerSupport(this, propertyChangeSupport) {
@Override
protected IControlDecoration createErrorDecoration(final Control control) {
decorationMocks[mockIndex] = EasyMock.createNiceMock(IControlDecoration.class);
return decorationMocks[mockIndex++];
}
};
}
};
}
@Override
protected TextRidget getRidget1() {
return (TextRidget) super.getRidget1();
}
@Override
protected TextRidget getRidget2() {
return (TextRidget) super.getRidget2();
}
public void testMandatoryMarker() throws Exception {
final Color bg = getWidget().getBackground();
activateRidget1();
getRidget1().setMandatory(true);
assertFalse(bg.equals(getWidget().getBackground()));
activateRidget2();
assertFalse(getRidget2().isMandatory());
assertEquals(bg, getWidget().getBackground());
}
public void testErrorMarker() throws Exception {
activateRidget1();
assertNull(decorationMocks[0]);
getRidget1().setErrorMarked(true);
EasyMock.reset(decorationMocks[0]);
decorationMocks[0].hide();
EasyMock.expectLastCall().times(1);
EasyMock.replay(decorationMocks[0]);
activateRidget2();
EasyMock.verify(decorationMocks[0]);
EasyMock.reset(decorationMocks[0]);
decorationMocks[0].show();
EasyMock.expectLastCall().times(1);
EasyMock.replay(decorationMocks[0]);
activateRidget1();
EasyMock.verify(decorationMocks[0]);
}
public void testOutputMarker() throws Exception {
final Color bg = getWidget().getBackground();
activateRidget1();
getRidget1().setOutputOnly(true);
assertFalse(bg.equals(getWidget().getBackground()));
activateRidget2();
assertFalse(getRidget2().isMandatory());
assertEquals(bg, getWidget().getBackground());
}
public void testVisibleMarker() throws Exception {
activateRidget1();
getRidget1().setVisible(false);
assertFalse(getWidget().isVisible());
activateRidget2();
assertTrue(getWidget().isVisible());
}
public void testDisabledMarker() throws Exception {
activateRidget1();
getRidget1().setEnabled(false);
assertFalse(getWidget().isEnabled());
activateRidget2();
assertTrue(getWidget().isEnabled());
}
}