/*******************************************************************************
* 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.ui.ridgets.marker;
import junit.framework.TestCase;
import org.easymock.EasyMock;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.riena.core.test.collect.ManualTestCase;
import org.eclipse.riena.internal.ui.ridgets.swt.TextRidget;
import org.eclipse.riena.ui.core.marker.ErrorMessageMarker;
import org.eclipse.riena.ui.core.marker.MessageMarker;
import org.eclipse.riena.ui.ridgets.IStatuslineRidget;
import org.eclipse.riena.ui.ridgets.swt.DefaultRealm;
/**
* Tests for the {@code StatuslineMessageMarkerViewer}.
*/
@ManualTestCase
public class StatuslineMessageMarkerViewerTest extends TestCase {
private static final String EMPTY_STATUSLINE_MESSAGE = "TestEmptyStatusline";
private DefaultRealm realm;
private Shell shell;
private StatuslineMessageMarkerViewer statuslineMessageMarkerViewer;
private IStatuslineRidget statuslineRidget;
private Text text1;
private Text text2;
private TextRidget ridget1;
private TextRidget ridget2;
/**
* @see junit.framework.TestCase#setUp()
*/
@Override
protected void setUp() throws Exception {
super.setUp();
realm = new DefaultRealm();
shell = new Shell();
shell.setLayout(new RowLayout(SWT.VERTICAL));
text1 = new Text(shell, SWT.SINGLE);
text2 = new Text(shell, SWT.SINGLE);
ridget1 = new TextRidget();
ridget2 = new TextRidget();
ridget1.setUIControl(text1);
ridget2.setUIControl(text2);
statuslineRidget = EasyMock.createMock(IStatuslineRidget.class);
statuslineMessageMarkerViewer = new StatuslineMessageMarkerViewer(statuslineRidget);
statuslineMessageMarkerViewer.addRidget(ridget1);
statuslineMessageMarkerViewer.addRidget(ridget2);
shell.setSize(100, 100);
shell.setLocation(0, 0);
shell.open();
text1.setFocus();
}
/**
* @see junit.framework.TestCase#tearDown()
*/
@Override
protected void tearDown() throws Exception {
EasyMock.reset(statuslineRidget);
statuslineRidget = null;
ridget1 = null;
ridget2 = null;
text1.dispose();
text1 = null;
text2.dispose();
text2 = null;
shell.dispose();
shell = null;
realm.dispose();
realm = null;
super.tearDown();
}
public void testHandleFocusEvents() throws Exception {
final String testErrorMessage = "Test Error in Adapter 1";
EasyMock.expect(statuslineRidget.getMessage()).andReturn(EMPTY_STATUSLINE_MESSAGE);
statuslineRidget.error(testErrorMessage);
EasyMock.replay(statuslineRidget);
ridget1.addMarker(new ErrorMessageMarker(testErrorMessage));
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
EasyMock.expect(statuslineRidget.getMessage()).andReturn(testErrorMessage);
statuslineRidget.setMessage(EMPTY_STATUSLINE_MESSAGE);
statuslineRidget.clear();
EasyMock.replay(statuslineRidget);
text2.setFocus();
EasyMock.verify(statuslineRidget);
}
public void testHandleFocusEventsAndModifiedMessage() throws Exception {
final String testErrorMessage = "Test Error in Adapter 1";
final String testMessageBySomebodyElse = "Some message by somebody else";
final ErrorMessageMarker errorMessageMarker1 = new ErrorMessageMarker(testErrorMessage);
EasyMock.expect(statuslineRidget.getMessage()).andReturn(EMPTY_STATUSLINE_MESSAGE);
statuslineRidget.error(testErrorMessage);
EasyMock.replay(statuslineRidget);
ridget1.addMarker(errorMessageMarker1);
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
// at this point somebody else changes the status line
EasyMock.expect(statuslineRidget.getMessage()).andReturn(testMessageBySomebodyElse);
EasyMock.replay(statuslineRidget);
text2.setFocus();
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
EasyMock.expect(statuslineRidget.getMessage()).andReturn(testMessageBySomebodyElse);
statuslineRidget.error(testErrorMessage);
EasyMock.replay(statuslineRidget);
text1.setFocus();
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
EasyMock.expect(statuslineRidget.getMessage()).andReturn(testErrorMessage);
statuslineRidget.setMessage(testMessageBySomebodyElse);
statuslineRidget.clear();
EasyMock.replay(statuslineRidget);
ridget1.removeMarker(errorMessageMarker1);
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
final String anotherTestErrorMessage = "Another Test Error in Adapter 1";
EasyMock.expect(statuslineRidget.getMessage()).andReturn(testMessageBySomebodyElse);
statuslineRidget.error(anotherTestErrorMessage);
EasyMock.replay(statuslineRidget);
ridget1.addMarker(new ErrorMessageMarker(anotherTestErrorMessage));
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
EasyMock.expect(statuslineRidget.getMessage()).andReturn(anotherTestErrorMessage);
statuslineRidget.setMessage(testMessageBySomebodyElse);
statuslineRidget.clear();
EasyMock.replay(statuslineRidget);
text2.setFocus();
EasyMock.verify(statuslineRidget);
}
public void testRemoveRidget() throws Exception {
final String testErrorMessage = "Test Error in Adapter 1";
final ErrorMessageMarker errorMessageMarker1 = new ErrorMessageMarker(testErrorMessage);
EasyMock.expect(statuslineRidget.getMessage()).andReturn(EMPTY_STATUSLINE_MESSAGE);
statuslineRidget.error(testErrorMessage);
EasyMock.replay(statuslineRidget);
ridget1.addMarker(errorMessageMarker1);
text1.setFocus();
EasyMock.reset(statuslineRidget);
EasyMock.replay(statuslineRidget);
statuslineMessageMarkerViewer.removeRidget(ridget2);
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
EasyMock.expect(statuslineRidget.getMessage()).andReturn(testErrorMessage);
statuslineRidget.setMessage(EMPTY_STATUSLINE_MESSAGE);
statuslineRidget.clear();
EasyMock.replay(statuslineRidget);
statuslineMessageMarkerViewer.removeRidget(ridget1);
EasyMock.verify(statuslineRidget);
}
public void testAddAndRemoveMarkerType() throws Exception {
EasyMock.replay(statuslineRidget);
final String messageDifferentType = "TestDifferentMarkerType";
ridget2.addMarker(new MessageMarker(messageDifferentType));
statuslineMessageMarkerViewer.addMarkerType(MessageMarker.class);
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
EasyMock.expect(statuslineRidget.getMessage()).andReturn(EMPTY_STATUSLINE_MESSAGE);
statuslineRidget.clear();
statuslineRidget.setMessage(messageDifferentType);
EasyMock.replay(statuslineRidget);
text2.setFocus();
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
EasyMock.expect(statuslineRidget.getMessage()).andReturn(messageDifferentType);
statuslineRidget.setMessage(EMPTY_STATUSLINE_MESSAGE);
statuslineRidget.clear();
EasyMock.replay(statuslineRidget);
statuslineMessageMarkerViewer.removeMarkerType(MessageMarker.class);
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
EasyMock.expect(statuslineRidget.getMessage()).andReturn(EMPTY_STATUSLINE_MESSAGE);
statuslineRidget.clear();
statuslineRidget.setMessage(messageDifferentType);
EasyMock.replay(statuslineRidget);
statuslineMessageMarkerViewer.addMarkerType(MessageMarker.class);
EasyMock.verify(statuslineRidget);
}
public void testSetVisible() throws Exception {
final String testErrorMessage = "Test Error in Adapter 1";
statuslineMessageMarkerViewer.setVisible(false);
ridget1.addMarker(new ErrorMessageMarker(testErrorMessage));
EasyMock.expect(statuslineRidget.getMessage()).andReturn(EMPTY_STATUSLINE_MESSAGE);
statuslineRidget.error(testErrorMessage);
EasyMock.replay(statuslineRidget);
statuslineMessageMarkerViewer.setVisible(true);
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
EasyMock.expect(statuslineRidget.getMessage()).andReturn(testErrorMessage);
statuslineRidget.clear();
statuslineRidget.setMessage(EMPTY_STATUSLINE_MESSAGE);
EasyMock.replay(statuslineRidget);
statuslineMessageMarkerViewer.setVisible(false);
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
EasyMock.replay(statuslineRidget);
text2.setFocus();
text1.setFocus();
EasyMock.verify(statuslineRidget);
}
public void testTwoMarkers() throws Exception {
final String testErrorMessage1 = "Test Error 1 in Adapter 1";
final ErrorMessageMarker marker1 = new ErrorMessageMarker(testErrorMessage1);
statuslineMessageMarkerViewer.addMarkerType(MessageMarker.class);
final String testErrorMessage2 = "Test Error 2 in Adapter 1";
final MessageMarker marker2 = new MessageMarker(testErrorMessage2);
EasyMock.expect(statuslineRidget.getMessage()).andReturn(EMPTY_STATUSLINE_MESSAGE);
statuslineRidget.error(testErrorMessage1);
EasyMock.replay(statuslineRidget);
ridget1.addMarker(marker1);
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
statuslineRidget.error(testErrorMessage1 + " " + testErrorMessage2);
EasyMock.replay(statuslineRidget);
ridget1.addMarker(marker2);
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
statuslineRidget.clear();
statuslineRidget.setMessage(testErrorMessage2);
EasyMock.replay(statuslineRidget);
ridget1.removeMarker(marker1);
EasyMock.verify(statuslineRidget);
EasyMock.reset(statuslineRidget);
EasyMock.expect(statuslineRidget.getMessage()).andReturn(testErrorMessage2);
statuslineRidget.setMessage(EMPTY_STATUSLINE_MESSAGE);
statuslineRidget.clear();
EasyMock.replay(statuslineRidget);
ridget1.removeMarker(marker2);
EasyMock.verify(statuslineRidget);
}
}