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

Implements class CLASS? More...

Include dependency graph for callbackcontainer.test.cpp:

Go to the source code of this file.

Classes

class  CallbackContainerTest
 Testing CallbackContainer class. More...
 

Functions

 TEST_F (CallbackContainerTest, singleWidget)
 Callback container notifies single widget. Check if removal of widget disables notifications. More...
 
 TEST_F (CallbackContainerTest, twoParameters)
 Callback function with two parameters. More...
 
 TEST_F (CallbackContainerTest, twoWidgets)
 Callback container notifies two widgets. 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 callbackcontainer.test.cpp.

Function Documentation

◆ TEST_F() [1/3]

TEST_F ( CallbackContainerTest  ,
singleWidget   
)

Callback container notifies single widget. Check if removal of widget disables notifications.

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

37 {
38  CallbackMockWidget widget;
40 
41  signal.connect(std::bind(&CallbackMockWidget::onItemDestroy, &widget, std::placeholders::_1),
42  &widget);
43 
44  std::unique_ptr<SessionItem> item(new SessionItem);
45  EXPECT_CALL(widget, onItemDestroy(item.get())).Times(1);
46 
47  // perform action
48  signal(item.get());
49 
50  // removing client
51  signal.remove_client(&widget);
52  EXPECT_CALL(widget, onItemDestroy(_)).Times(0);
53 
54  // perform action
55  signal(item.get());
56 }
Mock class for CallbackContainer.
Definition: mockwidgets.h:28
The main object representing an editable/displayable/serializable entity.
Definition: sessionitem.h:38
void remove_client(U client)
Remove client from the list to call back.
void connect(T callback, U client)

References ModelView::SignalBase< T, U >::connect(), and ModelView::SignalBase< T, U >::remove_client().

Here is the call graph for this function:

◆ TEST_F() [2/3]

TEST_F ( CallbackContainerTest  ,
twoParameters   
)

Callback function with two parameters.

Definition at line 88 of file callbackcontainer.test.cpp.

89 {
90  CallbackMockWidget widget1, widget2;
92 
93  signal.connect([&](SessionItem* item, int role) { widget1.onDataChange(item, role); },
94  &widget1);
95 
96  signal.connect([&](SessionItem* item, int role) { widget2.onDataChange(item, role); },
97  &widget2);
98 
99  int expected_role = 42;
100  std::unique_ptr<SessionItem> item(new SessionItem);
101  EXPECT_CALL(widget1, onDataChange(item.get(), expected_role)).Times(1);
102  EXPECT_CALL(widget2, onDataChange(item.get(), expected_role)).Times(1);
103 
104  // perform action
105  signal(item.get(), expected_role);
106 
107  // removing one of client
108  signal.remove_client(&widget1);
109  EXPECT_CALL(widget1, onDataChange(_, _)).Times(0);
110  EXPECT_CALL(widget2, onDataChange(item.get(), expected_role)).Times(1);
111 
112  // perform action
113  signal(item.get(), expected_role);
114 }

References ModelView::SignalBase< T, U >::connect(), and ModelView::SignalBase< T, U >::remove_client().

Here is the call graph for this function:

◆ TEST_F() [3/3]

TEST_F ( CallbackContainerTest  ,
twoWidgets   
)

Callback container notifies two widgets.

Check if one widget is removed, the second is still notified.

Definition at line 61 of file callbackcontainer.test.cpp.

62 {
63  CallbackMockWidget widget1, widget2;
65 
66  signal.connect([&](SessionItem* item) { widget1.onItemDestroy(item); }, &widget1);
67 
68  signal.connect([&](SessionItem* item) { widget2.onItemDestroy(item); }, &widget2);
69 
70  std::unique_ptr<SessionItem> item(new SessionItem);
71  EXPECT_CALL(widget1, onItemDestroy(item.get())).Times(1);
72  EXPECT_CALL(widget2, onItemDestroy(item.get())).Times(1);
73 
74  // perform action
75  signal(item.get());
76 
77  // removing one of client
78  signal.remove_client(&widget1);
79  EXPECT_CALL(widget1, onItemDestroy(_)).Times(0);
80  EXPECT_CALL(widget2, onItemDestroy(item.get())).Times(1);
81 
82  // perform action
83  signal(item.get());
84 }

References ModelView::SignalBase< T, U >::connect(), and ModelView::SignalBase< T, U >::remove_client().

Here is the call graph for this function: