16
16
17
17
#include < gmock/gmock.h>
18
18
19
+ using ::testing::IsEmpty;
20
+ using ::testing::SizeIs;
21
+
19
22
TEST_F (ChainableControllerInterfaceTest, default_returns)
20
23
{
21
24
TestableChainableControllerInterface controller;
@@ -31,7 +34,7 @@ TEST_F(ChainableControllerInterfaceTest, default_returns)
31
34
EXPECT_FALSE (controller.is_in_chained_mode ());
32
35
}
33
36
34
- TEST_F (ChainableControllerInterfaceTest, export_reference_interfaces )
37
+ TEST_F (ChainableControllerInterfaceTest, export_state_interfaces )
35
38
{
36
39
TestableChainableControllerInterface controller;
37
40
@@ -42,16 +45,16 @@ TEST_F(ChainableControllerInterfaceTest, export_reference_interfaces)
42
45
controller_interface::return_type::OK);
43
46
ASSERT_NO_THROW (controller.get_node ());
44
47
45
- auto reference_interfaces = controller.export_reference_interfaces ();
48
+ auto exported_state_interfaces = controller.export_state_interfaces ();
46
49
47
- ASSERT_EQ (reference_interfaces. size (), 1u );
48
- EXPECT_EQ (reference_interfaces [0 ].get_prefix_name (), TEST_CONTROLLER_NAME);
49
- EXPECT_EQ (reference_interfaces [0 ].get_interface_name (), " test_itf " );
50
+ ASSERT_THAT (exported_state_interfaces, SizeIs ( 1 ) );
51
+ EXPECT_EQ (exported_state_interfaces [0 ].get_prefix_name (), TEST_CONTROLLER_NAME);
52
+ EXPECT_EQ (exported_state_interfaces [0 ].get_interface_name (), " test_state " );
50
53
51
- EXPECT_EQ (reference_interfaces [0 ].get_value (), INTERFACE_VALUE );
54
+ EXPECT_EQ (exported_state_interfaces [0 ].get_value (), EXPORTED_STATE_INTERFACE_VALUE );
52
55
}
53
56
54
- TEST_F (ChainableControllerInterfaceTest, reference_interfaces_storage_not_correct_size )
57
+ TEST_F (ChainableControllerInterfaceTest, export_reference_interfaces )
55
58
{
56
59
TestableChainableControllerInterface controller;
57
60
@@ -62,13 +65,16 @@ TEST_F(ChainableControllerInterfaceTest, reference_interfaces_storage_not_correc
62
65
controller_interface::return_type::OK);
63
66
ASSERT_NO_THROW (controller.get_node ());
64
67
65
- // expect empty return because storage is not resized
66
- controller.reference_interfaces_ .clear ();
67
68
auto reference_interfaces = controller.export_reference_interfaces ();
68
- ASSERT_TRUE (reference_interfaces.empty ());
69
+
70
+ ASSERT_THAT (reference_interfaces, SizeIs (1 ));
71
+ EXPECT_EQ (reference_interfaces[0 ].get_prefix_name (), TEST_CONTROLLER_NAME);
72
+ EXPECT_EQ (reference_interfaces[0 ].get_interface_name (), " test_itf" );
73
+
74
+ EXPECT_EQ (reference_interfaces[0 ].get_value (), INTERFACE_VALUE);
69
75
}
70
76
71
- TEST_F (ChainableControllerInterfaceTest, reference_interfaces_prefix_is_not_node_name )
77
+ TEST_F (ChainableControllerInterfaceTest, interfaces_prefix_is_not_node_name )
72
78
{
73
79
TestableChainableControllerInterface controller;
74
80
@@ -83,7 +89,10 @@ TEST_F(ChainableControllerInterfaceTest, reference_interfaces_prefix_is_not_node
83
89
84
90
// expect empty return because interface prefix is not equal to the node name
85
91
auto reference_interfaces = controller.export_reference_interfaces ();
86
- ASSERT_TRUE (reference_interfaces.empty ());
92
+ ASSERT_THAT (reference_interfaces, IsEmpty ());
93
+ // expect empty return because interface prefix is not equal to the node name
94
+ auto exported_state_interfaces = controller.export_state_interfaces ();
95
+ ASSERT_THAT (exported_state_interfaces, IsEmpty ());
87
96
}
88
97
89
98
TEST_F (ChainableControllerInterfaceTest, setting_chained_mode)
@@ -98,12 +107,15 @@ TEST_F(ChainableControllerInterfaceTest, setting_chained_mode)
98
107
ASSERT_NO_THROW (controller.get_node ());
99
108
100
109
auto reference_interfaces = controller.export_reference_interfaces ();
101
- ASSERT_EQ (reference_interfaces.size (), 1u );
110
+ ASSERT_THAT (reference_interfaces, SizeIs (1 ));
111
+ auto exported_state_interfaces = controller.export_state_interfaces ();
112
+ ASSERT_THAT (exported_state_interfaces, SizeIs (1 ));
102
113
103
114
EXPECT_FALSE (controller.is_in_chained_mode ());
104
115
105
116
// Fail setting chained mode
106
117
EXPECT_EQ (reference_interfaces[0 ].get_value (), INTERFACE_VALUE);
118
+ EXPECT_EQ (exported_state_interfaces[0 ].get_value (), EXPORTED_STATE_INTERFACE_VALUE);
107
119
108
120
EXPECT_FALSE (controller.set_chained_mode (true ));
109
121
EXPECT_FALSE (controller.is_in_chained_mode ());
@@ -116,6 +128,7 @@ TEST_F(ChainableControllerInterfaceTest, setting_chained_mode)
116
128
117
129
EXPECT_TRUE (controller.set_chained_mode (true ));
118
130
EXPECT_TRUE (controller.is_in_chained_mode ());
131
+ EXPECT_EQ (exported_state_interfaces[0 ].get_value (), EXPORTED_STATE_INTERFACE_VALUE_IN_CHAINMODE);
119
132
120
133
controller.configure ();
121
134
EXPECT_TRUE (controller.set_chained_mode (false ));
@@ -147,27 +160,31 @@ TEST_F(ChainableControllerInterfaceTest, test_update_logic)
147
160
controller_interface::return_type::OK);
148
161
ASSERT_NO_THROW (controller.get_node ());
149
162
163
+ EXPECT_FALSE (controller.set_chained_mode (false ));
150
164
EXPECT_FALSE (controller.is_in_chained_mode ());
151
165
152
166
// call update and update it from subscriber because not in chained mode
153
167
ASSERT_EQ (
154
168
controller.update (rclcpp::Time (0 ), rclcpp::Duration::from_seconds (0.01 )),
155
169
controller_interface::return_type::OK);
156
170
ASSERT_EQ (controller.reference_interfaces_ [0 ], INTERFACE_VALUE_INITIAL_REF - 1 );
171
+ ASSERT_EQ (controller.state_interfaces_values_ [0 ], EXPORTED_STATE_INTERFACE_VALUE + 1 );
157
172
158
173
// Provoke error in update from subscribers - return ERROR and update_and_write_commands not exec.
159
174
controller.set_new_reference_interface_value (INTERFACE_VALUE_SUBSCRIBER_ERROR);
160
175
ASSERT_EQ (
161
176
controller.update (rclcpp::Time (0 ), rclcpp::Duration::from_seconds (0.01 )),
162
177
controller_interface::return_type::ERROR);
163
178
ASSERT_EQ (controller.reference_interfaces_ [0 ], INTERFACE_VALUE_INITIAL_REF - 1 );
179
+ ASSERT_EQ (controller.state_interfaces_values_ [0 ], EXPORTED_STATE_INTERFACE_VALUE + 1 );
164
180
165
181
// Provoke error from update - return ERROR, but reference interface is updated and not reduced
166
182
controller.set_new_reference_interface_value (INTERFACE_VALUE_UPDATE_ERROR);
167
183
ASSERT_EQ (
168
184
controller.update (rclcpp::Time (0 ), rclcpp::Duration::from_seconds (0.01 )),
169
185
controller_interface::return_type::ERROR);
170
186
ASSERT_EQ (controller.reference_interfaces_ [0 ], INTERFACE_VALUE_UPDATE_ERROR);
187
+ ASSERT_EQ (controller.state_interfaces_values_ [0 ], EXPORTED_STATE_INTERFACE_VALUE + 1 );
171
188
172
189
controller.reference_interfaces_ [0 ] = 0.0 ;
173
190
@@ -181,6 +198,8 @@ TEST_F(ChainableControllerInterfaceTest, test_update_logic)
181
198
controller.update (rclcpp::Time (0 ), rclcpp::Duration::from_seconds (0.01 )),
182
199
controller_interface::return_type::OK);
183
200
ASSERT_EQ (controller.reference_interfaces_ [0 ], -1.0 );
201
+ ASSERT_EQ (
202
+ controller.state_interfaces_values_ [0 ], EXPORTED_STATE_INTERFACE_VALUE_IN_CHAINMODE + 1 );
184
203
185
204
// Provoke error from update - return ERROR, but reference interface is updated directly
186
205
controller.set_new_reference_interface_value (INTERFACE_VALUE_SUBSCRIBER_ERROR);
@@ -189,4 +208,6 @@ TEST_F(ChainableControllerInterfaceTest, test_update_logic)
189
208
controller.update (rclcpp::Time (0 ), rclcpp::Duration::from_seconds (0.01 )),
190
209
controller_interface::return_type::ERROR);
191
210
ASSERT_EQ (controller.reference_interfaces_ [0 ], INTERFACE_VALUE_UPDATE_ERROR);
211
+ ASSERT_EQ (
212
+ controller.state_interfaces_values_ [0 ], EXPORTED_STATE_INTERFACE_VALUE_IN_CHAINMODE + 1 );
192
213
}
0 commit comments