RosMsgBFVerifierTest.cpp
Go to the documentation of this file.
00001 #include <gtest/gtest.h>
00002 #include "nasa_controllers_core/RosMsgBFVerifier.h"
00003 #include <ros/package.h>
00004 
00005 class RosMsgBFVerifierTest : public ::testing::Test
00006 {
00007 protected:
00008     virtual void SetUp()
00009     {
00010         std::string packagePath = ros::package::getPath("nasa_controllers_core");
00011         std::string urdfFile    = packagePath + "/test/urdf/SimpleTestRobot.xml";
00012         rmv                     = new RosMsgBFVerifier(urdfFile);
00013 
00014         ros::Time::init();
00015 
00016         eefState.name.push_back("link2");
00017         eefState.name.push_back("link4");
00018         eefState.locked.push_back(1);
00019         eefState.loaded.push_back(1);
00020         eefState.locked.push_back(1);
00021         eefState.loaded.push_back(1);
00022     }
00023 
00024     virtual void TearDown()
00025     {
00026     }
00027 
00028     RosMsgBFVerifier* rmv;
00029     r2_msgs::EndEffectorState eefState;
00030 };
00031 
00032 TEST_F(RosMsgBFVerifierTest, InitializeMapTest)
00033 {
00034     // Initialize maps with test tree
00035     rmv->InitializeMap();
00036 
00037     ASSERT_FALSE( rmv->endEffectorMap.empty());
00038     EXPECT_EQ (0, rmv->endEffectorMap.count("joint1"));
00039     EXPECT_EQ (0, rmv->endEffectorMap.count("link1"));
00040     EXPECT_EQ (1, rmv->endEffectorMap.count("link2"));
00041     EXPECT_EQ (0, rmv->endEffectorMap["link2"].locked);
00042     EXPECT_EQ (0, rmv->endEffectorMap["link2"].loaded);
00043     EXPECT_EQ (0, rmv->endEffectorMap["link2"].verified);
00044     EXPECT_EQ (0, rmv->endEffectorMap.count("link3"));
00045     EXPECT_EQ (1, rmv->endEffectorMap.count("link4"));
00046 }
00047 
00048 TEST_F(RosMsgBFVerifierTest, UpdateEEFStateTest)
00049 {
00050     rmv->InitializeMap();
00051 
00052     rmv->UpdateEEFState(eefState);
00053 
00054     EXPECT_EQ(1, rmv->endEffectorMap["link2"].locked);
00055     EXPECT_EQ(1, rmv->endEffectorMap["link4"].loaded);
00056 
00057     rmv->SetBaseAsVerif("link4");
00058     eefState.locked[1] = 0;
00059     rmv->UpdateEEFState(eefState);
00060     EXPECT_EQ(0, rmv->endEffectorMap["link4"].locked);
00061     EXPECT_EQ(0, rmv->endEffectorMap["link4"].verified);
00062 
00063 }
00064 
00065 TEST_F(RosMsgBFVerifierTest, SetBaseAsVerifTest)
00066 {
00067     std::vector<std::string> bases;
00068 
00069     rmv->InitializeMap();
00070     rmv->UpdateEEFState(eefState);
00071     rmv->SetBaseAsVerif("link2");
00072 
00073     EXPECT_EQ(1, rmv->endEffectorMap["link2"].verified);
00074     EXPECT_EQ(0, rmv->endEffectorMap["link4"].verified);
00075 
00076     eefState.locked[1] = 0;
00077     rmv->UpdateEEFState(eefState);
00078     rmv->SetBaseAsVerif("link4");
00079 
00080     EXPECT_EQ(1, rmv->endEffectorMap["link2"].verified);
00081     EXPECT_EQ(0, rmv->endEffectorMap["link4"].verified);
00082 
00083     eefState.loaded[0] = 0;
00084     rmv->UpdateEEFState(eefState);
00085 
00086     EXPECT_EQ(0, rmv->endEffectorMap["link2"].verified);
00087     EXPECT_EQ(0, rmv->endEffectorMap["link4"].verified);
00088 
00089     eefState.locked[1] = 1;
00090     eefState.loaded[0] = 1;
00091     rmv->UpdateEEFState(eefState);
00092     bases.push_back("link2");
00093     bases.push_back("link4");
00094     rmv->SetBaseAsVerif(bases);
00095 
00096     EXPECT_EQ(1, rmv->endEffectorMap["link2"].verified);
00097     EXPECT_EQ(1, rmv->endEffectorMap["link4"].verified);
00098 }
00099 
00100 TEST_F(RosMsgBFVerifierTest, isLegalToVerifTest)
00101 {
00102     std::string          name = "link2";
00103     r2_msgs::StringArray baseFrameMsg;
00104 
00105     rmv->InitializeMap();
00106     rmv->UpdateEEFState(eefState);
00107 
00108     EXPECT_EQ(0, rmv->isLegalToVerif(name, baseFrameMsg));
00109 
00110     name = "link3";
00111     rmv->SetBaseAsVerif("link2");
00112     baseFrameMsg.data.push_back("link2");
00113     EXPECT_EQ(0, rmv->isLegalToVerif(name, baseFrameMsg));
00114 
00115     name = "link4";
00116     EXPECT_EQ(1, rmv->isLegalToVerif(name, baseFrameMsg));
00117 
00118     name = "link2";
00119     EXPECT_EQ(0, rmv->isLegalToVerif(name, baseFrameMsg));
00120 
00121 }
00122 
00123 TEST_F(RosMsgBFVerifierTest, PopulateBaseVerifMessageTest)
00124 {
00125     r2_msgs::EndEffectorState bfVerif;
00126 
00127     rmv->InitializeMap();
00128     rmv->UpdateEEFState(eefState);
00129 
00130     rmv->PopulateBaseVerifMessage(bfVerif);
00131     ASSERT_EQ("link2", bfVerif.name[0]);
00132     EXPECT_EQ(0, bfVerif.verified[0]);
00133 
00134     rmv->SetBaseAsVerif("link2");
00135     rmv->PopulateBaseVerifMessage(bfVerif);
00136     ASSERT_EQ("link2", bfVerif.name[0]);
00137     EXPECT_EQ(1, bfVerif.verified[0]);
00138     ASSERT_EQ("link4", bfVerif.name[1]);
00139     EXPECT_EQ(0, bfVerif.verified[1]);
00140 }
00141 
00142 TEST_F(RosMsgBFVerifierTest, PopulateStatusMessageTest)
00143 {
00144     std::string          modeName, qualifier;
00145     r2_msgs::StringArray statusMsg;
00146 
00147     modeName  = "idle";
00148     qualifier = "poop";
00149 
00150     rmv->PopulateStatusMessage(modeName, qualifier, statusMsg);
00151     ASSERT_EQ(2, statusMsg.data.size());
00152     EXPECT_EQ("idle", statusMsg.data[0]);
00153     EXPECT_EQ("poop", statusMsg.data[1]);
00154 }
00155 
00156 int main(int argc, char **argv) 
00157 {
00158     ::testing::InitGoogleTest(&argc, argv);
00159     return RUN_ALL_TESTS();
00160 }


robodyn_controllers
Author(s):
autogenerated on Sat Jun 8 2019 20:20:53