BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
viewmodelfactory.test.cpp File Reference

Implements class CLASS? More...

Include dependency graph for viewmodelfactory.test.cpp:

Go to the source code of this file.

Classes

class  ViewModelFactoryTest::CustomModel
 
class  ViewModelFactoryTest
 

Functions

 TEST_F (ViewModelFactoryTest, createCustomViewModel)
 Creating DefaultViewModel using strategies, validating behaviour on single item in SessionModel. More...
 
 TEST_F (ViewModelFactoryTest, createDefaultViewModelInitial)
 Creating DefaultViewModel using strategies. More...
 
 TEST_F (ViewModelFactoryTest, createDefaultViewModelUseProperty)
 Creating DefaultViewModel using strategies, validating behaviour on single item in SessionModel. More...
 

Detailed Description

Implements class CLASS?

Homepage:\n http://www.bornagainproject.org
License:\n GNU General Public License v3 or higher (see COPYING)
Authors
Gennady Pospelov et al, Scientific Computing Group at MLZ (see CITATION, AUTHORS)

Definition in file viewmodelfactory.test.cpp.

Function Documentation

◆ TEST_F() [1/3]

TEST_F ( ViewModelFactoryTest  ,
createCustomViewModel   
)

Creating DefaultViewModel using strategies, validating behaviour on single item in SessionModel.

Definition at line 86 of file viewmodelfactory.test.cpp.

87 {
88  SessionModel model;
89  auto propertyItem = model.insertItem<PropertyItem>();
90  propertyItem->setData(42.0);
91 
92  CustomModel viewModel(&model);
93 
94  EXPECT_EQ(viewModel.rowCount(), 1);
95  EXPECT_EQ(viewModel.columnCount(), 2);
96 
97  // accessing first child under the root item
98  QModelIndex labelIndex = viewModel.index(0, 0);
99  QModelIndex dataIndex = viewModel.index(0, 1);
100 
101  // it should be ViewLabelItem looking at our PropertyItem item
102  auto labelItem = dynamic_cast<ViewLabelItem*>(viewModel.itemFromIndex(labelIndex));
103  ASSERT_TRUE(labelItem != nullptr);
104  EXPECT_EQ(labelItem->item(), propertyItem);
105 
106  auto dataItem = dynamic_cast<ViewDataItem*>(viewModel.itemFromIndex(dataIndex));
107  ASSERT_TRUE(dataItem != nullptr);
108  EXPECT_EQ(dataItem->item(), propertyItem);
109 }
Item to carry concrete editable entity (e.g.
Definition: propertyitem.h:27
bool setData(const T &value, int role=ItemDataRole::DATA, bool direct=false)
Sets data for a given role.
Definition: sessionitem.h:141
Main class to hold hierarchy of SessionItem objects.
Definition: sessionmodel.h:37
T * insertItem(SessionItem *parent=nullptr, const TagRow &tagrow={})
Inserts item into given parent under given tagrow.
Definition: sessionmodel.h:104
Represents data role of SessionItem in any cell of Qt's trees and tables.
Represents display name of SessionItem in any cell of Qt's trees and tables.

References ModelView::SessionModel::insertItem(), and ModelView::SessionItem::setData().

Here is the call graph for this function:

◆ TEST_F() [2/3]

TEST_F ( ViewModelFactoryTest  ,
createDefaultViewModelInitial   
)

Creating DefaultViewModel using strategies.

Definition at line 47 of file viewmodelfactory.test.cpp.

48 {
49  SessionModel model;
50 
51  auto viewModel = Factory::CreateViewModel<AllChildrenStrategy, LabelDataRowStrategy>(&model);
52  EXPECT_EQ(viewModel->rowCount(), 0);
53  EXPECT_EQ(viewModel->columnCount(), 0);
54  EXPECT_EQ(viewModel->sessionItemFromIndex(QModelIndex()), model.rootItem());
55 }
SessionItem * rootItem() const
Returns root item of the model.

References ModelView::SessionModel::rootItem().

Here is the call graph for this function:

◆ TEST_F() [3/3]

TEST_F ( ViewModelFactoryTest  ,
createDefaultViewModelUseProperty   
)

Creating DefaultViewModel using strategies, validating behaviour on single item in SessionModel.

Definition at line 59 of file viewmodelfactory.test.cpp.

60 {
61  SessionModel model;
62  auto propertyItem = model.insertItem<PropertyItem>();
63  propertyItem->setData(42.0);
64 
65  auto viewModel = Factory::CreateViewModel<AllChildrenStrategy, LabelDataRowStrategy>(&model);
66 
67  EXPECT_EQ(viewModel->rowCount(), 1);
68  EXPECT_EQ(viewModel->columnCount(), 2);
69 
70  // accessing first child under the root item
71  QModelIndex labelIndex = viewModel->index(0, 0);
72  QModelIndex dataIndex = viewModel->index(0, 1);
73 
74  // it should be ViewLabelItem looking at our PropertyItem item
75  auto labelItem = dynamic_cast<ViewLabelItem*>(viewModel->itemFromIndex(labelIndex));
76  ASSERT_TRUE(labelItem != nullptr);
77  EXPECT_EQ(labelItem->item(), propertyItem);
78 
79  auto dataItem = dynamic_cast<ViewDataItem*>(viewModel->itemFromIndex(dataIndex));
80  ASSERT_TRUE(dataItem != nullptr);
81  EXPECT_EQ(dataItem->item(), propertyItem);
82 }

References ModelView::SessionModel::insertItem(), and ModelView::SessionItem::setData().

Here is the call graph for this function: