##// END OF EJS Templates
Made more consistent plugin install path with CMake, removed useless plugin lookup path...
Made more consistent plugin install path with CMake, removed useless plugin lookup path Signed-off-by: Alexis Jeandet <alexis.jeandet@member.fsf.org>

File last commit:

r1348:ea7d1a66f4ab
r1398:728acc3a845d
Show More
TestAmdaAcquisition.cpp
164 lines | 5.9 KiB | text/x-c | CppLexer
/ plugins / amda / tests / TestAmdaAcquisition.cpp
Add test acquisition.
r590 #include "AmdaProvider.h"
#include "AmdaResultParser.h"
#include "SqpApplication.h"
#include <Data/DataSeries.h>
#include <Data/IDataSeries.h>
#include <Data/ScalarSeries.h>
#include <Time/TimeController.h>
#include <Variable/Variable.h>
All the codebase is modified to build with new Variable Controller...
r1348 #include <Variable/VariableController2.h>
Add test acquisition.
r590
#include <QObject>
#include <QtTest>
#include <memory>
// TEST with REF:
// AmdaData-2012-01-01-12-00-00_2012-01-03-12-00-00
// imf(0) - Type : Local Parameter @ CDPP/AMDA -
// Name : bx_gse - Units : nT - Size : 1 -
// Frame : GSE - Mission : ACE -
// Instrument : MFI - Dataset : mfi_final-prelim
// REFERENCE DOWNLOAD FILE =
Update TestAmdaAcquisition for TDD
r829 // http://amdatest.irap.omp.eu/php/rest/getParameter.php?startTime=2012-01-01T12:00:00&stopTime=2012-01-03T12:00:00&parameterID=imf(0)&outputFormat=ASCII&timeFormat=ISO8601&gzip=0
Add test acquisition.
r590
namespace {
/// Path for the tests
const auto TESTS_RESOURCES_PATH
= QFileInfo{QString{AMDA_TESTS_RESOURCES_DIR}, "TestAmdaAcquisition"}.absoluteFilePath();
Update TestAmdaAcquisition for TDD
r829 /// Delay after each operation on the variable before validating it (in ms)
const auto OPERATION_DELAY = 10000;
Add test acquisition.
r590
template <typename T>
Renamed SqpRange to DateTimeRange, introduced VariableController2 to...
r1346 bool compareDataSeries(std::shared_ptr<IDataSeries> candidate, DateTimeRange candidateCacheRange,
Add test acquisition.
r590 std::shared_ptr<IDataSeries> reference)
{
auto compareLambda = [](const auto &it1, const auto &it2) {
return (it1.x() == it2.x()) && (it1.value() == it2.value());
};
auto candidateDS = std::dynamic_pointer_cast<T>(candidate);
auto referenceDS = std::dynamic_pointer_cast<T>(reference);
if (candidateDS && referenceDS) {
auto itRefs
Alexandre Leroux
Uses variable range in graph
r615 = referenceDS->xAxisRange(candidateCacheRange.m_TStart, candidateCacheRange.m_TEnd);
Add test acquisition.
r590 qDebug() << " DISTANCE" << std::distance(candidateDS->cbegin(), candidateDS->cend())
<< std::distance(itRefs.first, itRefs.second);
return std::equal(candidateDS->cbegin(), candidateDS->cend(), itRefs.first, itRefs.second,
compareLambda);
}
else {
return false;
}
}
}
class TestAmdaAcquisition : public QObject {
Q_OBJECT
private slots:
Update TestAmdaAcquisition for TDD
r829 /// Input data for @sa testAcquisition()
void testAcquisition_data();
Add test acquisition.
r590 void testAcquisition();
};
Update TestAmdaAcquisition for TDD
r829 void TestAmdaAcquisition::testAcquisition_data()
Add test acquisition.
r590 {
Update TestAmdaAcquisition for TDD
r829 // ////////////// //
// Test structure //
// ////////////// //
Add test acquisition.
r590
Update TestAmdaAcquisition for TDD
r829 QTest::addColumn<QString>("dataFilename"); // File containing expected data of acquisitions
Renamed SqpRange to DateTimeRange, introduced VariableController2 to...
r1346 QTest::addColumn<DateTimeRange>("initialRange"); // First acquisition
QTest::addColumn<std::vector<DateTimeRange> >("operations"); // Acquisitions to make
Add test acquisition.
r590
Update TestAmdaAcquisition for TDD
r829 // ////////// //
// Test cases //
// ////////// //
Add test acquisition.
r590
Update TestAmdaAcquisition for TDD
r829 auto dateTime = [](int year, int month, int day, int hours, int minutes, int seconds) {
return DateUtils::secondsSinceEpoch(
QDateTime{{year, month, day}, {hours, minutes, seconds}, Qt::UTC});
Add test acquisition.
r590 };
Update TestAmdaAcquisition for TDD
r829 QTest::newRow("amda")
<< "AmdaData-2012-01-01-12-00-00_2012-01-03-12-00-00.txt"
Renamed SqpRange to DateTimeRange, introduced VariableController2 to...
r1346 << DateTimeRange{dateTime(2012, 1, 2, 2, 3, 0), dateTime(2012, 1, 2, 2, 4, 0)}
<< std::vector<DateTimeRange>{
Update TestAmdaAcquisition for TDD
r829 // 2 : pan (jump) left for two min
Renamed SqpRange to DateTimeRange, introduced VariableController2 to...
r1346 DateTimeRange{dateTime(2012, 1, 2, 2, 1, 0), dateTime(2012, 1, 2, 2, 2, 0)},
Update TestAmdaAcquisition for TDD
r829 // 3 : pan (jump) right for four min
Renamed SqpRange to DateTimeRange, introduced VariableController2 to...
r1346 DateTimeRange{dateTime(2012, 1, 2, 2, 5, 0), dateTime(2012, 1, 2, 2, 6, 0)},
Update TestAmdaAcquisition for TDD
r829 // 4 : pan (overlay) right for 30 sec
/*SqpRange{dateTime(2012, 1, 2, 2, 5, 30), dateTime(2012, 1, 2, 2, 6, 30)},
// 5 : pan (overlay) left for 30 sec
SqpRange{dateTime(2012, 1, 2, 2, 5, 0), dateTime(2012, 1, 2, 2, 6, 0)},
// 6 : pan (overlay) left for 30 sec - BIS
SqpRange{dateTime(2012, 1, 2, 2, 4, 30), dateTime(2012, 1, 2, 2, 5, 30)},
// 7 : Zoom in Inside 20 sec range
SqpRange{dateTime(2012, 1, 2, 2, 4, 50), dateTime(2012, 1, 2, 2, 5, 10)},
// 8 : Zoom out Inside 20 sec range
SqpRange{dateTime(2012, 1, 2, 2, 4, 30), dateTime(2012, 1, 2, 2, 5, 30)}*/};
}
Add test acquisition.
r590
Update TestAmdaAcquisition for TDD
r829 void TestAmdaAcquisition::testAcquisition()
{
/// @todo: update test to be compatible with AMDA v2
Add test acquisition.
r590
Update TestAmdaAcquisition for TDD
r829 // Retrieves data file
QFETCH(QString, dataFilename);
auto filePath = QFileInfo{TESTS_RESOURCES_PATH, dataFilename}.absoluteFilePath();
Alexandre Leroux
Move the AMDA data type to a type accessible from core
r1278 auto results = AmdaResultParser::readTxt(filePath, DataSeriesType::SCALAR);
Add test acquisition.
r590
Update TestAmdaAcquisition for TDD
r829 /// Lambda used to validate a variable at each step
Renamed SqpRange to DateTimeRange, introduced VariableController2 to...
r1346 auto validateVariable = [results](std::shared_ptr<Variable> variable, const DateTimeRange &range) {
Update TestAmdaAcquisition for TDD
r829 // Checks that the variable's range has changed
qInfo() << tr("Compare var range vs range") << variable->range() << range;
QCOMPARE(variable->range(), range);
Add test acquisition.
r590
Update TestAmdaAcquisition for TDD
r829 // Checks the variable's data series
QVERIFY(compareDataSeries<ScalarSeries>(variable->dataSeries(), variable->cacheRange(),
results));
qInfo() << "\n";
};
Add test acquisition.
r590
Update TestAmdaAcquisition for TDD
r829 // Creates variable
Renamed SqpRange to DateTimeRange, introduced VariableController2 to...
r1346 QFETCH(DateTimeRange, initialRange);
Some WIP refactoring, trying to remove TimeController object...
r1345 sqpApp->timeController().setDateTimeRange(initialRange);
Update TestAmdaAcquisition for TDD
r829 auto provider = std::make_shared<AmdaProvider>();
auto variable = sqpApp->variableController().createVariable(
Some WIP refactoring, trying to remove TimeController object...
r1345 "bx_gse", {{"dataType", "scalar"}, {"xml:id", "imf(0)"}}, provider, initialRange);
Add test acquisition.
r590
Update TestAmdaAcquisition for TDD
r829 QTest::qWait(OPERATION_DELAY);
validateVariable(variable, initialRange);
Add test acquisition.
r590
Update TestAmdaAcquisition for TDD
r829 // Makes operations on the variable
Renamed SqpRange to DateTimeRange, introduced VariableController2 to...
r1346 QFETCH(std::vector<DateTimeRange>, operations);
Update TestAmdaAcquisition for TDD
r829 for (const auto &operation : operations) {
// Asks request on the variable and waits during its execution
All the codebase is modified to build with new Variable Controller...
r1348 sqpApp->variableController().changeRange({variable}, operation);
Add test acquisition.
r590
Update TestAmdaAcquisition for TDD
r829 QTest::qWait(OPERATION_DELAY);
validateVariable(variable, operation);
}
Add test acquisition.
r590 }
int main(int argc, char *argv[])
{
SqpApplication app(argc, argv);
app.setAttribute(Qt::AA_Use96Dpi, true);
TestAmdaAcquisition tc;
QTEST_SET_MAIN_SOURCE_PATH
return QTest::qExec(&tc, argc, argv);
}
// QTEST_MAIN(TestAmdaAcquisition)
#include "TestAmdaAcquisition.moc"