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

Implements class CLASS? More...

Include dependency graph for topitemsviewmodel.test.cpp:

Go to the source code of this file.

Classes

class  TopItemsViewModelTest
 Tests for TopItemsViewModel class. More...
 

Functions

 TEST_F (TopItemsViewModelTest, initialState)
 
 TEST_F (TopItemsViewModelTest, insertLayerInMultiLayerThenRemove)
 Insert LayerItem in MultiLayer. More...
 
 TEST_F (TopItemsViewModelTest, insertLayerThenRemove)
 Insert LayerItem in empty model. More...
 
 TEST_F (TopItemsViewModelTest, multuLayerAsRooItem)
 Insert LayerItem in MultiLayer while multilayer is root item. Then deleting multilayer. 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 topitemsviewmodel.test.cpp.

Function Documentation

◆ TEST_F() [1/4]

TEST_F ( TopItemsViewModelTest  ,
initialState   
)

Definition at line 37 of file topitemsviewmodel.test.cpp.

38 {
39  SessionModel model;
40  TopItemsViewModel viewModel(&model);
41  EXPECT_EQ(viewModel.rowCount(), 0);
42  EXPECT_EQ(viewModel.columnCount(), 0);
43  EXPECT_EQ(viewModel.sessionItemFromIndex(QModelIndex()), model.rootItem());
44 }
Main class to hold hierarchy of SessionItem objects.
Definition: sessionmodel.h:37
SessionItem * rootItem() const
Returns root item of the model.
View model to show top level items of SessionModel in Qt trees and tables.

References ModelView::ViewModelBase::columnCount(), ModelView::SessionModel::rootItem(), ModelView::ViewModelBase::rowCount(), and ModelView::ViewModel::sessionItemFromIndex().

Here is the call graph for this function:

◆ TEST_F() [2/4]

TEST_F ( TopItemsViewModelTest  ,
insertLayerInMultiLayerThenRemove   
)

Insert LayerItem in MultiLayer.

Definition at line 74 of file topitemsviewmodel.test.cpp.

75 {
77  TopItemsViewModel viewmodel(&model);
78 
79  QSignalSpy spyInsert(&viewmodel, &ViewModelBase::rowsInserted);
80  QSignalSpy spyRemove(&viewmodel, &ViewModelBase::rowsRemoved);
81 
82  // inserting multilayer
83  auto multilayer = model.insertItem<ToyItems::MultiLayerItem>();
84 
85  EXPECT_EQ(viewmodel.rowCount(QModelIndex()), 1);
86  EXPECT_EQ(viewmodel.columnCount(QModelIndex()), 2);
87  EXPECT_EQ(spyRemove.count(), 0);
88  EXPECT_EQ(spyInsert.count(), 1);
89 
90  // insert layer
91  auto layer = model.insertItem<ToyItems::LayerItem>(multilayer);
92  EXPECT_EQ(viewmodel.rowCount(QModelIndex()), 1);
93  EXPECT_EQ(viewmodel.columnCount(QModelIndex()), 2);
94  EXPECT_EQ(spyRemove.count(), 0);
95  EXPECT_EQ(spyInsert.count(), 2);
96 
97  // checking their indices
98  auto multilayer_index = viewmodel.index(0, 0, QModelIndex());
99  auto layer_index = viewmodel.index(0, 0, multilayer_index);
100  EXPECT_EQ(viewmodel.sessionItemFromIndex(multilayer_index), multilayer);
101  EXPECT_EQ(viewmodel.sessionItemFromIndex(layer_index), layer);
102 
103  // checking row and columns
104  EXPECT_EQ(viewmodel.rowCount(multilayer_index), 1);
105  EXPECT_EQ(viewmodel.columnCount(multilayer_index), 2);
106  EXPECT_EQ(viewmodel.rowCount(layer_index), 0);
107  EXPECT_EQ(viewmodel.columnCount(layer_index), 0);
108 
109  // removing layer
110  model.removeItem(multilayer, {"", 0});
111  EXPECT_EQ(spyRemove.count(), 1);
112  EXPECT_EQ(spyInsert.count(), 2);
113  EXPECT_EQ(viewmodel.rowCount(multilayer_index), 0);
114  EXPECT_EQ(viewmodel.columnCount(multilayer_index), 0);
115 }
T * insertItem(SessionItem *parent=nullptr, const TagRow &tagrow={})
Inserts item into given parent under given tagrow.
Definition: sessionmodel.h:104
void removeItem(SessionItem *parent, const TagRow &tagrow)
Removes given row from parent.
Represents a layer, with thickness and color, and possibly populated with particles.
Definition: toyitems.h:52
Represents multilayer with collection of layers.
Definition: toyitems.h:44

References ModelView::ViewModelBase::columnCount(), ModelView::ViewModelBase::index(), ModelView::SessionModel::insertItem(), ModelView::SessionModel::removeItem(), ModelView::ViewModelBase::rowCount(), and ModelView::ViewModel::sessionItemFromIndex().

Here is the call graph for this function:

◆ TEST_F() [3/4]

TEST_F ( TopItemsViewModelTest  ,
insertLayerThenRemove   
)

Insert LayerItem in empty model.

Definition at line 48 of file topitemsviewmodel.test.cpp.

49 {
51  TopItemsViewModel viewmodel(&model);
52 
53  QSignalSpy spyInsert(&viewmodel, &ViewModelBase::rowsInserted);
54  QSignalSpy spyRemove(&viewmodel, &ViewModelBase::rowsRemoved);
55 
57 
58  EXPECT_EQ(viewmodel.rowCount(QModelIndex()), 1);
59  EXPECT_EQ(viewmodel.columnCount(QModelIndex()), 2);
60 
61  EXPECT_EQ(spyRemove.count(), 0);
62  EXPECT_EQ(spyInsert.count(), 1);
63 
64  model.removeItem(model.rootItem(), {"", 0});
65  EXPECT_EQ(spyRemove.count(), 1);
66  EXPECT_EQ(spyInsert.count(), 1);
67 
68  EXPECT_EQ(viewmodel.rowCount(QModelIndex()), 0);
69  EXPECT_EQ(viewmodel.columnCount(QModelIndex()), 0);
70 }

References ModelView::ViewModelBase::columnCount(), ModelView::SessionModel::insertItem(), ModelView::SessionModel::removeItem(), ModelView::SessionModel::rootItem(), and ModelView::ViewModelBase::rowCount().

Here is the call graph for this function:

◆ TEST_F() [4/4]

TEST_F ( TopItemsViewModelTest  ,
multuLayerAsRooItem   
)

Insert LayerItem in MultiLayer while multilayer is root item. Then deleting multilayer.

Definition at line 119 of file topitemsviewmodel.test.cpp.

120 {
121  ToyItems::SampleModel model;
122  TopItemsViewModel viewmodel(&model);
123 
124  // setting up single multilayer playing the role
125  auto multilayer = model.insertItem<ToyItems::MultiLayerItem>();
126  viewmodel.setRootSessionItem(multilayer);
127  QSignalSpy spyInsert(&viewmodel, &ViewModelBase::rowsInserted);
128  QSignalSpy spyRemove(&viewmodel, &ViewModelBase::rowsRemoved);
129 
130  // initial conditions
131  EXPECT_EQ(viewmodel.rowCount(QModelIndex()), 0);
132  EXPECT_EQ(viewmodel.columnCount(QModelIndex()), 0);
133  EXPECT_EQ(viewmodel.sessionItemFromIndex(QModelIndex()), multilayer); // our new root
134 
135  // adding layer
136  model.insertItem<ToyItems::LayerItem>(multilayer);
137  EXPECT_EQ(viewmodel.rowCount(QModelIndex()), 1);
138  EXPECT_EQ(viewmodel.columnCount(QModelIndex()), 2);
139  EXPECT_EQ(spyRemove.count(), 0);
140  EXPECT_EQ(spyInsert.count(), 1);
141 
142  // removing multilayer
143  model.removeItem(model.rootItem(), {"", 0});
144 }

References ModelView::ViewModelBase::columnCount(), ModelView::SessionModel::insertItem(), ModelView::SessionModel::removeItem(), ModelView::SessionModel::rootItem(), ModelView::ViewModelBase::rowCount(), ModelView::ViewModel::sessionItemFromIndex(), and ModelView::ViewModel::setRootSessionItem().

Here is the call graph for this function: