Esempio n. 1
0
//-----------------------------------------------------------------------------
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;
}
Esempio n. 2
0
//-----------------------------------------------------------------------------
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;
}