blob: f48175416c6fc39e94b2fbcc69512bbf203961da [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2019 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Bernd Hufmann - Initial API and implementation
* Patrick Tasse - Support selection range
*******************************************************************************/
package org.eclipse.tracecompass.tmf.ui.tests.views.uml2sd.loader;
import org.eclipse.tracecompass.tmf.core.component.TmfComponent;
import org.eclipse.tracecompass.tmf.core.signal.TmfEndSynchSignal;
import org.eclipse.tracecompass.tmf.core.signal.TmfSelectionRangeUpdatedSignal;
import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
import org.eclipse.tracecompass.tmf.core.signal.TmfStartSynchSignal;
import org.eclipse.tracecompass.tmf.core.signal.TmfWindowRangeUpdatedSignal;
import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimeRange;
import org.eclipse.tracecompass.tmf.ui.tests.TmfUITestPlugin;
/**
* Class to implement that certain signals are sent as well as are sent with correct content.
*
* @author Bernd Hufmann
*/
public class Uml2SDSignalValidator extends TmfComponent implements IUml2SdSignalValidator {
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
private int fSignalDepth = 0;
private boolean fIsSelectionRangeSignalReceived = false;
private boolean fIsWindowRangeSignalReceived = false;
private boolean fIsSignalError = false;
private boolean fIsSourceError = false;
private boolean fIsCurrentTimeError = false;
private boolean fIsRangeError = false;
private Object fSource = null;
private ITmfTimestamp fCurrentTimestamp = null;
private TmfTimeRange fCurrentTimeRange = null;
// ------------------------------------------------------------------------
// Constructor
// ------------------------------------------------------------------------
/**
* Constructor
*/
public Uml2SDSignalValidator() {
}
// ------------------------------------------------------------------------
// Operations
// ------------------------------------------------------------------------
/**
* Signal handler for time synch signal.
* @param signal the signal to handle.
*/
@TmfSignalHandler
public void synchToTime(TmfSelectionRangeUpdatedSignal signal) {
// Set results so that it can be validated in the test case
setSourceError(getSource() != signal.getSource());
if (isSourceError()) {
TmfUITestPlugin.getDefault().logError("Source Error: source:" + signal.getSource() + ", expected " + getSource());
}
setCurrentTimeError(!getCurrentTime().equals(signal.getBeginTime()));
if (isCurrentTimeError()) {
TmfUITestPlugin.getDefault().logError("Current Time Error: begin time:" + signal.getBeginTime() + ", expected " + getCurrentTime());
}
setSelectionRangeSignalReceived(true);
}
/**
* Signal handler for window range signal.
* @param signal the signal to handle.
*/
@TmfSignalHandler
public void synchToTimeRange(TmfWindowRangeUpdatedSignal signal) {
// Set results so that it can be validated in the test case
if (getSource() != null) {
setSourceError(getSource() != signal.getSource());
if (isSourceError()) {
TmfUITestPlugin.getDefault().logError("Source Error: source:" + signal.getSource() + ", expected " + getSource());
}
}
if (getCurrentRange() != null) {
setRangeError(!getCurrentRange().equals(signal.getCurrentRange()));
if (isRangeError()) {
TmfUITestPlugin.getDefault().logError("Range Error: current range:" + signal.getCurrentRange() + ", expected " + getCurrentRange());
}
}
setWindowRangeSignalReceived(true);
}
/**
* Signal handler for handling start synch signal.
* @param signal the signal to handle.
*/
@TmfSignalHandler
public void startSynch(TmfStartSynchSignal signal) {
fSignalDepth++;
// make sure that the signal which is send by the loader class is not handled by the loader class
// after receiving it. i.e. it must not trigger a another signal
// Set results so that it can be validated in the test case
setSignalError(fSignalDepth > 1);
if (isSignalError()) {
TmfUITestPlugin.getDefault().logError("Signal Error: signal depth:" + fSignalDepth);
}
}
/**
* Signal handler for handling end synch signal.
* @param signal the signal to handle.
*/
@TmfSignalHandler
public void endSynch(TmfEndSynchSignal signal) {
fSignalDepth = fSignalDepth > 0 ? fSignalDepth - 1 : 0;
}
@Override
public boolean isSelectionRangeSignalReceived() {
return fIsSelectionRangeSignalReceived;
}
@Override
public void setSelectionRangeSignalReceived(boolean received) {
fIsSelectionRangeSignalReceived = received;
}
@Override
public boolean isWindowRangeSignalReceived() {
return fIsWindowRangeSignalReceived;
}
@Override
public void setWindowRangeSignalReceived(boolean received) {
fIsWindowRangeSignalReceived = received;
}
@Override
public boolean isSourceError() {
return fIsSourceError;
}
@Override
public void setSourceError(boolean fIsSourceError) {
this.fIsSourceError = fIsSourceError;
}
@Override
public boolean isCurrentTimeError() {
return fIsCurrentTimeError;
}
@Override
public void setCurrentTimeError(boolean fIsCurrentTimeError) {
this.fIsCurrentTimeError = fIsCurrentTimeError;
}
@Override
public boolean isRangeError() {
return fIsRangeError;
}
@Override
public void setRangeError(boolean fIsRangeError) {
this.fIsRangeError = fIsRangeError;
}
@Override
public boolean isSignalError() {
return fIsSignalError;
}
@Override
public void setSignalError(boolean fIsSignalError) {
this.fIsSignalError = fIsSignalError;
}
@Override
public Object getSource() {
return fSource;
}
@Override
public void setSource(Object source) {
fSource = source;
}
@Override
public ITmfTimestamp getCurrentTime() {
return fCurrentTimestamp;
}
@Override
public void setCurrentTime(ITmfTimestamp currentTime) {
fCurrentTimestamp = currentTime;
}
@Override
public TmfTimeRange getCurrentRange() {
return fCurrentTimeRange;
}
@Override
public void setCurrentRange(TmfTimeRange currentRange) {
fCurrentTimeRange = currentRange == null ? null : currentRange;
}
}