ctkModelTesterTest1.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /*=========================================================================
  2. Library: CTK
  3. Copyright (c) Kitware Inc.
  4. All rights reserved.
  5. Distributed under a BSD License. See LICENSE.txt file.
  6. This software is distributed "AS IS" WITHOUT ANY WARRANTY; without even
  7. the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  8. See the above copyright notice for more information.
  9. =========================================================================*/
  10. // Qt includes
  11. #include <QAbstractItemModel>
  12. #include <QApplication>
  13. #include <QList>
  14. #include <QModelIndex>
  15. #include <QTreeWidget>
  16. // CTK includes
  17. #include "ctkModelTester.h"
  18. // STL includes
  19. #include <stdlib.h>
  20. #include <iostream>
  21. //-----------------------------------------------------------------------------
  22. class QAbstractItemModelHelper : public QAbstractItemModel
  23. {
  24. public:
  25. virtual QModelIndex index(int, int, const QModelIndex&) const { return QModelIndex(); }
  26. virtual QModelIndex parent(const QModelIndex&) const { return QModelIndex(); }
  27. virtual int rowCount(const QModelIndex&) const { return 0; }
  28. virtual int columnCount(const QModelIndex&) const { return 0; }
  29. virtual QVariant data(const QModelIndex&, int) const { return QVariant(); }
  30. };
  31. //-----------------------------------------------------------------------------
  32. int ctkModelTesterTest1(int argc, char * argv [] )
  33. {
  34. QApplication app(argc, argv);
  35. QAbstractItemModelHelper * item = new QAbstractItemModelHelper;
  36. QObject * object = new QObject;
  37. ctkModelTester ctkTester( item, object );
  38. delete item;
  39. try
  40. {
  41. // as we can infer that QTreeWidget is correct, ctkModelTester shall not fail
  42. // for any of the actions on QTreeWidget.
  43. QTreeWidget treeWidget(0);
  44. ctkModelTester treeModelTester(treeWidget.model());
  45. treeWidget.setColumnCount(1);
  46. QList<QTreeWidgetItem *> items;
  47. for (int i = 0; i < 10; ++i)
  48. {
  49. items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("item: %1").arg(i))));
  50. }
  51. treeWidget.addTopLevelItems(items);
  52. treeWidget.takeTopLevelItem(0);
  53. treeWidget.takeTopLevelItem(treeWidget.topLevelItemCount() / 2 );
  54. treeWidget.takeTopLevelItem(treeWidget.topLevelItemCount() - 1);
  55. treeWidget.insertTopLevelItem(0, new QTreeWidgetItem(&treeWidget, QStringList("new item 0")));
  56. treeWidget.insertTopLevelItem(treeWidget.topLevelItemCount() / 2,
  57. new QTreeWidgetItem((QTreeWidget*)0, QStringList("new item 1")));
  58. treeWidget.insertTopLevelItem(treeWidget.topLevelItemCount(),
  59. new QTreeWidgetItem((QTreeWidget*)0, QStringList("new item 2")));
  60. new QTreeWidgetItem(treeWidget.topLevelItem(0), QStringList("new item 3"));
  61. QAbstractItemModel* model = treeWidget.model();
  62. model->setData(model->index(0,0),QString("foo"));
  63. treeWidget.sortItems(0, Qt::DescendingOrder);
  64. }
  65. catch (const char* error)
  66. {
  67. std::cerr << error << std::endl;
  68. return EXIT_FAILURE;
  69. }
  70. return EXIT_SUCCESS;
  71. }