##// END OF EJS Templates
Add satic method to compute vector of in or not in ranges between...
Add satic method to compute vector of in or not in ranges between two ranges

File last commit:

r811:b41b5a9346eb
r816:97f935302b90
Show More
TestAmdaAcquisition.cpp
196 lines | 6.7 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>
#include <Variable/VariableController.h>
#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 =
// http://amda.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
namespace {
/// Path for the tests
const auto TESTS_RESOURCES_PATH
= QFileInfo{QString{AMDA_TESTS_RESOURCES_DIR}, "TestAmdaAcquisition"}.absoluteFilePath();
const auto TESTS_AMDA_REF_FILE = QString{"AmdaData-2012-01-01-12-00-00_2012-01-03-12-00-00.txt"};
template <typename T>
bool compareDataSeries(std::shared_ptr<IDataSeries> candidate, SqpRange candidateCacheRange,
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);
// auto xcValue = candidateDS->valuesData()->data();
// auto dist = std::distance(itRefs.first, itRefs.second);
// auto it = itRefs.first;
// for (auto i = 0; i < dist - 1; ++i) {
// ++it;
// qInfo() << "END:" << it->value();
// }
// qDebug() << "END:" << it->value() << xcValue.last();
return std::equal(candidateDS->cbegin(), candidateDS->cend(), itRefs.first, itRefs.second,
compareLambda);
}
else {
return false;
}
}
}
class TestAmdaAcquisition : public QObject {
Q_OBJECT
private slots:
void testAcquisition();
};
void TestAmdaAcquisition::testAcquisition()
{
Alexandre Leroux
Comments AMDA test acquisition
r777 /// @todo: update test to be compatible with AMDA v2
Add test acquisition.
r590 // READ the ref file:
auto filePath = QFileInfo{TESTS_RESOURCES_PATH, TESTS_AMDA_REF_FILE}.absoluteFilePath();
auto results = AmdaResultParser::readTxt(filePath, AmdaResultParser::ValueType::SCALAR);
auto provider = std::make_shared<AmdaProvider>();
auto timeController = std::make_unique<TimeController>();
auto varRS = QDateTime{QDate{2012, 01, 02}, QTime{2, 3, 0, 0}};
auto varRE = QDateTime{QDate{2012, 01, 02}, QTime{2, 4, 0, 0}};
auto sqpR = SqpRange{DateUtils::secondsSinceEpoch(varRS), DateUtils::secondsSinceEpoch(varRE)};
timeController->onTimeToUpdate(sqpR);
QVariantHash metaData;
metaData.insert("dataType", "scalar");
metaData.insert("xml:id", "imf(0)");
VariableController vc;
vc.setTimeController(timeController.get());
auto var = vc.createVariable("bx_gse", metaData, provider);
// 1 : Variable creation
qDebug() << " 1: TIMECONTROLLER" << timeController->dateTime();
qDebug() << " 1: RANGE " << var->range();
qDebug() << " 1: CACHERANGE" << var->cacheRange();
// wait for 10 sec before asking next request toi permit asynchrone process to finish.
auto timeToWaitMs = 10000;
QEventLoop loop;
QTimer::singleShot(timeToWaitMs, &loop, &QEventLoop::quit);
loop.exec();
// Tests on acquisition operation
int count = 1;
auto requestDataLoading = [&vc, var, timeToWaitMs, results, &count](auto tStart, auto tEnd) {
++count;
auto nextSqpR
= SqpRange{DateUtils::secondsSinceEpoch(tStart), DateUtils::secondsSinceEpoch(tEnd)};
Implémentation timewidget
r811 vc.onRequestDataLoading(QVector<std::shared_ptr<Variable> >{} << var, nextSqpR, true);
Add test acquisition.
r590
QEventLoop loop;
QTimer::singleShot(timeToWaitMs, &loop, &QEventLoop::quit);
loop.exec();
Next range of a variable synchronized is now computed using:...
r627 qInfo() << count << "RANGE " << var->range();
qInfo() << count << "CACHERANGE" << var->cacheRange();
Add test acquisition.
r590
QCOMPARE(var->range().m_TStart, nextSqpR.m_TStart);
QCOMPARE(var->range().m_TEnd, nextSqpR.m_TEnd);
// Verify dataserie
QVERIFY(compareDataSeries<ScalarSeries>(var->dataSeries(), var->cacheRange(), results));
};
// 2 : pan (jump) left for one hour
auto nextVarRS = QDateTime{QDate{2012, 01, 02}, QTime{2, 1, 0, 0}};
auto nextVarRE = QDateTime{QDate{2012, 01, 02}, QTime{2, 2, 0, 0}};
Alexandre Leroux
Comments AMDA test acquisition
r777 // requestDataLoading(nextVarRS, nextVarRE);
Add test acquisition.
r590
// 3 : pan (jump) right for one hour
nextVarRS = QDateTime{QDate{2012, 01, 02}, QTime{2, 5, 0, 0}};
nextVarRE = QDateTime{QDate{2012, 01, 02}, QTime{2, 6, 0, 0}};
Alexandre Leroux
Comments AMDA test acquisition
r777 // requestDataLoading(nextVarRS, nextVarRE);
Add test acquisition.
r590
// 4 : pan (overlay) right for 30 min
nextVarRS = QDateTime{QDate{2012, 01, 02}, QTime{2, 5, 30, 0}};
nextVarRE = QDateTime{QDate{2012, 01, 02}, QTime{2, 6, 30, 0}};
// requestDataLoading(nextVarRS, nextVarRE);
// 5 : pan (overlay) left for 30 min
nextVarRS = QDateTime{QDate{2012, 01, 02}, QTime{2, 5, 0, 0}};
nextVarRE = QDateTime{QDate{2012, 01, 02}, QTime{2, 6, 0, 0}};
// requestDataLoading(nextVarRS, nextVarRE);
// 6 : pan (overlay) left for 30 min - BIS
nextVarRS = QDateTime{QDate{2012, 01, 02}, QTime{2, 4, 30, 0}};
nextVarRE = QDateTime{QDate{2012, 01, 02}, QTime{2, 5, 30, 0}};
// requestDataLoading(nextVarRS, nextVarRE);
// 7 : Zoom in Inside 20 min range
nextVarRS = QDateTime{QDate{2012, 01, 02}, QTime{2, 4, 50, 0}};
nextVarRE = QDateTime{QDate{2012, 01, 02}, QTime{2, 5, 10, 0}};
// requestDataLoading(nextVarRS, nextVarRE);
// 8 : Zoom out Inside 2 hours range
nextVarRS = QDateTime{QDate{2012, 01, 02}, QTime{2, 4, 0, 0}};
nextVarRE = QDateTime{QDate{2012, 01, 02}, QTime{2, 6, 0, 0}};
// requestDataLoading(nextVarRS, nextVarRE);
// Close the app after 10 sec
QTimer::singleShot(timeToWaitMs, &loop, &QEventLoop::quit);
loop.exec();
}
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"