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

Implements class CLASS? More...

Include dependency graph for linkeditem.test.cpp:

Go to the source code of this file.

Classes

class  LinkedItemTest
 LinkedItem tests. More...
 

Functions

 TEST_F (LinkedItemTest, differentModelContext)
 Link in different model context. More...
 
 TEST_F (LinkedItemTest, initialState)
 Initial state of item when it is created outside of model context. More...
 
 TEST_F (LinkedItemTest, onSetLink)
 Signals when links is set. More...
 
 TEST_F (LinkedItemTest, sameModelContext)
 Link in single model context. More...
 
 TEST_F (LinkedItemTest, setNullAsLink)
 Link in different model context. 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 linkeditem.test.cpp.

Function Documentation

◆ TEST_F() [1/5]

TEST_F ( LinkedItemTest  ,
differentModelContext   
)

Link in different model context.

Definition at line 64 of file linkeditem.test.cpp.

65 {
66  auto pool = std::make_shared<ItemPool>();
67 
68  SessionModel model1("TestModel1", pool);
69  SessionModel model2("TestModel2", pool);
70 
71  auto item = model1.insertItem<PropertyItem>();
72  auto link = model2.insertItem<LinkedItem>();
73 
74  // no link by default
75  EXPECT_EQ(link->get(), nullptr);
76 
77  // setting the link
78  link->setLink(item);
79 
80  // now linked
81  EXPECT_EQ(link->get(), item);
82 }
Item to store a persistent link to other arbitrary items.
Definition: linkeditem.h:30
Item to carry concrete editable entity (e.g.
Definition: propertyitem.h:27
bool insertItem(SessionItem *item, const TagRow &tagrow)
Insert item into given tag under the given row.
Main class to hold hierarchy of SessionItem objects.
Definition: sessionmodel.h:37

References ModelView::SessionModel::insertItem().

Here is the call graph for this function:

◆ TEST_F() [2/5]

TEST_F ( LinkedItemTest  ,
initialState   
)

Initial state of item when it is created outside of model context.

Definition at line 36 of file linkeditem.test.cpp.

37 {
38  LinkedItem item;
39  EXPECT_EQ(item.get(), nullptr);
40  EXPECT_EQ(item.data<std::string>(), std::string());
41 }
T * get() const
Returns item linked to given item. Works only in model context.
Definition: linkeditem.h:41
T data(int role=ItemDataRole::DATA) const
Returns data of given type T for given role.
Definition: sessionitem.h:148

References ModelView::SessionItem::data(), and ModelView::LinkedItem::get().

Here is the call graph for this function:

◆ TEST_F() [3/5]

TEST_F ( LinkedItemTest  ,
onSetLink   
)

Signals when links is set.

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

87 {
88  SessionModel model;
89  auto item = model.insertItem<PropertyItem>();
90  auto link = model.insertItem<LinkedItem>();
91 
92  // no link by default
93  EXPECT_EQ(link->get(), nullptr);
94 
95  MockWidgetForItem widget(link);
96 
97  auto expected_role = ItemDataRole::DATA;
98  auto expected_item = link;
99  EXPECT_CALL(widget, onDataChange(expected_item, expected_role)).Times(1);
100  EXPECT_CALL(widget, onPropertyChange(_, _)).Times(0);
101 
102  // making action
103  link->setLink(item);
104 }
Mock widget to test ItemMapper functionality.
Definition: mockwidgets.h:36
T * insertItem(SessionItem *parent=nullptr, const TagRow &tagrow={})
Inserts item into given parent under given tagrow.
Definition: sessionmodel.h:104
const int DATA
main data role
Definition: mvvm_types.h:30

References ModelView::ItemDataRole::DATA, and ModelView::SessionModel::insertItem().

Here is the call graph for this function:

◆ TEST_F() [4/5]

TEST_F ( LinkedItemTest  ,
sameModelContext   
)

Link in single model context.

Definition at line 45 of file linkeditem.test.cpp.

46 {
47  SessionModel model;
48  auto item = model.insertItem<PropertyItem>();
49  auto link = model.insertItem<LinkedItem>();
50 
51  // no link by default
52  EXPECT_EQ(link->get(), nullptr);
53 
54  // setting the link
55  link->setLink(item);
56 
57  // now linked
58  EXPECT_EQ(link->get(), item);
59  EXPECT_EQ(link->data<std::string>(), item->identifier());
60 }

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

Here is the call graph for this function:

◆ TEST_F() [5/5]

TEST_F ( LinkedItemTest  ,
setNullAsLink   
)

Link in different model context.

Definition at line 108 of file linkeditem.test.cpp.

109 {
110  auto pool = std::make_shared<ItemPool>();
111 
112  SessionModel model("TestModel", pool);
113  auto link = model.insertItem<LinkedItem>();
114  auto item = model.insertItem<PropertyItem>();
115 
116  // no link by default
117  EXPECT_EQ(link->get(), nullptr);
118 
119  // setting link
120  link->setLink(item);
121  EXPECT_EQ(link->get(), item);
122 
123  // still null link
124  link->setLink(nullptr);
125  EXPECT_EQ(link->get(), nullptr);
126  EXPECT_TRUE(link->data<QVariant>().isValid());
127  EXPECT_EQ(link->data<std::string>(), std::string());
128 }

References ModelView::SessionModel::insertItem().

Here is the call graph for this function: