Skip to content

Commit

Permalink
ENH: Integrate Python testing framework with ParaView. If testing wit…
Browse files Browse the repository at this point in the history
…h python

      is enabled, the play/record menus/dialogs give python as an option.

      It currently can query any QObject property and in python you can compare
      it to a known value.  Just throw an exception if the test fails.
      It can also take snapshots of arbitrary widgets and compare them to
      baselines.

      Also added a test that loads a histogram and takes a snapshot of the
      histogram widget and compares it to a baseline.
  • Loading branch information
Clinton Stimpson committed Oct 20, 2006
1 parent fe6b1ed commit 211df6b
Show file tree
Hide file tree
Showing 56 changed files with 271 additions and 159 deletions.
12 changes: 10 additions & 2 deletions CMakeLists.txt
@@ -1,11 +1,13 @@

PROJECT(QtTesting)

#OPTION(QT_TESTING_WITH_PYTHON "Build Testing with Python" ON)
SET(QT_TESTING_WITH_PYTHON OFF)
OPTION(QT_TESTING_WITH_PYTHON "Build Testing with Python" ON)
SET(QT_TESTING_WITH_XML ON)

IF(QT_TESTING_WITH_PYTHON)

INCLUDE(${CMAKE_ROOT}/Modules/FindPythonLibs.cmake)

INCLUDE_DIRECTORIES(
${PYTHON_INCLUDE_PATH}
)
Expand Down Expand Up @@ -40,6 +42,7 @@ QT4_WRAP_CPP(MOC_BUILT_SOURCES
pqComboBoxEventTranslator.h
pqDoubleSpinBoxEventTranslator.h
pqEventDispatcher.h
pqEventObserver.h
pqEventPlayer.h
pqEventSource.h
pqEventTranslator.h
Expand All @@ -48,6 +51,7 @@ QT4_WRAP_CPP(MOC_BUILT_SOURCES
pqRecordEventsDialog.h
pqSpinBoxEventTranslator.h
pqStdoutEventObserver.h
pqTestUtility.h
pqThreadedEventSource.h
pqTabBarEventTranslator.h
pqWidgetEventTranslator.h
Expand Down Expand Up @@ -91,6 +95,8 @@ ADD_LIBRARY(QtTesting
pqDoubleSpinBoxEventTranslator.h
pqEventDispatcher.cxx
pqEventDispatcher.h
pqEventObserver.cxx
pqEventObserver.h
pqEventPlayer.cxx
pqEventPlayer.h
pqEventTranslator.cxx
Expand All @@ -112,6 +118,8 @@ ADD_LIBRARY(QtTesting
pqTabBarEventPlayer.h
pqTabBarEventTranslator.cxx
pqTabBarEventTranslator.h
pqTestUtility.cxx
pqTestUtility.h
pqThreadedEventSource.cxx
pqThreadedEventSource.h
pqWidgetEventPlayer.h
Expand Down
3 changes: 2 additions & 1 deletion pqAbstractActivateEventPlayer.cxx
Expand Up @@ -41,7 +41,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <QtTest>
#include <QtDebug>

pqAbstractActivateEventPlayer::pqAbstractActivateEventPlayer()
pqAbstractActivateEventPlayer::pqAbstractActivateEventPlayer(QObject * p)
: pqWidgetEventPlayer(p)
{
}

Expand Down
2 changes: 1 addition & 1 deletion pqAbstractActivateEventPlayer.h
Expand Up @@ -44,7 +44,7 @@ class pqAbstractActivateEventPlayer :
public pqWidgetEventPlayer
{
public:
pqAbstractActivateEventPlayer();
pqAbstractActivateEventPlayer(QObject* p = 0);

bool playEvent(QObject* Object, const QString& Command, const QString& Arguments, bool& Error);

Expand Down
3 changes: 2 additions & 1 deletion pqAbstractBooleanEventPlayer.cxx
Expand Up @@ -35,7 +35,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <QAbstractButton>
#include <QtDebug>

pqAbstractBooleanEventPlayer::pqAbstractBooleanEventPlayer()
pqAbstractBooleanEventPlayer::pqAbstractBooleanEventPlayer(QObject* p)
: pqWidgetEventPlayer(p)
{
}

Expand Down
2 changes: 1 addition & 1 deletion pqAbstractBooleanEventPlayer.h
Expand Up @@ -44,7 +44,7 @@ class pqAbstractBooleanEventPlayer :
public pqWidgetEventPlayer
{
public:
pqAbstractBooleanEventPlayer();
pqAbstractBooleanEventPlayer(QObject* p=0);

bool playEvent(QObject* Object, const QString& Command, const QString& Arguments, bool& Error);

Expand Down
3 changes: 2 additions & 1 deletion pqAbstractButtonEventTranslator.cxx
Expand Up @@ -40,7 +40,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#include <iostream>

pqAbstractButtonEventTranslator::pqAbstractButtonEventTranslator()
pqAbstractButtonEventTranslator::pqAbstractButtonEventTranslator(QObject* p)
: pqWidgetEventTranslator(p)
{
}

Expand Down
2 changes: 1 addition & 1 deletion pqAbstractButtonEventTranslator.h
Expand Up @@ -49,7 +49,7 @@ class pqAbstractButtonEventTranslator :
Q_OBJECT

public:
pqAbstractButtonEventTranslator();
pqAbstractButtonEventTranslator(QObject* p=0);

virtual bool translateEvent(QObject* Object, QEvent* Event, bool& Error);

Expand Down
3 changes: 2 additions & 1 deletion pqAbstractDoubleEventPlayer.cxx
Expand Up @@ -35,7 +35,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <QDoubleSpinBox>
#include <QtDebug>

pqAbstractDoubleEventPlayer::pqAbstractDoubleEventPlayer()
pqAbstractDoubleEventPlayer::pqAbstractDoubleEventPlayer(QObject* p)
: pqWidgetEventPlayer(p)
{
}

Expand Down
2 changes: 1 addition & 1 deletion pqAbstractDoubleEventPlayer.h
Expand Up @@ -45,7 +45,7 @@ class pqAbstractDoubleEventPlayer :
public pqWidgetEventPlayer
{
public:
pqAbstractDoubleEventPlayer();
pqAbstractDoubleEventPlayer(QObject* p=0);

bool playEvent(QObject* Object, const QString& Command, const QString& Arguments, bool& Error);

Expand Down
3 changes: 2 additions & 1 deletion pqAbstractIntEventPlayer.cxx
Expand Up @@ -36,7 +36,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <QSpinBox>
#include <QtDebug>

pqAbstractIntEventPlayer::pqAbstractIntEventPlayer()
pqAbstractIntEventPlayer::pqAbstractIntEventPlayer(QObject* p)
: pqWidgetEventPlayer(p)
{
}

Expand Down
2 changes: 1 addition & 1 deletion pqAbstractIntEventPlayer.h
Expand Up @@ -45,7 +45,7 @@ class pqAbstractIntEventPlayer :
public pqWidgetEventPlayer
{
public:
pqAbstractIntEventPlayer();
pqAbstractIntEventPlayer(QObject* p=0);

bool playEvent(QObject* Object, const QString& Command, const QString& Arguments, bool& Error);

Expand Down
3 changes: 2 additions & 1 deletion pqAbstractItemViewEventPlayer.cxx
Expand Up @@ -62,7 +62,8 @@ static QModelIndex GetIndex(QAbstractItemView& View, const QString& Name)
///////////////////////////////////////////////////////////////////////////////
// pqAbstractItemViewEventPlayer

pqAbstractItemViewEventPlayer::pqAbstractItemViewEventPlayer()
pqAbstractItemViewEventPlayer::pqAbstractItemViewEventPlayer(QObject* p)
: pqWidgetEventPlayer(p)
{
}

Expand Down
2 changes: 1 addition & 1 deletion pqAbstractItemViewEventPlayer.h
Expand Up @@ -45,7 +45,7 @@ class pqAbstractItemViewEventPlayer :
public pqWidgetEventPlayer
{
public:
pqAbstractItemViewEventPlayer();
pqAbstractItemViewEventPlayer(QObject* p=0);

bool playEvent(QObject* Object, const QString& Command, const QString& Arguments, bool& Error);

Expand Down
3 changes: 2 additions & 1 deletion pqAbstractItemViewEventTranslator.cxx
Expand Up @@ -51,7 +51,8 @@ static const QString str(const QModelIndex& index)
return result;
}

pqAbstractItemViewEventTranslator::pqAbstractItemViewEventTranslator() :
pqAbstractItemViewEventTranslator::pqAbstractItemViewEventTranslator(QObject* p)
: pqWidgetEventTranslator(p),
CurrentObject(0)
{
}
Expand Down
2 changes: 1 addition & 1 deletion pqAbstractItemViewEventTranslator.h
Expand Up @@ -51,7 +51,7 @@ class pqAbstractItemViewEventTranslator :
Q_OBJECT

public:
pqAbstractItemViewEventTranslator();
pqAbstractItemViewEventTranslator(QObject* p=0);

virtual bool translateEvent(QObject* Object, QEvent* Event, bool& Error);

Expand Down
3 changes: 2 additions & 1 deletion pqAbstractSliderEventTranslator.cxx
Expand Up @@ -35,7 +35,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <QAbstractSlider>
#include <QEvent>

pqAbstractSliderEventTranslator::pqAbstractSliderEventTranslator() :
pqAbstractSliderEventTranslator::pqAbstractSliderEventTranslator(QObject* p)
: pqWidgetEventTranslator(p),
CurrentObject(0)
{
}
Expand Down
2 changes: 1 addition & 1 deletion pqAbstractSliderEventTranslator.h
Expand Up @@ -47,7 +47,7 @@ class pqAbstractSliderEventTranslator :
Q_OBJECT

public:
pqAbstractSliderEventTranslator();
pqAbstractSliderEventTranslator(QObject* p=0);

virtual bool translateEvent(QObject* Object, QEvent* Event, bool& Error);

Expand Down
3 changes: 2 additions & 1 deletion pqAbstractStringEventPlayer.cxx
Expand Up @@ -36,7 +36,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <QLineEdit>
#include <QtDebug>

pqAbstractStringEventPlayer::pqAbstractStringEventPlayer()
pqAbstractStringEventPlayer::pqAbstractStringEventPlayer(QObject* p)
: pqWidgetEventPlayer(p)
{
}

Expand Down
2 changes: 1 addition & 1 deletion pqAbstractStringEventPlayer.h
Expand Up @@ -45,7 +45,7 @@ class pqAbstractStringEventPlayer :
public pqWidgetEventPlayer
{
public:
pqAbstractStringEventPlayer();
pqAbstractStringEventPlayer(QObject* p=0);

bool playEvent(QObject* Object, const QString& Command, const QString& Arguments, bool& Error);

Expand Down
3 changes: 2 additions & 1 deletion pqBasicWidgetEventPlayer.cxx
Expand Up @@ -37,7 +37,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <QWidget>
#include <QtDebug>

pqBasicWidgetEventPlayer::pqBasicWidgetEventPlayer()
pqBasicWidgetEventPlayer::pqBasicWidgetEventPlayer(QObject* p)
: pqWidgetEventPlayer(p)
{
}

Expand Down
2 changes: 1 addition & 1 deletion pqBasicWidgetEventPlayer.h
Expand Up @@ -44,7 +44,7 @@ class pqBasicWidgetEventPlayer :
public pqWidgetEventPlayer
{
public:
pqBasicWidgetEventPlayer();
pqBasicWidgetEventPlayer(QObject* p=0);

bool playEvent(QObject* Object, const QString& Command, const QString& Arguments, bool& Error);

Expand Down
3 changes: 2 additions & 1 deletion pqBasicWidgetEventTranslator.cxx
Expand Up @@ -35,7 +35,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <QEvent>
#include <QWidget>

pqBasicWidgetEventTranslator::pqBasicWidgetEventTranslator()
pqBasicWidgetEventTranslator::pqBasicWidgetEventTranslator(QObject* p)
: pqWidgetEventTranslator(p)
{
}

Expand Down
2 changes: 1 addition & 1 deletion pqBasicWidgetEventTranslator.h
Expand Up @@ -47,7 +47,7 @@ class pqBasicWidgetEventTranslator :
Q_OBJECT

public:
pqBasicWidgetEventTranslator();
pqBasicWidgetEventTranslator(QObject* p=0);
~pqBasicWidgetEventTranslator();

virtual bool translateEvent(QObject* Object, QEvent* Event, bool& Error);
Expand Down
3 changes: 2 additions & 1 deletion pqComboBoxEventTranslator.cxx
Expand Up @@ -35,7 +35,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <QComboBox>
#include <QEvent>

pqComboBoxEventTranslator::pqComboBoxEventTranslator() :
pqComboBoxEventTranslator::pqComboBoxEventTranslator(QObject* p)
: pqWidgetEventTranslator(p),
CurrentObject(0)
{
}
Expand Down
2 changes: 1 addition & 1 deletion pqComboBoxEventTranslator.h
Expand Up @@ -47,7 +47,7 @@ class pqComboBoxEventTranslator :
Q_OBJECT

public:
pqComboBoxEventTranslator();
pqComboBoxEventTranslator(QObject* p=0);

virtual bool translateEvent(QObject* Object, QEvent* Event, bool& Error);

Expand Down
3 changes: 2 additions & 1 deletion pqDoubleSpinBoxEventTranslator.cxx
Expand Up @@ -35,7 +35,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <QDoubleSpinBox>
#include <QEvent>

pqDoubleSpinBoxEventTranslator::pqDoubleSpinBoxEventTranslator() :
pqDoubleSpinBoxEventTranslator::pqDoubleSpinBoxEventTranslator(QObject* p)
: pqWidgetEventTranslator(p),
CurrentObject(0)
{
}
Expand Down
2 changes: 1 addition & 1 deletion pqDoubleSpinBoxEventTranslator.h
Expand Up @@ -47,7 +47,7 @@ class pqDoubleSpinBoxEventTranslator :
Q_OBJECT

public:
pqDoubleSpinBoxEventTranslator();
pqDoubleSpinBoxEventTranslator(QObject* p=0);

virtual bool translateEvent(QObject* Object, QEvent* Event, bool& Error);

Expand Down
14 changes: 12 additions & 2 deletions pqEventDispatcher.cxx
Expand Up @@ -127,19 +127,29 @@ void pqEventDispatcher::playNextEvent()
// block signals as some event sources may interact with the event loop
this->blockSignals(true);

bool result = this->Implementation->Source->getNextEvent(
int result = this->Implementation->Source->getNextEvent(
object, command, arguments);
this->blockSignals(false);

if(!result)
if(result == pqEventSource::DONE)
{
this->stopPlayback();
emit this->succeeded();
return;
}
else if(result == pqEventSource::FAILURE)
{
this->stopPlayback();
emit this->failed();
return;
}

bool error = false;
// block signals as some event sources may interact with the event loop, as
// well as some players interact with the event loop
this->blockSignals(true);
this->Implementation->Player->playEvent(object, command, arguments, error);
this->blockSignals(false);
if(error)
{
this->stopPlayback();
Expand Down
9 changes: 4 additions & 5 deletions pqEventPlayer.cxx
Expand Up @@ -45,35 +45,33 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <QApplication>
#include <QWidget>
#include <QtDebug>
#include <QAbstractEventDispatcher>

pqEventPlayer::pqEventPlayer()
{
}

pqEventPlayer::~pqEventPlayer()
{
for(int i = 0; i != this->Players.size(); ++i)
delete this->Players[i];
}

void pqEventPlayer::addDefaultWidgetEventPlayers()
{
addWidgetEventPlayer(new pqBasicWidgetEventPlayer());
addWidgetEventPlayer(new pqAbstractActivateEventPlayer());
addWidgetEventPlayer(new pqAbstractBooleanEventPlayer());
addWidgetEventPlayer(new pqAbstractDoubleEventPlayer());
addWidgetEventPlayer(new pqAbstractIntEventPlayer());
addWidgetEventPlayer(new pqAbstractItemViewEventPlayer());
addWidgetEventPlayer(new pqAbstractStringEventPlayer());
addWidgetEventPlayer(new pqTabBarEventPlayer());
addWidgetEventPlayer(new pqBasicWidgetEventPlayer());
}

void pqEventPlayer::addWidgetEventPlayer(pqWidgetEventPlayer* Player)
{
if(Player)
{
this->Players.push_back(Player);
this->Players.push_front(Player);
Player->setParent(this);
}
}

Expand Down Expand Up @@ -123,3 +121,4 @@ void pqEventPlayer::playEvent(
// The event was handled successfully ...
Error = false;
}

0 comments on commit 211df6b

Please sign in to comment.