##// END OF EJS Templates
Remove unused pending request of worker since it's already in the VC....
Remove unused pending request of worker since it's already in the VC. Fix bug with progress asynchrone computation

File last commit:

r1081:54cb33e3c81c
r1387:3f0567bfecb5 HEAD
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"