00001 #include <gtest/gtest.h>
00002 #include "robodyn_mechanisms/GripperSupervisor.h"
00003 #include <ros/package.h>
00004
00005 class GripperSupervisorTest : public ::testing::Test
00006 {
00007 protected:
00008 virtual void SetUp()
00009 {
00010 ros::Time::init();
00011
00012 grippers.push_back("r2/left_leg/gripper/joint0");
00013 grippers.push_back("r2/right_leg/gripper/joint0");
00014
00015 gripperState.name.push_back("r2/left_leg/gripper/joint0");
00016 gripperState.name.push_back("r2/right_leg/gripper/joint0");
00017 gripperState.locked.push_back(1);
00018 gripperState.locked.push_back(0);
00019 gripperState.loaded.push_back(1);
00020 gripperState.loaded.push_back(1);
00021
00022 baseFrames.data.push_back("r2/left_leg/gripper/tip");
00023
00024 goalStat.goal_id.id = "r2/left_leg/gripper/joint0";
00025 goalStat.goal_id.stamp = ros::Time::now();
00026 goalStat.status = actionlib_msgs::GoalStatus::SUCCEEDED;
00027 goalStati.status_list.push_back(goalStat);
00028 goalStat.goal_id.id = "r2/right_leg/gripper/joint0";
00029 goalStat.status = actionlib_msgs::GoalStatus::PENDING;
00030 goalStati.status_list.push_back(goalStat);
00031 goalStat.status = actionlib_msgs::GoalStatus::ABORTED;
00032 goalStati.status_list.push_back(goalStat);
00033
00034 jntMode.controlMode.state = r2_msgs::JointControlMode::PARK;
00035 jntMode.coeffState.state = r2_msgs::JointControlCoeffState::LOADED;
00036 jntModeList.joint.push_back("r2/left_leg/gripper/joint0");
00037 jntModeList.data.push_back(jntMode);
00038 jntMode.controlMode.state = r2_msgs::JointControlMode::FAULTED;
00039 jntMode.coeffState.state = r2_msgs::JointControlCoeffState::NOTLOADED;
00040 jntModeList.joint.push_back("r2/right_leg/gripper/joint0");
00041 jntModeList.data.push_back(jntMode);
00042 jntMode.controlMode.state = r2_msgs::JointControlMode::DRIVE;
00043 jntModeList.joint.push_back("joint1");
00044 jntModeList.data.push_back(jntMode);
00045
00046 gripCmd.name.push_back("r2/left_leg/gripper/joint0");
00047 gripCmd.setpoint.push_back("null");
00048 gripCmd.command.push_back("release");
00049 gripCmd.name.push_back("r2/right_leg/gripper/joint0");
00050 gripCmd.setpoint.push_back("null");
00051 gripCmd.command.push_back("lock");
00052
00053 driveRequest.data.push_back("r2/left_leg/gripper/joint0");
00054
00055 }
00056
00057 virtual void TearDown()
00058 {
00059 }
00060
00061 GripperSupervisor gs;
00062 std::vector<std::string> grippers;
00063 r2_msgs::GripperPositionState gripperState;
00064 r2_msgs::StringArray baseFrames;
00065 actionlib_msgs::GoalStatusArray goalStati;
00066 actionlib_msgs::GoalStatus goalStat;
00067 r2_msgs::JointControlDataArray jntModeList;
00068 r2_msgs::JointControlData jntMode;
00069 r2_msgs::GripperPositionCommand gripCmd;
00070 r2_msgs::StringArray driveRequest, requestOut;
00071 };
00072
00073 TEST_F(GripperSupervisorTest, InitializeMapsTest)
00074 {
00075
00076
00077 gs.initializeMaps(grippers);
00078
00079 ASSERT_FALSE(gs.endEffectorMap.empty());
00080 EXPECT_EQ (0, gs.endEffectorMap.count("joint1"));
00081 EXPECT_EQ (IDLE, gs.getState("r2/left_leg/gripper/joint0"));
00082 EXPECT_EQ (0, gs.gripperJointModeMap.count("link1"));
00083 }
00084
00085 TEST_F(GripperSupervisorTest, PopulateGripperStateInfoTest)
00086 {
00087 gs.initializeMaps(grippers);
00088
00089 gs.populateGripperStateInfo(gripperState);
00090
00091 EXPECT_EQ(1, gs.endEffectorMap["r2/left_leg/gripper/joint0"].locked);
00092 EXPECT_EQ(1, gs.endEffectorMap["r2/right_leg/gripper/joint0"].loaded);
00093
00094 }
00095
00096 TEST_F(GripperSupervisorTest, PopulateBaseFrameInfoTest)
00097 {
00098 gs.initializeMaps(grippers);
00099
00100 gs.populateBaseFrameInfo(baseFrames);
00101
00102 EXPECT_EQ(1, gs.baseFrameList.size());
00103 EXPECT_EQ("r2/left_leg/gripper/tip", gs.baseFrameList[0]);
00104
00105 gs.populateBaseFrameInfo(baseFrames);
00106 EXPECT_EQ(1, gs.baseFrameList.size());
00107
00108 }
00109
00110 TEST_F(GripperSupervisorTest, PopulateCheckedGrippersTest)
00111 {
00112 gs.initializeMaps(grippers);
00113
00114 gs.populateCheckedGrippers(true);
00115
00116 EXPECT_TRUE(gs.gripperDriveApprovedMap["r2/left_leg/gripper/joint0"]);
00117 EXPECT_TRUE(gs.gripperDriveApprovedMap["r2/right_leg/gripper/joint0"]);
00118
00119 gs.populateCheckedGrippers(driveRequest);
00120
00121 EXPECT_TRUE(gs.gripperDriveApprovedMap["r2/left_leg/gripper/joint0"]);
00122 EXPECT_FALSE(gs.gripperDriveApprovedMap["r2/right_leg/gripper/joint0"]);
00123
00124 }
00125
00126 TEST_F(GripperSupervisorTest, PopulateGoalStatusTest)
00127 {
00128 gs.initializeMaps(grippers);
00129
00130 gs.populateGoalStatus(goalStati);
00131
00132 EXPECT_EQ(2, gs.goalStatuses.status_list.size());
00133 EXPECT_EQ(actionlib_msgs::GoalStatus::SUCCEEDED, gs.goalStatuses.status_list[0].status);
00134 EXPECT_EQ("r2/right_leg/gripper/joint0", gs.goalStatuses.status_list[1].goal_id.id);
00135 }
00136
00137 TEST_F(GripperSupervisorTest, PopulateJointControlModeTest)
00138 {
00139 gs.initializeMaps(grippers);
00140
00141 gs.populateJointControlMode(jntModeList);
00142
00143 EXPECT_EQ(0, gs.gripperJointModeMap.count("joint1"));
00144 EXPECT_EQ(r2_msgs::JointControlMode::PARK, gs.gripperJointModeMap["r2/left_leg/gripper/joint0"].state);
00145 EXPECT_EQ(1, gs.gripperJointModeMap.count("r2/right_leg/gripper/joint0"));
00146 }
00147
00148 TEST_F(GripperSupervisorTest, PopulateGripperCommandsInTest)
00149 {
00150 gs.initializeMaps(grippers);
00151
00152 gs.populateGripperCommandsIn(gripCmd);
00153
00154 EXPECT_EQ(2, gs.gripperCmds.name.size());
00155 EXPECT_EQ("release", gs.gripperCmds.command[0]);
00156 EXPECT_EQ("r2/right_leg/gripper/joint0", gs.gripperCmds.name[1]);
00157 }
00158
00159 TEST_F(GripperSupervisorTest, CheckTransitionsTest)
00160 {
00161
00162 r2_msgs::JointControlDataArray modeCmdOut;
00163 r2_msgs::GripperPositionCommand gripCmdOut;
00164 actionlib_msgs::GoalStatusArray statusOut;
00165
00166 gs.initializeMaps(grippers);
00167 gs.populateBaseFrameInfo(baseFrames);
00168 gs.populateGripperStateInfo(gripperState);
00169 gs.populateCheckedGrippers(true);
00170 gs.setLimits(255, 400);
00171
00172
00173 gs.populateJointControlMode(jntModeList);
00174 gs.checkTransitions(0);
00175 gs.populateJointControlCommandMsg(modeCmdOut);
00176 gs.populateGoalStatusMsg(statusOut);
00177 gs.populateGripperCommandMsg(gripCmdOut);
00178 EXPECT_EQ(IDLE, gs.getState("r2/right_leg/gripper/joint0"));
00179 EXPECT_EQ(IDLE, gs.getState("r2/left_leg/gripper/joint0"));
00180 ASSERT_EQ(0, modeCmdOut.joint.size());
00181 ASSERT_EQ(0, gripCmdOut.name.size());
00182
00183
00184 jntModeList.data[1].coeffState.state = r2_msgs::JointControlCoeffState::LOADED;
00185 gs.populateJointControlMode(jntModeList);
00186 gs.checkTransitions(0);
00187 gs.populateJointControlCommandMsg(modeCmdOut);
00188 gs.populateGoalStatusMsg(statusOut);
00189 gs.populateGripperCommandMsg(gripCmdOut);
00190 EXPECT_EQ(FAULT, gs.getState("r2/right_leg/gripper/joint0"));
00191 EXPECT_EQ(IDLE, gs.getState("r2/left_leg/gripper/joint0"));
00192 ASSERT_EQ(0, modeCmdOut.joint.size());
00193 ASSERT_EQ(1, gripCmdOut.name.size());
00194 EXPECT_EQ("c_cancel", gripCmdOut.command[0]);
00195 EXPECT_EQ("null", gripCmdOut.setpoint[0]);
00196
00197
00198 gs.checkTransitions(0);
00199 gs.populateJointControlCommandMsg(modeCmdOut);
00200 gs.populateGoalStatusMsg(statusOut);
00201 gs.populateGripperCommandMsg(gripCmdOut);
00202 EXPECT_EQ(FAULT, gs.getState("r2/right_leg/gripper/joint0"));
00203 EXPECT_EQ(IDLE, gs.getState("r2/left_leg/gripper/joint0"));
00204 ASSERT_EQ(0, modeCmdOut.joint.size());
00205 ASSERT_EQ(0, gripCmdOut.name.size());
00206
00207
00208 jntModeList.data[1].controlMode.state = r2_msgs::JointControlMode::PARK;
00209 gs.populateJointControlMode(jntModeList);
00210 gs.checkTransitions(0);
00211 gs.populateJointControlCommandMsg(modeCmdOut);
00212 gs.populateGoalStatusMsg(statusOut);
00213 gs.populateGripperCommandMsg(gripCmdOut);
00214 EXPECT_EQ(IDLE, gs.getState("r2/right_leg/gripper/joint0"));
00215 ASSERT_EQ(0, modeCmdOut.joint.size());
00216 ASSERT_EQ(0, gripCmdOut.name.size());
00217
00218
00219 jntModeList.data[0].controlMode.state = r2_msgs::JointControlMode::DRIVE;
00220 jntModeList.data[1].controlMode.state = r2_msgs::JointControlMode::DRIVE;
00221 gs.populateJointControlMode(jntModeList);
00222 gs.populateGoalStatus(goalStati);
00223 gs.checkTransitions(0);
00224 gs.populateJointControlCommandMsg(modeCmdOut);
00225 gs.populateGoalStatusMsg(statusOut);
00226 gs.populateGripperCommandMsg(gripCmdOut);
00227 EXPECT_EQ(IDLE, gs.getState("r2/left_leg/gripper/joint0"));
00228 EXPECT_EQ(FAILURE, gs.getState("r2/right_leg/gripper/joint0"));
00229 ASSERT_EQ(2, modeCmdOut.joint.size());
00230 EXPECT_EQ(r2_msgs::JointControlMode::PARK, modeCmdOut.data[1].controlMode.state);
00231 ASSERT_EQ(0, gripCmdOut.name.size());
00232
00233
00234 jntModeList.data[0].controlMode.state = r2_msgs::JointControlMode::PARK;
00235 jntModeList.data[1].controlMode.state = r2_msgs::JointControlMode::PARK;
00236 gs.populateJointControlMode(jntModeList);
00237 gs.populateGripperCommandsIn(gripCmd);
00238 gs.checkTransitions(0);
00239 gs.populateJointControlCommandMsg(modeCmdOut);
00240 gs.populateGoalStatusMsg(statusOut);
00241 gs.populateGripperCommandMsg(gripCmdOut);
00242 EXPECT_EQ(IDLE, gs.getState("r2/left_leg/gripper/joint0"));
00243 EXPECT_EQ(FAILURE, gs.getState("r2/right_leg/gripper/joint0"));
00244 ASSERT_EQ(0, modeCmdOut.joint.size());
00245 ASSERT_EQ(0, gripCmdOut.name.size());
00246
00247
00248
00249 gripCmd.name.clear();
00250 gripCmd.setpoint.clear();
00251 gripCmd.command.clear();
00252 gripCmd.name.push_back("r2/right_leg/gripper/joint0");
00253 gripCmd.setpoint.push_back("null");
00254 gripCmd.command.push_back("reset");
00255 gs.populateGripperCommandsIn(gripCmd);
00256 gs.checkTransitions(0);
00257 gs.populateJointControlCommandMsg(modeCmdOut);
00258 gs.populateGoalStatusMsg(statusOut);
00259 gs.populateGripperCommandMsg(gripCmdOut);
00260 EXPECT_EQ(IDLE, gs.getState("r2/right_leg/gripper/joint0"));
00261 ASSERT_EQ(0, modeCmdOut.joint.size());
00262 ASSERT_EQ(0, gripCmdOut.name.size());
00263
00264
00265 gripCmd.name.clear();
00266 gripCmd.setpoint.clear();
00267 gripCmd.command.clear();
00268 gripCmd.name.push_back("r2/right_leg/gripper/joint0");
00269 gripCmd.setpoint.push_back("closed");
00270 gripCmd.command.push_back("set");
00271 gs.populateGripperCommandsIn(gripCmd);
00272 gs.checkTransitions(0);
00273 gs.populateJointControlCommandMsg(modeCmdOut);
00274 gs.populateGoalStatusMsg(statusOut);
00275 gs.populateGripperCommandMsg(gripCmdOut);
00276 EXPECT_EQ(SET, gs.getState("r2/right_leg/gripper/joint0"));
00277 ASSERT_EQ(1, modeCmdOut.joint.size());
00278 EXPECT_EQ(r2_msgs::JointControlMode::DRIVE, modeCmdOut.data[0].controlMode.state);
00279 EXPECT_EQ(0, gripCmdOut.name.size());
00280
00281
00282 jntModeList.data[1].controlMode.state = r2_msgs::JointControlMode::DRIVE;
00283 gs.populateJointControlMode(jntModeList);
00284 gs.checkTransitions(0);
00285 gs.populateJointControlCommandMsg(modeCmdOut);
00286 gs.populateGoalStatusMsg(statusOut);
00287 gs.populateGripperCommandMsg(gripCmdOut);
00288 EXPECT_EQ(SET_PENDING, gs.getState("r2/right_leg/gripper/joint0"));
00289 EXPECT_EQ(0, modeCmdOut.joint.size());
00290 ASSERT_EQ(1, gripCmdOut.name.size());
00291 EXPECT_EQ("c_set", gripCmdOut.command[0]);
00292 EXPECT_EQ(255, gripCmdOut.dutyCycle[0]);
00293
00294
00295 goalStati.status_list.clear();
00296 goalStat.goal_id.id = "r2/right_leg/gripper/joint0";
00297 goalStat.goal_id.stamp = ros::Time::now();
00298 goalStat.status = actionlib_msgs::GoalStatus::SUCCEEDED;
00299 goalStati.status_list.push_back(goalStat);
00300 gs.populateGoalStatus(goalStati);
00301 gs.checkTransitions(0);
00302 gs.populateJointControlCommandMsg(modeCmdOut);
00303 gs.populateGoalStatusMsg(statusOut);
00304 gs.populateGripperCommandMsg(gripCmdOut);
00305 EXPECT_EQ(IDLE, gs.getState("r2/right_leg/gripper/joint0"));
00306 EXPECT_EQ(0, modeCmdOut.joint.size());
00307 EXPECT_EQ(0, gripCmdOut.name.size());
00308
00309
00310 gripCmd.name.clear();
00311 gripCmd.setpoint.clear();
00312 gripCmd.command.clear();
00313 gripCmd.name.push_back("r2/right_leg/gripper/joint0");
00314 gripCmd.setpoint.push_back("Dustin smells funny");
00315 gripCmd.command.push_back("lock");
00316 gs.populateGripperCommandsIn(gripCmd);
00317
00318 gs.checkTransitions(0);
00319 gs.populateJointControlCommandMsg(modeCmdOut);
00320 gs.populateGoalStatusMsg(statusOut);
00321 gs.populateGripperCommandMsg(gripCmdOut);
00322 EXPECT_EQ(LOCK_PENDING, gs.getState("r2/right_leg/gripper/joint0"));
00323 ASSERT_EQ(1, gripCmdOut.name.size());
00324 EXPECT_EQ(0, modeCmdOut.joint.size());
00325 EXPECT_EQ("c_lock", gripCmdOut.command[0]);
00326 EXPECT_EQ("Dustin smells funny", gripCmdOut.setpoint[0]);
00327 EXPECT_EQ(255, gripCmdOut.dutyCycle[0]);
00328
00329
00330 gripCmd.name.clear();
00331 gripCmd.setpoint.clear();
00332 gripCmd.command.clear();
00333 gripCmd.name.push_back("r2/left_leg/gripper/joint0");
00334 gripCmd.setpoint.push_back("Dustin smells funny");
00335 gripCmd.command.push_back("lock");
00336 gs.populateGripperCommandsIn(gripCmd);
00337 gs.checkTransitions(0);
00338 gs.populateJointControlCommandMsg(modeCmdOut);
00339 gs.populateGoalStatusMsg(statusOut);
00340 gs.populateGripperCommandMsg(gripCmdOut);
00341 EXPECT_EQ(0, modeCmdOut.joint.size());
00342 EXPECT_EQ(0, gripCmdOut.name.size());
00343
00344
00345 goalStati.status_list.clear();
00346 goalStat.goal_id.id = "r2/right_leg/gripper/joint0";
00347 goalStat.goal_id.stamp = ros::Time::now();
00348 goalStat.status = actionlib_msgs::GoalStatus::SUCCEEDED;
00349 goalStati.status_list.push_back(goalStat);
00350 gs.populateGoalStatus(goalStati);
00351 gripperState.locked[1] = 1;
00352 gs.populateGripperStateInfo(gripperState);
00353 gs.checkTransitions(0);
00354 gs.populateJointControlCommandMsg(modeCmdOut);
00355 gs.populateGoalStatusMsg(statusOut);
00356 gs.populateGripperCommandMsg(gripCmdOut);
00357 EXPECT_EQ(LOCK_PENDING, gs.getState("r2/right_leg/gripper/joint0"));
00358 ASSERT_EQ(1, modeCmdOut.joint.size());
00359 EXPECT_EQ(0, gripCmdOut.name.size());
00360 EXPECT_EQ(r2_msgs::JointControlMode::PARK, modeCmdOut.data[0].controlMode.state);
00361
00362 jntModeList.data[1].controlMode.state = r2_msgs::JointControlMode::PARK;
00363 gs.populateJointControlMode(jntModeList);
00364 gs.checkTransitions(0);
00365 EXPECT_EQ(IDLE, gs.getState("r2/right_leg/gripper/joint0"));
00366
00367
00368 gs.populateCheckedGrippers(false);
00369 baseFrames.data.push_back("r2/right_leg/gripper/tip");
00370 gs.populateBaseFrameInfo(baseFrames);
00371 gripCmd.name.clear();
00372 gripCmd.setpoint.clear();
00373 gripCmd.command.clear();
00374 gripCmd.name.push_back("r2/left_leg/gripper/joint0");
00375 gripCmd.setpoint.push_back("null");
00376 gripCmd.command.push_back("release");
00377 gs.populateGripperCommandsIn(gripCmd);
00378 gs.checkTransitions(0);
00379 gs.populateJointControlCommandMsg(modeCmdOut);
00380 gs.populateGoalStatusMsg(statusOut);
00381 gs.populateGripperCommandMsg(gripCmdOut);
00382 gs.populateDriveRequestMsg(requestOut);
00383 EXPECT_EQ(REQUEST_PENDING, gs.getState("r2/left_leg/gripper/joint0"));
00384 EXPECT_EQ(0, modeCmdOut.joint.size());
00385 EXPECT_EQ(0, gripCmdOut.name.size());
00386 ASSERT_EQ(1, requestOut.data.size());
00387 EXPECT_EQ("r2/left_leg/gripper/joint0", requestOut.data[0]);
00388
00389
00390 gs.populateCheckedGrippers(driveRequest);
00391 gs.checkTransitions(0);
00392 gs.populateJointControlCommandMsg(modeCmdOut);
00393 gs.populateGoalStatusMsg(statusOut);
00394 gs.populateGripperCommandMsg(gripCmdOut);
00395 gs.populateDriveRequestMsg(requestOut);
00396 EXPECT_EQ(RELEASE, gs.getState("r2/left_leg/gripper/joint0"));
00397 ASSERT_EQ(1, modeCmdOut.joint.size());
00398 EXPECT_EQ(0, gripCmdOut.name.size());
00399 EXPECT_EQ(0, requestOut.data.size());
00400 EXPECT_EQ(r2_msgs::JointControlMode::DRIVE, modeCmdOut.data[0].controlMode.state);
00401
00402
00403 gs.populateCheckedGrippers(true);
00404 jntModeList.data[0].controlMode.state = r2_msgs::JointControlMode::DRIVE;
00405 gs.populateJointControlMode(jntModeList);
00406 goalStati.status_list.clear();
00407 goalStat.goal_id.id = "r2/left_leg/gripper/joint0";
00408 goalStat.goal_id.stamp = ros::Time::now();
00409 goalStat.status = actionlib_msgs::GoalStatus::ABORTED;
00410 goalStati.status_list.push_back(goalStat);
00411 gs.populateGoalStatus(goalStati);
00412 gs.checkTransitions(0);
00413 gs.populateJointControlCommandMsg(modeCmdOut);
00414 gs.populateGoalStatusMsg(statusOut);
00415 gs.populateGripperCommandMsg(gripCmdOut);
00416 EXPECT_EQ(FAILURE, gs.getState("r2/left_leg/gripper/joint0"));
00417 ASSERT_EQ(1, modeCmdOut.joint.size());
00418 EXPECT_EQ(0, gripCmdOut.name.size());
00419 EXPECT_EQ(r2_msgs::JointControlMode::PARK, modeCmdOut.data[0].controlMode.state);
00420
00421
00422 jntModeList.data[0].controlMode.state = r2_msgs::JointControlMode::PARK;
00423 jntModeList.data[1].controlMode.state = r2_msgs::JointControlMode::PARK;
00424 gs.populateJointControlMode(jntModeList);
00425 gripCmd.name.clear();
00426 gripCmd.setpoint.clear();
00427 gripCmd.command.clear();
00428 gripCmd.name.push_back("r2/left_leg/gripper/joint0");
00429 gripCmd.setpoint.push_back("null");
00430 gripCmd.command.push_back("reset");
00431 gs.populateGripperCommandsIn(gripCmd);
00432 gs.checkTransitions(0);
00433 gs.populateJointControlCommandMsg(modeCmdOut);
00434 gs.populateGoalStatusMsg(statusOut);
00435 gs.populateGripperCommandMsg(gripCmdOut);
00436 EXPECT_EQ(IDLE, gs.getState("r2/left_leg/gripper/joint0"));
00437 ASSERT_EQ(0, modeCmdOut.joint.size());
00438 EXPECT_EQ(0, gripCmdOut.name.size());
00439
00440
00441 gripCmd.name.clear();
00442 gripCmd.setpoint.clear();
00443 gripCmd.command.clear();
00444 gripCmd.name.push_back("r2/left_leg/gripper/joint0");
00445 gripCmd.setpoint.push_back("null");
00446 gripCmd.command.push_back("release");
00447 gripCmd.name.push_back("r2/right_leg/gripper/joint0");
00448 gripCmd.setpoint.push_back("null");
00449 gripCmd.command.push_back("release");
00450 gs.populateGripperCommandsIn(gripCmd);
00451 gs.checkTransitions(0);
00452 gs.populateJointControlCommandMsg(modeCmdOut);
00453 gs.populateGoalStatusMsg(statusOut);
00454 gs.populateGripperCommandMsg(gripCmdOut);
00455 EXPECT_EQ(RELEASE, gs.getState("r2/left_leg/gripper/joint0"));
00456 EXPECT_EQ(IDLE, gs.getState("r2/right_leg/gripper/joint0"));
00457 ASSERT_EQ(1, modeCmdOut.joint.size());
00458 EXPECT_EQ(0, gripCmdOut.name.size());
00459 EXPECT_EQ(r2_msgs::JointControlMode::DRIVE, modeCmdOut.data[0].controlMode.state);
00460
00461 }
00462
00463 int main(int argc, char** argv)
00464 {
00465 ::testing::InitGoogleTest(&argc, argv);
00466 return RUN_ALL_TESTS();
00467 }