| 554 | |
| 555 | template <class C> |
| 556 | void testContainerModelStdSharedQObject(C& container) |
| 557 | { |
| 558 | auto model = container.getModel(); |
| 559 | ASSERT_TRUE( model != nullptr ); |
| 560 | |
| 561 | auto o1{std::make_shared<QObject>()}; |
| 562 | auto o2{std::make_shared<QObject>()}; |
| 563 | |
| 564 | // qcm::ContainerModel::append() |
| 565 | ASSERT_EQ( 0, model->getLength() ); |
| 566 | container.append( o1 ); |
| 567 | ASSERT_EQ( 1, model->getLength() ); |
| 568 | container.append(std::make_shared<QObject>()); |
| 569 | container.append( o2 ); |
| 570 | ASSERT_EQ( 3, model->getLength() ); |
| 571 | |
| 572 | // qcm::ContainerModel::at() |
| 573 | ASSERT_TRUE( ( model->at(0) != nullptr ) ); |
| 574 | EXPECT_TRUE( ( model->at(0) == o1.get() ) ); |
| 575 | EXPECT_TRUE( ( model->at(2) == o2.get() ) ); |
| 576 | ASSERT_TRUE( ( model->at(3) == nullptr ) ); // Overflow |
| 577 | |
| 578 | // qcm::ContainerModel::at() |
| 579 | QObject* o3{new QObject()}; |
| 580 | ASSERT_EQ( -1, model->indexOf(nullptr) ); // Invalid input |
| 581 | ASSERT_EQ( -1, model->indexOf(o3) ); // Invalid input, o3 is not inserted |
| 582 | EXPECT_EQ( 0, model->indexOf(o1.get()) ); |
| 583 | EXPECT_EQ( 2, model->indexOf(o2.get()) ); |
| 584 | |
| 585 | // qcm::ContainerModel::remove() |
| 586 | model->remove(nullptr); // Invalid input |
| 587 | model->remove(o3); // Invalid input (o3 is not inserted) |
| 588 | model->remove(o1.get()); |
| 589 | ASSERT_EQ( 2, model->getLength() ); |
| 590 | |
| 591 | // qcm::ContainerModel::contains() |
| 592 | ASSERT_FALSE( model->contains(nullptr) ); // Invalid input |
| 593 | ASSERT_FALSE( model->contains(o3) ); // Invalid input o3 is not inserted |
| 594 | ASSERT_FALSE( model->contains(o1.get()) ); // o1 has been removce |
| 595 | ASSERT_TRUE( model->contains(o2.get()) ); |
| 596 | |
| 597 | // qcm::ContainerModel::clear() |
| 598 | model->clear(); |
| 599 | ASSERT_TRUE( model->at(0) == nullptr ); |
| 600 | ASSERT_EQ( 0, model->getLength() ); |
| 601 | } |
| 602 | |
| 603 | TEST(qpsContainerModel, qVectorStdSharedQObject) |
| 604 | { |