//----------------------------------------------------------------------------- int ctkModelTesterTest1(int argc, char * argv [] ) { QCoreApplication app(argc, argv); QAbstractItemModelHelper * item = new QAbstractItemModelHelper; QObject * object = new QObject; ctkModelTester ctkTester( item, object ); delete item; try { // as we can infer that QStandardItemModel is correct, // ctkModelTester shall not fail for any of the actions on the model. // Please note here that takeRow() doesn't delete the items so we end up // with mem leaks. QStandardItemModel model; ctkModelTester treeModelTester(&model); QList<QStandardItem*> items; items << new QStandardItem("col1") << new QStandardItem("col2"); model.appendRow(items); QList<QStandardItem*> items2 = model.takeRow(0); if (items2 != items) { std::cerr << "Error" << std::endl; return EXIT_FAILURE; } items2.clear(); model.appendRow(items); for (int i = 0; i < 10; ++i) { model.appendRow(QList<QStandardItem*>() << new QStandardItem("col1") << new QStandardItem("col2")); } model.takeRow(0); model.takeRow(model.rowCount() / 2 ); model.takeRow(model.rowCount() - 1); items2 << new QStandardItem("col1") << new QStandardItem("col2"); items2[0]->appendRow(QList<QStandardItem*>() << new QStandardItem("subcol1") << new QStandardItem("subcol2")); items2[0]->appendRow(QList<QStandardItem*>() << new QStandardItem("subcol1") << new QStandardItem("subcol2")); model.setData(model.index(0,0), QString("foo")); model.sort(0); } catch (const char* error) { std::cerr << error << std::endl; return EXIT_FAILURE; } return EXIT_SUCCESS; }
//----------------------------------------------------------------------------- int ctkModelTesterTest2(int argc, char * argv [] ) { QCoreApplication app(argc, argv); QObject * object = new QObject; ctkModelTester ctkTester( object ); //--------------------------------------------------- if ( ctkTester.model() != 0 || ctkTester.throwOnError() != true || ctkTester.nestedInserts() != false || ctkTester.testDataEnabled() != true || ctkTester.verbose() != true) { std::cerr << "Line : " << __LINE__ << " - Error in ctkModelTester::ctkModelTester" << std::endl; return EXIT_FAILURE; } ctkTester.setThrowOnError(false); ctkTester.setNestedInserts(true); ctkTester.setTestDataEnabled(false); ctkTester.setVerbose(false); if ( ctkTester.throwOnError() != false || ctkTester.nestedInserts() != true || ctkTester.testDataEnabled() != false || ctkTester.verbose() != false) { std::cerr << "Line : " << __LINE__ << " - Error " << std::endl; return EXIT_FAILURE; } QModelIndex defaultModelIndex; ctkTester.testModelIndex(defaultModelIndex); ctkTester.setThrowOnError(true); ctkTester.setNestedInserts(false); ctkTester.setTestDataEnabled(true); ctkTester.setVerbose(true); ctkTester.testModel(); QAbstractItemModelHelper helper; ctkTester.setModel(&helper); bool errorThrown = false; try { helper.emitInvalidHeaderDataChanged(); } catch (...) { errorThrown = true; } if (!errorThrown) { std::cerr << "ThrowOnError failed" << std::endl; return EXIT_FAILURE; } QStandardItemModel model; ctkTester.setModel(&model); ctkTester.setModel(0); ctkTester.setModel(&model); ctkTester.testModelIndex(defaultModelIndex); return EXIT_SUCCESS; }