StringUtilities_Test.cpp
Go to the documentation of this file.
00001 #include <gtest/gtest.h>
00002 #include <iostream>
00003 #include <boost/shared_ptr.hpp>
00004 #include "robot_instance/StringUtilities.h"
00005 
00006 TEST(StringUtilitiesTest, IsValid)
00007 {
00008     EXPECT_TRUE(StringUtilities::isFullyQualifiedRobonetNode("/ASDF/ASDF"));
00009     EXPECT_TRUE(StringUtilities::isFullyQualifiedRobonetNode("/ASDF_1/ASDF_1"));
00010     EXPECT_FALSE(StringUtilities::isFullyQualifiedRobonetNode("ASDF"));
00011     EXPECT_FALSE(StringUtilities::isFullyQualifiedRobonetNode("/ASDF"));
00012     EXPECT_FALSE(StringUtilities::isFullyQualifiedRobonetNode("ASDF/"));
00013     EXPECT_FALSE(StringUtilities::isFullyQualifiedRobonetNode("/ASDF/"));
00014     EXPECT_FALSE(StringUtilities::isFullyQualifiedRobonetNode("ASDF/ASDF/"));
00015     EXPECT_FALSE(StringUtilities::isFullyQualifiedRobonetNode("/ASDF/ASDF/"));
00016     EXPECT_FALSE(StringUtilities::isFullyQualifiedRobonetNode("ASDF/ASDF/ASDF"));
00017     EXPECT_FALSE(StringUtilities::isFullyQualifiedRobonetNode("/ASDF/ASDF/ASDF"));
00018     EXPECT_FALSE(StringUtilities::isFullyQualifiedRobonetNode("/ASDF_ASDF"));
00019 
00020     EXPECT_TRUE(StringUtilities::isFullyQualifiedRobonetElement("/ASDF/ASDF/ASDF"));
00021     EXPECT_TRUE(StringUtilities::isFullyQualifiedRobonetElement("/ASDF_1/ASDF_1/AS.DF_1"));
00022     EXPECT_FALSE(StringUtilities::isFullyQualifiedRobonetElement("/ASDF"));
00023     EXPECT_FALSE(StringUtilities::isFullyQualifiedRobonetElement("/ASDF/"));
00024     EXPECT_FALSE(StringUtilities::isFullyQualifiedRobonetElement("/ASDF/ASDF/"));
00025     EXPECT_FALSE(StringUtilities::isFullyQualifiedRobonetElement("/ASDF_ASDF_ASDF"));
00026 
00027     EXPECT_TRUE(StringUtilities::isFullyQualifiedRoboDynChain("r2/ASDF"));
00028     EXPECT_TRUE(StringUtilities::isFullyQualifiedRoboDynChain("r2/ASDF_1"));
00029     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynChain("ASDF"));
00030     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynChain("/ASDF"));
00031     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynChain("r2ASDF"));
00032     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynChain("r2/ASDF/"));
00033     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynChain("r2/ASDF/ASDF"));
00034     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynChain("r2/ASDF/ASDF/ASDF"));
00035     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynChain("r2/ASDF_1/ASDF_1"));
00036     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynChain("r2/ASDF_1/ASDF_1/ASDF_1"));
00037 
00038     EXPECT_TRUE(StringUtilities::isFullyQualifiedRoboDynJoint("r2/ASDF/ASDF"));
00039     EXPECT_TRUE(StringUtilities::isFullyQualifiedRoboDynJoint("r2/ASDF_1/ASDF_1"));
00040     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJoint("ASDF"));
00041     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJoint("/ASDF"));
00042     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJoint("r2ASDF"));
00043     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJoint("r2/ASDF"));
00044     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJoint("r2/ASDF/"));
00045     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJoint("r2/ASDF/ASDF/"));
00046     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJoint("r2/ASDF/ASDF/ASDF"));
00047 
00048     EXPECT_TRUE(StringUtilities::isFullyQualifiedRoboDynJointWithGroup("r2/ASDF/ASDF/ASDF"));
00049     EXPECT_TRUE(StringUtilities::isFullyQualifiedRoboDynJointWithGroup("r2/ASDF_1/ASDF_1/ASDF_1"));
00050     EXPECT_TRUE(StringUtilities::isFullyQualifiedRoboDynJointWithGroup("r2/ASDF/ASDF/ASDF/ASDAF"));
00051     EXPECT_TRUE(StringUtilities::isFullyQualifiedRoboDynJointWithGroup("r2/ASDF_1/ASDF_1/ASDF_1/ASDF_1"));
00052     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJointWithGroup("ASDF"));
00053     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJointWithGroup("/ASDF"));
00054     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJointWithGroup("r2ASDF"));
00055     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJointWithGroup("r2/ASDF"));
00056     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJointWithGroup("r2/ASDF/"));
00057     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJointWithGroup("r2/ASDF/ASDF/"));
00058     EXPECT_FALSE(StringUtilities::isFullyQualifiedRoboDynJointWithGroup("r2/ASDF/ASDF/ASDF/"));
00059 
00060     EXPECT_TRUE(StringUtilities::isItemWithNumber("ASDF1"));
00061     EXPECT_TRUE(StringUtilities::isItemWithNumber("ASDF_1"));
00062     EXPECT_TRUE(StringUtilities::isItemWithNumber("/ASDF1"));
00063     EXPECT_FALSE(StringUtilities::isItemWithNumber("ASDF"));
00064     EXPECT_FALSE(StringUtilities::isItemWithNumber("ASDF1Z"));
00065 }
00066 
00067 TEST(StringUtilitiesTest, Getters)
00068 {
00069     EXPECT_STREQ("ASDF_1", StringUtilities::getRobonetChannel("/ASDF_1/ZXCV_1").c_str());
00070     EXPECT_STREQ("ASDF_1", StringUtilities::getRobonetChannel("/ASDF_1/ZXCV_1/QW.ER_1").c_str());
00071     EXPECT_THROW(StringUtilities::getRobonetChannel("/ASDF"), std::runtime_error);
00072     EXPECT_THROW(StringUtilities::getRobonetChannel("/ASDF/"), std::runtime_error);
00073     EXPECT_THROW(StringUtilities::getRobonetChannel("/ASDF/ZXCV/"), std::runtime_error);
00074 
00075     EXPECT_STREQ("ZXCV_1", StringUtilities::getRobonetNode("/ASDF_1/ZXCV_1").c_str());
00076     EXPECT_STREQ("ZXCV_1", StringUtilities::getRobonetNode("/ASDF_1/ZXCV_1/QWER_1").c_str());
00077     EXPECT_THROW(StringUtilities::getRobonetNode("/ASDF"), std::runtime_error);
00078     EXPECT_THROW(StringUtilities::getRobonetNode("/ASDF/"), std::runtime_error);
00079     EXPECT_THROW(StringUtilities::getRobonetNode("/ASDF/ZXCV/"), std::runtime_error);
00080 
00081     EXPECT_STREQ("/ASDF_1/ZXCV_1", StringUtilities::getFullyQualifiedRobonetNode("/ASDF_1/ZXCV_1").c_str());
00082     EXPECT_STREQ("/ASDF_1/ZXCV_1", StringUtilities::getFullyQualifiedRobonetNode("/ASDF_1/ZXCV_1/QW.ER_1").c_str());
00083     EXPECT_THROW(StringUtilities::getFullyQualifiedRobonetNode("/ASDF"), std::runtime_error);
00084     EXPECT_THROW(StringUtilities::getFullyQualifiedRobonetNode("/ASDF/"), std::runtime_error);
00085     EXPECT_THROW(StringUtilities::getFullyQualifiedRobonetNode("/ASDF/ZXCV/"), std::runtime_error);
00086 
00087     EXPECT_STREQ("QW.ER_1", StringUtilities::getRobonetElement("/ASDF_1/ZXCV_1/QW.ER_1").c_str());
00088     EXPECT_THROW(StringUtilities::getRobonetElement("/ASDF"), std::runtime_error);
00089     EXPECT_THROW(StringUtilities::getRobonetElement("/ASDF/"), std::runtime_error);
00090     EXPECT_THROW(StringUtilities::getRobonetElement("/ASDF/ZXCV"), std::runtime_error);
00091     EXPECT_THROW(StringUtilities::getRobonetElement("/ASDF/ZXCV/"), std::runtime_error);
00092 
00093     EXPECT_STREQ("ASDF_1", StringUtilities::getRoboDynChain("r2/ASDF_1").c_str());
00094     EXPECT_STREQ("ASDF_1", StringUtilities::getRoboDynChain("r2/ASDF_1/ZXCV_1").c_str());
00095     EXPECT_STREQ("ASDF_1", StringUtilities::getRoboDynChain("r2/ASDF_1/ZXCV_1/QWER_1").c_str());
00096     EXPECT_THROW(StringUtilities::getRoboDynChain("ASDF"), std::runtime_error);
00097     EXPECT_THROW(StringUtilities::getRoboDynChain("/ASDF"), std::runtime_error);
00098     EXPECT_THROW(StringUtilities::getRoboDynChain("r2ASDF"), std::runtime_error);
00099     EXPECT_THROW(StringUtilities::getRoboDynChain("r2/ASDF/"), std::runtime_error);
00100     EXPECT_THROW(StringUtilities::getRoboDynChain("r2/ASDF/ASDF/"), std::runtime_error);
00101 
00102     EXPECT_STREQ("/r2/ASDF_1", StringUtilities::getFullyQualifiedRoboDynChain("r2/ASDF_1").c_str());
00103     EXPECT_STREQ("/r2/ASDF_1", StringUtilities::getFullyQualifiedRoboDynChain("r2/ASDF_1/ZXCV_1").c_str());
00104     EXPECT_STREQ("/r2/ASDF_1", StringUtilities::getFullyQualifiedRoboDynChain("r2/ASDF_1/ZXCV_1/QWER_1").c_str());
00105     EXPECT_THROW(StringUtilities::getFullyQualifiedRoboDynChain("ASDF"), std::runtime_error);
00106     EXPECT_THROW(StringUtilities::getFullyQualifiedRoboDynChain("/ASDF"), std::runtime_error);
00107     EXPECT_THROW(StringUtilities::getFullyQualifiedRoboDynChain("/r2ASDF"), std::runtime_error);
00108     EXPECT_THROW(StringUtilities::getFullyQualifiedRoboDynChain("/r2/ASDF/"), std::runtime_error);
00109     EXPECT_THROW(StringUtilities::getFullyQualifiedRoboDynChain("/r2/ASDF/ASDF/"), std::runtime_error);
00110 
00111     EXPECT_STREQ("ZXCV_1", StringUtilities::getRoboDynJoint("r2/ASDF_1/ZXCV_1").c_str());
00112     EXPECT_STREQ("QWER_1", StringUtilities::getRoboDynJoint("r2/ASDF_1/ZXCV_1/QWER_1").c_str());
00113     EXPECT_THROW(StringUtilities::getRoboDynJoint("ASDF"), std::runtime_error);
00114     EXPECT_THROW(StringUtilities::getRoboDynJoint("/ASDF"), std::runtime_error);
00115     EXPECT_THROW(StringUtilities::getRoboDynJoint("r2ASDF"), std::runtime_error);
00116     EXPECT_THROW(StringUtilities::getRoboDynJoint("r2/ASDF"), std::runtime_error);
00117     EXPECT_THROW(StringUtilities::getRoboDynJoint("r2/ASDF/"), std::runtime_error);
00118     EXPECT_THROW(StringUtilities::getRoboDynJoint("r2/ASDF/ASDF/"), std::runtime_error);
00119 
00120     EXPECT_STREQ("ZXCV_1", StringUtilities::getRoboDynJointGroup("r2/ASDF_1/ZXCV_1/QWER_1").c_str());
00121     EXPECT_STREQ("ZXCV_1/QWER_1", StringUtilities::getRoboDynJointGroup("r2/ASDF_1/ZXCV_1/QWER_1/POIU_1").c_str());
00122     EXPECT_THROW(StringUtilities::getRoboDynJointGroup("ASDF"), std::runtime_error);
00123     EXPECT_THROW(StringUtilities::getRoboDynJointGroup("/ASDF"), std::runtime_error);
00124     EXPECT_THROW(StringUtilities::getRoboDynJointGroup("r2ASDF"), std::runtime_error);
00125     EXPECT_THROW(StringUtilities::getRoboDynJointGroup("r2/ASDF"), std::runtime_error);
00126     EXPECT_THROW(StringUtilities::getRoboDynJointGroup("r2/ASDF/"), std::runtime_error);
00127     EXPECT_THROW(StringUtilities::getRoboDynJointGroup("r2/ASDF/ASDF"), std::runtime_error);
00128     EXPECT_THROW(StringUtilities::getRoboDynJointGroup("r2/ASDF/ASDF/"), std::runtime_error);
00129     EXPECT_THROW(StringUtilities::getRoboDynJointGroup("r2/ASDF/ASDF/ASDF/"), std::runtime_error);
00130 
00131     EXPECT_STREQ("ZXCV_1/QWER_1", StringUtilities::getRoboDynJointWithGroup("r2/ASDF_1/ZXCV_1/QWER_1").c_str());
00132     EXPECT_STREQ("ZXCV_1/QWER_1/POIU_1", StringUtilities::getRoboDynJointWithGroup("r2/ASDF_1/ZXCV_1/QWER_1/POIU_1").c_str());
00133     EXPECT_THROW(StringUtilities::getRoboDynJointWithGroup("ASDF"), std::runtime_error);
00134     EXPECT_THROW(StringUtilities::getRoboDynJointWithGroup("/ASDF"), std::runtime_error);
00135     EXPECT_THROW(StringUtilities::getRoboDynJointWithGroup("r2ASDF"), std::runtime_error);
00136     EXPECT_THROW(StringUtilities::getRoboDynJointWithGroup("r2/ASDF"), std::runtime_error);
00137     EXPECT_THROW(StringUtilities::getRoboDynJointWithGroup("r2/ASDF/"), std::runtime_error);
00138     EXPECT_THROW(StringUtilities::getRoboDynJointWithGroup("r2/ASDF/ASDF"), std::runtime_error);
00139     EXPECT_THROW(StringUtilities::getRoboDynJointWithGroup("r2/ASDF/ASDF/"), std::runtime_error);
00140     EXPECT_THROW(StringUtilities::getRoboDynJointWithGroup("r2/ASDF/ASDF/ASDF/"), std::runtime_error);
00141 
00142     EXPECT_STREQ("r2/ASDF_1", StringUtilities::getRoboDynEverythingButJoint("r2/ASDF_1/ZXCV_1").c_str());
00143     EXPECT_STREQ("r2/ASDF_1/ZXCV_1", StringUtilities::getRoboDynEverythingButJoint("r2/ASDF_1/ZXCV_1/QWER_1").c_str());
00144     EXPECT_THROW(StringUtilities::getRoboDynEverythingButJoint("ASDF"), std::runtime_error);
00145     EXPECT_THROW(StringUtilities::getRoboDynEverythingButJoint("/ASDF"), std::runtime_error);
00146     EXPECT_THROW(StringUtilities::getRoboDynEverythingButJoint("r2ASDF"), std::runtime_error);
00147     EXPECT_THROW(StringUtilities::getRoboDynEverythingButJoint("r2/ASDF"), std::runtime_error);
00148     EXPECT_THROW(StringUtilities::getRoboDynEverythingButJoint("r2/ASDF/"), std::runtime_error);
00149     EXPECT_THROW(StringUtilities::getRoboDynEverythingButJoint("r2/ASDF/ASDF/"), std::runtime_error);
00150 
00151     EXPECT_STREQ("ASDF_", StringUtilities::getItem("ASDF_1").c_str());
00152     EXPECT_STREQ("/ASDF_", StringUtilities::getItem("/ASDF_1").c_str());
00153 
00154     EXPECT_STREQ("1", StringUtilities::getNumber("ASDF_1").c_str());
00155     EXPECT_STREQ("1", StringUtilities::getNumber("/ASDF_1").c_str());
00156 }
00157 
00158 TEST(StringUtilitiesTest, Makers)
00159 {
00160     EXPECT_STREQ("/ASDF_1/ZXCV_1", StringUtilities::makeFullyQualifiedRobonetNode("ASDF_1", "ZXCV_1").c_str());
00161     EXPECT_THROW(StringUtilities::makeFullyQualifiedRobonetNode("", ""), std::runtime_error);
00162     EXPECT_THROW(StringUtilities::makeFullyQualifiedRobonetNode("ASDF_1", ""), std::runtime_error);
00163     EXPECT_THROW(StringUtilities::makeFullyQualifiedRobonetNode("", "ZXCV_1"), std::runtime_error);
00164     EXPECT_THROW(StringUtilities::makeFullyQualifiedRobonetNode("0.32", " "), std::runtime_error);
00165 
00166     EXPECT_STREQ("/ASDF_1/ZXCV_1/QW.ER_1", StringUtilities::makeFullyQualifiedRobonetElement("/ASDF_1/ZXCV_1", "QW.ER_1").c_str());
00167     EXPECT_THROW(StringUtilities::makeFullyQualifiedRobonetElement("", ""), std::runtime_error);
00168     EXPECT_THROW(StringUtilities::makeFullyQualifiedRobonetElement("ASDF_1", ""), std::runtime_error);
00169     EXPECT_THROW(StringUtilities::makeFullyQualifiedRobonetElement("", "ZXCV_1"), std::runtime_error);
00170     EXPECT_THROW(StringUtilities::makeFullyQualifiedRobonetElement("0.32", "~&#"), std::runtime_error);
00171 
00172     EXPECT_STREQ("/ASDF_1/ZXCV_1/QW.ER_1", StringUtilities::makeFullyQualifiedRobonetElement("ASDF_1", "ZXCV_1", "QW.ER_1").c_str());
00173     EXPECT_THROW(StringUtilities::makeFullyQualifiedRobonetElement("", "", ""), std::runtime_error);
00174     EXPECT_THROW(StringUtilities::makeFullyQualifiedRobonetElement("ASDF_1", "ZXCV_1", ""), std::runtime_error);
00175     EXPECT_THROW(StringUtilities::makeFullyQualifiedRobonetElement("ASDF_1", "", "QWER_1"), std::runtime_error);
00176     EXPECT_THROW(StringUtilities::makeFullyQualifiedRobonetElement("", "ZXCV_1", "QWER_1"), std::runtime_error);
00177     EXPECT_THROW(StringUtilities::makeFullyQualifiedRobonetElement("0.32", " ", "~&#"), std::runtime_error);
00178 
00179     EXPECT_STREQ("r2/ASDF_1", StringUtilities::makeFullyQualifiedRoboDynChain("ASDF_1").c_str());
00180     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynChain(""), std::runtime_error);
00181     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynChain("0.32"), std::runtime_error);
00182     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynChain("r2/ASDF"), std::runtime_error);
00183 
00184     EXPECT_STREQ("r2/ASDF_1/ZXCV_1", StringUtilities::makeFullyQualifiedRoboDynJoint("ASDF_1", "ZXCV_1").c_str());
00185     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynJoint("", ""), std::runtime_error);
00186     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynJoint("ASDF_1", ""), std::runtime_error);
00187     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynJoint("", "ZXCV_1"), std::runtime_error);
00188     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynJoint("0.32", " "), std::runtime_error);
00189     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynJoint("ASDF_1", "ZXCV_1/QWER_1"), std::runtime_error);
00190 
00191     EXPECT_STREQ("r2/ASDF_1/ZXCV_1/QWER_1", StringUtilities::makeFullyQualifiedRoboDynJointWithGroup("ASDF_1", "ZXCV_1", "QWER_1").c_str());
00192     EXPECT_STREQ("r2/ASDF_1/ZXCV_1/QWER_1/POIU_1", StringUtilities::makeFullyQualifiedRoboDynJointWithGroup("ASDF_1", "ZXCV_1", "QWER_1/POIU_1").c_str());
00193     EXPECT_STREQ("r2/ASDF_1/ZXCV_1/QWER_1/POIU_1", StringUtilities::makeFullyQualifiedRoboDynJointWithGroup("ASDF_1", "ZXCV_1/QWER_1", "POIU_1").c_str());
00194     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynJointWithGroup("", "", ""), std::runtime_error);
00195     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynJointWithGroup("ASDF_1", "", ""), std::runtime_error);
00196     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynJointWithGroup("", "ZXCV_1", ""), std::runtime_error);
00197     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynJointWithGroup("", "", "QWER_1"), std::runtime_error);
00198     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynJointWithGroup("0.32", " ", "!"), std::runtime_error);
00199     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynJointWithGroup("ASDF_1", "ZXCV_1/QWER_1", ""), std::runtime_error);
00200 
00201     EXPECT_STREQ("r2/ASDF_1/ZXCV_1/QWER_1", StringUtilities::makeFullyQualifiedRoboDynElement("r2/ASDF_1/ZXCV_1", "QWER_1").c_str());
00202     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynElement("", ""), std::runtime_error);
00203     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynElement("ASDF_1", ""), std::runtime_error);
00204     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynElement("", "ZXCV_1"), std::runtime_error);
00205     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynElement("0.32", " "), std::runtime_error);
00206     EXPECT_THROW(StringUtilities::makeFullyQualifiedRoboDynElement("ASDF_1", "ZXCV_1"), std::runtime_error);
00207 }
00208 
00209 TEST(StringUtilitiesTest, ExampleConversionsSimple)
00210 {
00212     std::string standardRoboDynJoint = "r2/left_leg/joint0";
00213 
00214     std::string standardRoboDynJoint_chain        = StringUtilities::getRoboDynChain(standardRoboDynJoint);
00215     std::string standardRoboDynJoint_joint        = StringUtilities::getRoboDynJoint(standardRoboDynJoint);
00216     std::string standardRoboDynJoint_joint_item   = StringUtilities::getItem(standardRoboDynJoint_joint);
00217     std::string standardRoboDynJoint_joint_number = StringUtilities::getNumber(standardRoboDynJoint_joint);
00218     EXPECT_STREQ("left_leg", standardRoboDynJoint_chain.c_str());
00219     EXPECT_STREQ("joint0",   standardRoboDynJoint_joint.c_str());
00220     EXPECT_STREQ("joint",    standardRoboDynJoint_joint_item.c_str());
00221     EXPECT_STREQ("0",        standardRoboDynJoint_joint_number.c_str());
00222 
00223     std::string convertedToRobonetNode    = StringUtilities::makeFullyQualifiedRobonetNode(standardRoboDynJoint_chain, standardRoboDynJoint_joint);
00224     std::string convertedToRobonetElement = StringUtilities::makeFullyQualifiedRobonetElement(standardRoboDynJoint_chain, standardRoboDynJoint_joint, "PosCom");
00225     EXPECT_STREQ("/left_leg/joint0",        convertedToRobonetNode.c_str());
00226     EXPECT_STREQ("/left_leg/joint0/PosCom", convertedToRobonetElement.c_str());
00227 
00228     std::string convertedToAlternateRoboDynJoint = StringUtilities::makeFullyQualifiedRoboDynJoint(standardRoboDynJoint_chain, "motor" + standardRoboDynJoint_joint_number);
00229     EXPECT_STREQ("r2/left_leg/motor0", convertedToAlternateRoboDynJoint.c_str());
00230 
00232     std::string standardRobonetNode = "/left_leg/joint0";
00233 
00234     std::string standardRobonetNode_channel = StringUtilities::getRobonetChannel(standardRobonetNode);
00235     std::string standardRobonetNode_node    = StringUtilities::getRobonetNode(standardRobonetNode);
00236     EXPECT_STREQ("left_leg", standardRobonetNode_channel.c_str());
00237     EXPECT_STREQ("joint0",   standardRobonetNode_node.c_str());
00238 
00239     std::string convertedToRobonetElement_one = StringUtilities::makeFullyQualifiedRobonetElement(standardRobonetNode_channel, standardRobonetNode_node, "PosCom");
00240     std::string convertedToRobonetElement_two = StringUtilities::makeFullyQualifiedRobonetElement(standardRobonetNode, "PosCom");
00241     EXPECT_STREQ("/left_leg/joint0/PosCom", convertedToRobonetElement_one.c_str());
00242     EXPECT_STREQ("/left_leg/joint0/PosCom", convertedToRobonetElement_two.c_str());
00243 
00244     std::string convertedToRoboDynJoint = StringUtilities::makeFullyQualifiedRoboDynJoint(standardRobonetNode_channel, standardRobonetNode_node);
00245     EXPECT_STREQ("r2/left_leg/joint0", convertedToRoboDynJoint.c_str());
00246 }
00247 
00248 TEST(StringUtilitiesTest, ExampleConversionsComplex)
00249 {
00251     std::string eeRoboDynJoint = "r2/left_leg/gripper/joint0";
00252 
00253     std::string eeRoboDynJoint_chain        = StringUtilities::getRoboDynChain(eeRoboDynJoint);
00254     std::string eeRoboDynJoint_group        = StringUtilities::getRoboDynJointGroup(eeRoboDynJoint);
00255     std::string eeRoboDynJoint_joint        = StringUtilities::getRoboDynJoint(eeRoboDynJoint);
00256     std::string eeRoboDynJoint_joint_item   = StringUtilities::getItem(eeRoboDynJoint_joint);
00257     std::string eeRoboDynJoint_joint_number = StringUtilities::getNumber(eeRoboDynJoint_joint);
00258     EXPECT_STREQ("left_leg", eeRoboDynJoint_chain.c_str());
00259     EXPECT_STREQ("gripper",  eeRoboDynJoint_group.c_str());
00260     EXPECT_STREQ("joint0",   eeRoboDynJoint_joint.c_str());
00261     EXPECT_STREQ("joint",    eeRoboDynJoint_joint_item.c_str());
00262     EXPECT_STREQ("0",        eeRoboDynJoint_joint_number.c_str());
00263 
00265     std::string convertedToRobonetNode    = StringUtilities::makeFullyQualifiedRobonetNode(eeRoboDynJoint_chain, eeRoboDynJoint_joint_item + "7");
00266     std::string convertedToRobonetElement = StringUtilities::makeFullyQualifiedRobonetElement(eeRoboDynJoint_chain, eeRoboDynJoint_joint_item + "7", "PosCom");
00267     EXPECT_STREQ("/left_leg/joint7",        convertedToRobonetNode.c_str());
00268     EXPECT_STREQ("/left_leg/joint7/PosCom", convertedToRobonetElement.c_str());
00269 
00271     std::string eeRobonetElement = "/left_leg/joint7/PosCom";
00272 
00273     std::string eeRobonetElement_channel     = StringUtilities::getRobonetChannel(eeRobonetElement);
00274     std::string eeRobonetElement_node        = StringUtilities::getRobonetNode(eeRobonetElement);
00275     std::string eeRobonetElement_node_item   = StringUtilities::getItem(eeRobonetElement_node);
00276     std::string eeRobonetElement_node_number = StringUtilities::getNumber(eeRobonetElement_node);
00277     EXPECT_STREQ("left_leg", eeRobonetElement_channel.c_str());
00278     EXPECT_STREQ("joint7",   eeRobonetElement_node.c_str());
00279     EXPECT_STREQ("joint",    eeRobonetElement_node_item.c_str());
00280     EXPECT_STREQ("7",        eeRobonetElement_node_number.c_str());
00281 
00283     std::string convertedToEERoboDynJoint          = StringUtilities::makeFullyQualifiedRoboDynJointWithGroup(eeRobonetElement_channel, "gripper", eeRobonetElement_node_item + "0");
00284     std::string convertedToAlternateEERoboDynJoint = StringUtilities::makeFullyQualifiedRoboDynJointWithGroup(eeRobonetElement_channel, "gripper", "jaw0");
00285     EXPECT_STREQ("r2/left_leg/gripper/joint0", convertedToEERoboDynJoint.c_str());
00286     EXPECT_STREQ("r2/left_leg/gripper/jaw0",   convertedToAlternateEERoboDynJoint.c_str());
00287 }
00288 
00289 TEST(StringUtilitiesTest, ExamplePullOffCommandMessage)
00290 {
00291     std::string commandMsg     = "r2/left_leg/joint0/safe";
00292     std::string chain          = StringUtilities::getRoboDynChain(commandMsg);
00293     std::string jointWithGroup = StringUtilities::getRoboDynJointGroup(commandMsg);
00294     std::string command        = StringUtilities::getRoboDynJoint(commandMsg);
00295     std::string node           = StringUtilities::makeFullyQualifiedRoboDynJointGroup(chain, jointWithGroup);
00296 
00297     EXPECT_TRUE(command.compare("safe") == 0);
00298     EXPECT_TRUE(node.compare("r2/left_leg/joint0") == 0);
00299 
00300     commandMsg     = "r2/left_leg/gripper/joint0/safe";
00301     chain          = StringUtilities::getRoboDynChain(commandMsg);
00302     jointWithGroup = StringUtilities::getRoboDynJointGroup(commandMsg);
00303     command        = StringUtilities::getRoboDynJoint(commandMsg);
00304     node           = StringUtilities::makeFullyQualifiedRoboDynJointGroup(chain, jointWithGroup);
00305 
00306     EXPECT_TRUE(command.compare("safe") == 0);
00307     EXPECT_TRUE(node.compare("r2/left_leg/gripper/joint0") == 0);
00308 }
00309 
00310 int main(int argc, char** argv)
00311 {
00312     testing::InitGoogleTest(&argc, argv);
00313     return RUN_ALL_TESTS();
00314 }


robot_instance
Author(s):
autogenerated on Sat Jun 8 2019 20:43:12