| 693 | //----------------------------------------------------------------------------- |
| 694 | template <class Container> |
| 695 | void testItemDisplayRole(Container& container) |
| 696 | { |
| 697 | auto& model = *container.model(); |
| 698 | DataChangedSignalSpy spy(model); |
| 699 | ASSERT_EQ(0, spy.count); |
| 700 | |
| 701 | // Content is not monitored for changes _before_ beeing displayed, |
| 702 | // simulate a view access to QAbstractItemModel::data() |
| 703 | model.data(model.index(0,0), qcm::ContainerModel::ItemLabelRole); |
| 704 | model.data(model.index(1,0), qcm::ContainerModel::ItemLabelRole); |
| 705 | ASSERT_EQ(0, spy.count); |
| 706 | |
| 707 | // Now modify container model qobject properties used as display role. |
| 708 | container.at(0)->setLabel("D1 label"); |
| 709 | ASSERT_EQ(spy.count, 1); |
| 710 | container.at(1)->setLabel("D2 label"); |
| 711 | ASSERT_EQ(spy.count, 2); |
| 712 | |
| 713 | // Check that label content is correct |
| 714 | ASSERT_EQ( QVariant{"D1 label"}, model.data(model.index(0,0), qcm::ContainerModel::ItemLabelRole) ); |
| 715 | ASSERT_EQ( QVariant{"D2 label"}, model.data(model.index(1,0), qcm::ContainerModel::ItemLabelRole) ); |
| 716 | |
| 717 | // Dynamically modify label role |
| 718 | spy.count = 0; |
| 719 | model.setItemDisplayRole("dummyString"); |
| 720 | //ASSERT_EQ(2, spy.count); |
| 721 | |
| 722 | ASSERT_EQ( QVariant{"Dummy1"}, model.data(model.index(0,0), qcm::ContainerModel::ItemLabelRole) ); |
| 723 | ASSERT_EQ( QVariant{"Dummy2"}, model.data(model.index(1,0), qcm::ContainerModel::ItemLabelRole) ); |
| 724 | } |
| 725 | |
| 726 | TEST(qpsContainerModel, qObjectPtrItemDisplayRole) |
| 727 | { |