/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
* \author Teemu Murtola <teemu.murtola@gmail.com>
* \ingroup module_analysisdata
*/
+#include "gmxpre.h"
+
#include "mock_datamodule.h"
#include <gmock/gmock.h>
* Callback used to check frame finish against reference data.
*
* Called to check parameters and order of calls to frameFinished().
- * \a frameIndex_ is incremented here.
*/
void finishReferenceFrame(const AnalysisDataFrameHeader &header);
+ /*! \brief
+ * Callback used to check serial frame finish with reference data.
+ *
+ * Called to check parameters and order of calls to
+ * frameFinishedSerial().
+ * \a frameIndex_ is incremented here.
+ */
+ void finishReferenceFrameSerial(int frameIndex);
/*! \brief
* Reference data checker to use for checking frames.
{
EXPECT_TRUE(frameChecker_.get() != NULL);
EXPECT_EQ(frameIndex_, header.index());
- ++frameIndex_;
frameChecker_.reset();
}
+void
+MockAnalysisDataModule::Impl::finishReferenceFrameSerial(int frameIndex)
+{
+ EXPECT_TRUE(frameChecker_.get() == NULL);
+ EXPECT_EQ(frameIndex_, frameIndex);
+ ++frameIndex_;
+}
+
+
/********************************************************************
* MockAnalysisDataModule
*/
* Functor for checking data frame header against static test input data.
*
* This functor is designed to be invoked as a handled for
- * AnalysisDataModuleInterface::frameStarted().
+ * IAnalysisDataModule::frameStarted().
*/
class StaticDataFrameHeaderChecker
{
* Functor for checking data frame points against static test input data.
*
* This functor is designed to be invoked as a handled for
- * AnalysisDataModuleInterface::pointsAdded().
+ * IAnalysisDataModule::pointsAdded().
*/
class StaticDataPointsChecker
{
* Functor for requesting data storage.
*
* This functor is designed to be invoked as a handled for
- * AnalysisDataModuleInterface::dataStarted().
+ * IAnalysisDataModule::dataStarted().
*/
class DataStorageRequester
{
* data.
*
* This functor is designed to be invoked as a handled for
- * AnalysisDataModuleInterface::pointsAdded().
+ * IAnalysisDataModule::pointsAdded().
*/
class StaticDataPointsStorageChecker
{
EXPECT_CALL(*this, parallelDataStarted(source, _))
.WillOnce(Return(true));
::testing::ExpectationSet framesFinished;
+ ::testing::Expectation prevFinish;
for (int row = 0; row < data.frameCount(); ++row)
{
::testing::InSequence frameSequence;
EXPECT_CALL(*this, pointsAdded(Property(&AnalysisDataPointSetRef::frameIndex, row)))
.WillOnce(Invoke(checker));
}
- framesFinished +=
- EXPECT_CALL(*this, frameFinished(Property(&AnalysisDataFrameHeader::index, row)))
- .WillOnce(Invoke(StaticDataFrameHeaderChecker(&frame)));
+ EXPECT_CALL(*this, frameFinished(Property(&AnalysisDataFrameHeader::index, row)))
+ .WillOnce(Invoke(StaticDataFrameHeaderChecker(&frame)));
+ ::testing::Expectation finish;
+ if (row > 0)
+ {
+ finish = EXPECT_CALL(*this, frameFinishedSerial(row))
+ .After(prevFinish);
+ }
+ else
+ {
+ finish = EXPECT_CALL(*this, frameFinishedSerial(row));
+ }
+ framesFinished += finish;
+ prevFinish = finish;
}
EXPECT_CALL(*this, dataFinished())
.After(framesFinished);
}
EXPECT_CALL(*this, frameFinished(_))
.WillOnce(Invoke(StaticDataFrameHeaderChecker(&frame)));
+ EXPECT_CALL(*this, frameFinishedSerial(row));
}
EXPECT_CALL(*this, dataFinished());
}
}
EXPECT_CALL(*this, frameFinished(_))
.WillOnce(Invoke(StaticDataFrameHeaderChecker(&frame)));
+ EXPECT_CALL(*this, frameFinishedSerial(row));
}
EXPECT_CALL(*this, dataFinished());
}
}
EXPECT_CALL(*this, frameFinished(_))
.WillOnce(Invoke(StaticDataFrameHeaderChecker(&frame)));
+ EXPECT_CALL(*this, frameFinishedSerial(row));
}
EXPECT_CALL(*this, dataFinished());
}
Expectation frameFinish = EXPECT_CALL(*this, frameFinished(_))
.After(dataStart)
.WillRepeatedly(Invoke(impl_.get(), &Impl::finishReferenceFrame));
+ Expectation frameFinishSerial = EXPECT_CALL(*this, frameFinishedSerial(_))
+ .After(dataStart)
+ .WillRepeatedly(Invoke(impl_.get(), &Impl::finishReferenceFrameSerial));
EXPECT_CALL(*this, dataFinished())
- .After(frameStart, pointsAdd, frameFinish);
+ .After(frameStart, pointsAdd, frameFinish, frameFinishSerial);
}
} // namespace test