##// END OF EJS Templates
Reads variable's metadata to retrieve the type of data series (scalar, vector, spectrogram)
Reads variable's metadata to retrieve the type of data series (scalar, vector, spectrogram)

File last commit:

r1081:54cb33e3c81c
r1333:88939ef97b8f
Show More
TestDataSourceItem.cpp
207 lines | 6.7 KiB | text/x-c | CppLexer
#include <DataSource/DataSourceItem.h>
#include "DataSourceItemBuilder.h"
#include <QObject>
#include <QtTest>
#include <iostream>
namespace {
void printItem(std::ostream &out, const DataSourceItem &item, int level = 0)
{
for (auto i = 0; i < level; ++i) {
out << " ";
}
out << item.name().toStdString() << "\n";
for (auto i = 0, count = item.childCount(); i < count; ++i) {
printItem(out, *item.child(i), level + 1);
}
}
std::ostream &operator<<(std::ostream &out, const DataSourceItem &item)
{
printItem(out, item, 0);
return out;
}
} // namespace
Q_DECLARE_METATYPE(std::shared_ptr<DataSourceItem>)
class TestDataSourceItem : public QObject {
Q_OBJECT
private slots:
void testMerge_data();
void testMerge();
};
void TestDataSourceItem::testMerge_data()
{
QTest::addColumn<std::shared_ptr<DataSourceItem> >("source");
QTest::addColumn<std::shared_ptr<DataSourceItem> >("dest");
QTest::addColumn<std::shared_ptr<DataSourceItem> >("expectedResult");
QTest::newRow("merge (basic case)") << DataSourceItemBuilder{}
.root("A2")
.node("- B2")
.product("-- P2")
.end() // P2
.end() // B2
.end() // A2
.build()
<< DataSourceItemBuilder{}
.root("A1")
.node("- B1")
.product("-- P1")
.end() // P1
.end() // B1
.end() // A1
.build()
<< DataSourceItemBuilder{}
.root("A1")
.node("- B1")
.product("-- P1")
.end() // P1
.end() // B1
.node("- B2")
.product("-- P2")
.end() // P2
.end() // B2
.end() // A1
.build();
QTest::newRow("merge (some of the source and destination trees are identical)")
<< DataSourceItemBuilder{}
.root("A2")
.node("- B1")
.node("-- C1")
.product("--- P2")
.end() // P2
.end() // C1
.node("-- C2")
.end() // C2
.end() // B1
.end() // A2
.build()
<< DataSourceItemBuilder{}
.root("A1")
.node("- B1")
.node("-- C1")
.product("--- P1")
.end() // P1
.end() // C1
.end() // B1
.end() // A1
.build()
<< DataSourceItemBuilder{}
.root("A1")
.node("- B1")
.node("-- C1")
.product("--- P1")
.end() // P1
.product("--- P2")
.end() // P2
.end() // C1
.node("-- C2")
.end() // C2
.end() // B1
.end() // A1
.build();
QTest::newRow("merge (products with the same name and tree are kept)")
<< DataSourceItemBuilder{}
.root("A2")
.node("- B1")
.node("-- C1")
.product({{"name", "--- P1"}, {"from", "source"}})
.end() // P1
.end() // C1
.end() // B1
.end() // A2
.build()
<< DataSourceItemBuilder{}
.root("A1")
.node("- B1")
.node("-- C1")
.product({{"name", "--- P1"}, {"from", "dest"}})
.end() // P1
.end() // C1
.end() // B1
.end() // A1
.build()
<< DataSourceItemBuilder{}
.root("A1")
.node("- B1")
.node("-- C1")
.product({{"name", "--- P1"}, {"from", "dest"}})
.end() // P1 (dest)
.product({{"name", "--- P1"}, {"from", "source"}})
.end() // P1 (source)
.end() // C1
.end() // B1
.end() // A1
.build();
QTest::newRow("merge (for same nodes, metadata of dest node are kept)")
<< DataSourceItemBuilder{}
.root("A2")
.node("- B1")
.node({{"name", "-- C1"}, {"from", "source"}})
.product("--- P2")
.end() // P1
.end() // C1
.end() // B1
.end() // A2
.build()
<< DataSourceItemBuilder{}
.root("A1")
.node("- B1")
.node({{"name", "-- C1"}, {"from", "dest"}})
.product("--- P1")
.end() // P1
.end() // C1
.end() // B1
.end() // A1
.build()
<< DataSourceItemBuilder{}
.root("A1")
.node("- B1")
.node({{"name", "-- C1"}, {"from", "dest"}})
.product("--- P1")
.end() // P1
.product("--- P2")
.end() // P2
.end() // C1 (dest)
.end() // B1
.end() // A1
.build();
}
void TestDataSourceItem::testMerge()
{
QFETCH(std::shared_ptr<DataSourceItem>, source);
QFETCH(std::shared_ptr<DataSourceItem>, dest);
QFETCH(std::shared_ptr<DataSourceItem>, expectedResult);
// Uncomment to print trees
// std::cout << "source: \n" << *source << "\n";
// std::cout << "dest: \n" << *dest << "\n";
// Merges source in dest (not taking source root)
for (auto i = 0, count = source->childCount(); i < count; ++i) {
dest->merge(*source->child(i));
}
// Uncomment to print trees
// std::cout << "dest after merge: \n" << *dest << "\n";
// Checks merge result
QVERIFY(*dest == *expectedResult);
}
QTEST_MAIN(TestDataSourceItem)
#include "TestDataSourceItem.moc"