#include #include #include #include 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) class TestDataSourceItem : public QObject { Q_OBJECT private slots: void testMerge_data(); void testMerge(); }; void TestDataSourceItem::testMerge_data() { QTest::addColumn >("source"); QTest::addColumn >("dest"); QTest::addColumn >("expectedResult"); /// @todo ALX: adds test cases } void TestDataSourceItem::testMerge() { QFETCH(std::shared_ptr, source); QFETCH(std::shared_ptr, dest); QFETCH(std::shared_ptr, 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"