##// END OF EJS Templates
Some refac for new PySide2 bindings...
Some refac for new PySide2 bindings - made DataSourceItem iterable - added some tree print function for debug - fixed minor bug on DataSourceContorller which prevented from adding products in more than one call per provider - improved IDataProvider for future refac Signed-off-by: Alexis Jeandet <alexis.jeandet@member.fsf.org>

File last commit:

r67:a8a4e48c21af
r92:9ff5f48e3d71
Show More
TestVariableController2WithSync.cpp
138 lines | 4.6 KiB | text/x-c | CppLexer
/ tests / Variable / TestVariableController2WithSync.cpp
#include <Common/containers.h>
#include <Data/DataProviderParameters.h>
#include <Data/DateTimeRange.h>
#include <Data/IDataProvider.h>
#include <Data/ScalarTimeSerie.h>
#include <QObject>
#include <QtTest>
#include <TestUtils/TestProviders.h>
#include <Variable/VariableController2.h>
#include <algorithm>
#include <cmath>
#include <numeric>
#define TEST_VC2_FIXTURE(slope) \
VariableController2 vc; \
auto provider = std::make_shared<SimpleRange<slope>>();
#define TEST_VC2_CREATE_DEFAULT_VARS(name1, name2, name3) \
auto range = DateTimeRange::fromDateTime(QDate(2018, 8, 7), QTime(14, 00), \
QDate(2018, 8, 7), QTime(16, 00)); \
auto name1 = vc.createVariable("name1", {}, provider, range); \
while(!vc.isReady(name1)) \
QCoreApplication::processEvents(); \
auto name2 = vc.cloneVariable(name1); \
auto name3 = vc.cloneVariable(name2); \
vc.synchronize(name1, name2); \
while(!vc.isReady(name1)) \
QCoreApplication::processEvents();
class TestVariableController2WithSync : public QObject
{
Q_OBJECT
public:
explicit TestVariableController2WithSync(QObject* parent = nullptr)
: QObject(parent)
{}
signals:
private slots:
void initTestCase() {}
void cleanupTestCase() {}
void testCreateVariable()
{
TEST_VC2_FIXTURE(2);
auto range = DateTimeRange::fromDateTime(QDate(2018, 8, 7), QTime(14, 00),
QDate(2018, 8, 7), QTime(16, 00));
bool callbackCalled = false;
connect(&vc, &VariableController2::variableAdded,
[&callbackCalled](std::shared_ptr<Variable2>) {
callbackCalled = true;
});
QVERIFY(!callbackCalled);
auto var1 = vc.createVariable("var1", {}, provider, range);
QVERIFY(SciQLop::containers::contains(vc.variables(), var1));
QVERIFY(callbackCalled);
}
void testDeleteVariable()
{
TEST_VC2_FIXTURE(1);
auto range = DateTimeRange::fromDateTime(QDate(2018, 8, 7), QTime(14, 00),
QDate(2018, 8, 7), QTime(16, 00));
bool callbackCalled = false;
connect(&vc, &VariableController2::variableDeleted,
[&callbackCalled](std::shared_ptr<Variable2>) {
callbackCalled = true;
});
auto var1 = vc.createVariable("var1", {}, provider, range);
QVERIFY(SciQLop::containers::contains(vc.variables(), var1));
QVERIFY(!callbackCalled);
while(!vc.isReady(var1))
{
qApp->processEvents();
}
vc.deleteVariable(var1);
QVERIFY(!SciQLop::containers::contains(vc.variables(), var1));
QVERIFY(callbackCalled);
}
void testGetData()
{
TEST_VC2_FIXTURE(10);
TEST_VC2_CREATE_DEFAULT_VARS(var1, var2, var3);
check_variable_state<RangeType<10>>(var1, range);
auto newRange = var2->range() * 1.5 + Seconds<double>{1000.};
vc.changeRange(var2, newRange);
check_variable_state<RangeType<10>>(var1, newRange);
check_variable_state<RangeType<10>>(var2, newRange);
check_variable_state<RangeType<10>>(var3, range);
}
void testZoom_data()
{
QTest::addColumn<double>("zoom");
QTest::newRow("Zoom IN 10x") << .1;
QTest::newRow("Zoom OUT 10x") << 10.;
QTest::newRow("Zoom IN 1x") << 1.;
}
void testZoom()
{
TEST_VC2_FIXTURE(100);
TEST_VC2_CREATE_DEFAULT_VARS(var1, var2, var3);
check_variable_state<RangeType<100>>(var1, range);
QFETCH(double, zoom);
range *= zoom;
vc.changeRange(var1, range);
check_variable_state<RangeType<100>>(var1, range);
check_variable_state<RangeType<100>>(var2, range);
}
void testPan_data()
{
QTest::addColumn<double>("pan");
QTest::newRow("Right 1000 seconds") << 1000.;
QTest::newRow("Left 1000 seconds") << -1000.;
QTest::newRow("Right 0.1 seconds") << .1;
QTest::newRow("Left 0.1 seconds") << -.1;
}
void testPan()
{
TEST_VC2_FIXTURE(10);
TEST_VC2_CREATE_DEFAULT_VARS(var1, var2, var3);
check_variable_state<RangeType<10>>(var1, range);
QFETCH(double, pan);
range += Seconds<double>{pan};
vc.changeRange(var1, range);
check_variable_state<RangeType<10>>(var1, range);
check_variable_state<RangeType<10>>(var2, range);
}
};
QTEST_MAIN(TestVariableController2WithSync)
#include "TestVariableController2WithSync.moc"