ctkModelTesterTest1.cxx 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. class QAbstractItemModelHelper : public QAbstractItemModel
  22. {
  23. public:
  24. virtual QModelIndex index(int, int, const QModelIndex&) const { return QModelIndex(); }
  25. virtual QModelIndex parent(const QModelIndex&) const { return QModelIndex(); }
  26. virtual int rowCount(const QModelIndex&) const { return 0; }
  27. virtual int columnCount(const QModelIndex&) const { return 0; }
  28. virtual QVariant data(const QModelIndex&, int) const { return QVariant(); }
  29. };
  30. int ctkModelTesterTest1(int argc, char * argv [] )
  31. {
  32. QApplication app(argc, argv);
  33. QAbstractItemModelHelper * item = new QAbstractItemModelHelper;
  34. QObject * object = new QObject;
  35. ctkModelTester ctkTester( item, object );
  36. delete item;
  37. try
  38. {
  39. // as we can infer that QTreeWidget is correct, ctkModelTester shall not fail
  40. // for any of the actions on QTreeWidget.
  41. QTreeWidget treeWidget(0);
  42. ctkModelTester treeModelTester(treeWidget.model());
  43. treeWidget.setColumnCount(1);
  44. QList<QTreeWidgetItem *> items;
  45. for (int i = 0; i < 10; ++i)
  46. {
  47. items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("item: %1").arg(i))));
  48. }
  49. treeWidget.addTopLevelItems(items);
  50. treeWidget.takeTopLevelItem(0);
  51. treeWidget.takeTopLevelItem(treeWidget.topLevelItemCount() / 2 );
  52. treeWidget.takeTopLevelItem(treeWidget.topLevelItemCount() - 1);
  53. treeWidget.insertTopLevelItem(0, new QTreeWidgetItem(&treeWidget, QStringList("new item 0")));
  54. treeWidget.insertTopLevelItem(treeWidget.topLevelItemCount() / 2,
  55. new QTreeWidgetItem((QTreeWidget*)0, QStringList("new item 1")));
  56. treeWidget.insertTopLevelItem(treeWidget.topLevelItemCount(),
  57. new QTreeWidgetItem((QTreeWidget*)0, QStringList("new item 2")));
  58. new QTreeWidgetItem(treeWidget.topLevelItem(0), QStringList("new item 3"));
  59. QAbstractItemModel* model = treeWidget.model();
  60. model->setData(model->index(0,0),QString("foo"));
  61. treeWidget.sortItems(0, Qt::DescendingOrder);
  62. }
  63. catch (const char* error)
  64. {
  65. std::cerr << error << std::endl;
  66. return EXIT_FAILURE;
  67. }
  68. return EXIT_SUCCESS;
  69. }