renamer_test.cpp
Go to the documentation of this file.
00001 #include "config.h"
00002 #include <gtest/gtest.h>
00003 
00004 #include <sensor_msgs/JointState.h>
00005 #include <ros_type_introspection/renamer.hpp>
00006 
00007 using namespace ros::message_traits;
00008 using namespace RosIntrospection;
00009 
00010 /*
00011 TEST(Renamer, DeserializeJointStateAndRename)
00012 {
00013   std::vector<SubstitutionRule> rules;
00014   rules.push_back( SubstitutionRule("position.#", "name.#", "@/pos") );
00015   rules.push_back( SubstitutionRule("velocity.#", "name.#", "@/vel") );
00016   rules.push_back( SubstitutionRule("effort.#",   "name.#", "@/eff") );
00017 
00018   ROSTypeList type_map = buildROSTypeMapFromDefinition(
00019         DataType<sensor_msgs::JointState >::value(),
00020         Definition<sensor_msgs::JointState >::value() );
00021 
00022   sensor_msgs::JointState joint_state;
00023 
00024   joint_state.header.seq = 2016;
00025   joint_state.header.stamp.sec  = 1234;
00026   joint_state.header.stamp.nsec = 567*1000*1000;
00027   joint_state.header.frame_id = "pippo";
00028 
00029   joint_state.name.resize( 3 );
00030   joint_state.position.resize( 3 );
00031   joint_state.velocity.resize( 3 );
00032   joint_state.effort.resize( 3 );
00033 
00034   std::string names[3];
00035   names[0] = ("hola");
00036   names[1] = ("ciao");
00037   names[2] = ("bye");
00038 
00039   for (int i=0; i<3; i++)
00040   {
00041     joint_state.name[i] = names[i];
00042     joint_state.position[i]= 11+i;
00043     joint_state.velocity[i]= 21+i;
00044     joint_state.effort[i]= 31+i;
00045   }
00046 
00047   std::vector<uint8_t> buffer(64*1024);
00048   ros::serialization::OStream stream(buffer.data(), buffer.size());
00049   ros::serialization::Serializer<sensor_msgs::JointState>::write(stream, joint_state);
00050 
00051   ROSType main_type( DataType<sensor_msgs::JointState >::value() );
00052 
00053   ROSTypeFlat flat_container;
00054 
00055   buildRosFlatType(type_map, main_type, "JointState", buffer.data(), &flat_container);
00056   applyNameTransform( rules, &flat_container );
00057 
00058   if(VERBOSE_TEST){
00059     for(auto&it: renamed_value) {
00060       std::cout << it.first << " >> " << it.second << std::endl;
00061     }
00062   }
00063 
00064   int i = 0;
00065 
00066   EXPECT_EQ( renamed_value[i].first , SString("JointState/hola/pos"));
00067   EXPECT_EQ( renamed_value[i++].second, 11 );
00068 
00069   EXPECT_EQ( renamed_value[i].first , SString("JointState/ciao/pos"));
00070   EXPECT_EQ( renamed_value[i++].second, 12 );
00071 
00072   EXPECT_EQ( renamed_value[i].first , SString("JointState/bye/pos"));
00073   EXPECT_EQ( renamed_value[i++].second, 13 );
00074 
00075   EXPECT_EQ( renamed_value[i].first , SString("JointState/hola/vel"));
00076   EXPECT_EQ( renamed_value[i++].second, 21 );
00077 
00078   EXPECT_EQ( renamed_value[i].first , SString("JointState/ciao/vel"));
00079   EXPECT_EQ( renamed_value[i++].second, 22 );
00080 
00081   EXPECT_EQ( renamed_value[i].first , SString("JointState/bye/vel"));
00082   EXPECT_EQ( renamed_value[i++].second, 23 );
00083 
00084   EXPECT_EQ( renamed_value[i].first , SString("JointState/hola/eff"));
00085   EXPECT_EQ( renamed_value[i++].second, 31 );
00086 
00087   EXPECT_EQ( renamed_value[i].first , SString("JointState/ciao/eff"));
00088   EXPECT_EQ( renamed_value[i++].second, 32 );
00089 
00090   EXPECT_EQ( renamed_value[i].first , SString("JointState/bye/eff"));
00091   EXPECT_EQ( renamed_value[i++].second, 33 );
00092 
00093   EXPECT_EQ( renamed_value[i].first , SString("JointState/header/seq"));
00094   EXPECT_EQ( renamed_value[i++].second, 2016 );
00095 
00096   EXPECT_EQ( renamed_value[i].first , SString("JointState/header/stamp"));
00097   EXPECT_EQ( renamed_value[i++].second, 1234.567 );
00098 
00099 }
00100 */
00101 
00102 TEST(Renamer2, DeserializeJointStateAndRename)
00103 {
00104   std::vector<SubstitutionRule> rules;
00105   rules.push_back( SubstitutionRule("JointState/position.#", "JointState/name.#", "myJointState/@/pos") );
00106   rules.push_back( SubstitutionRule("JointState/velocity.#", "JointState/name.#", "myJointState/@/vel") );
00107   rules.push_back( SubstitutionRule("JointState/effort.#",   "JointState/name.#", "myJointState/@/eff") );
00108 
00109   ROSTypeList type_map = buildROSTypeMapFromDefinition(
00110         DataType<sensor_msgs::JointState >::value(),
00111         Definition<sensor_msgs::JointState >::value() );
00112 
00113   sensor_msgs::JointState joint_state;
00114 
00115   joint_state.header.seq = 2016;
00116   joint_state.header.stamp.sec  = 1234;
00117   joint_state.header.stamp.nsec = 567*1000*1000;
00118   joint_state.header.frame_id = "pippo";
00119 
00120   joint_state.name.resize( 3 );
00121   joint_state.position.resize( 3 );
00122   joint_state.velocity.resize( 3 );
00123   joint_state.effort.resize( 3 );
00124 
00125   std::string names[3];
00126   names[0] = ("hola");
00127   names[1] = ("ciao");
00128   names[2] = ("bye");
00129 
00130   for (int i=0; i<3; i++)
00131   {
00132     joint_state.name[i] = names[i];
00133     joint_state.position[i]= 11+i;
00134     joint_state.velocity[i]= 21+i;
00135     joint_state.effort[i]= 31+i;
00136   }
00137 
00138   std::vector<uint8_t> buffer(64*1024);
00139   ros::serialization::OStream stream(buffer.data(), buffer.size());
00140   ros::serialization::Serializer<sensor_msgs::JointState>::write(stream, joint_state);
00141 
00142   ROSType main_type( DataType<sensor_msgs::JointState >::value() );
00143 
00144   ROSTypeFlat flat_container;
00145   RenamedValues renamed_value;
00146 
00147   buildRosFlatType(type_map, main_type, "JointState", buffer.data(), &flat_container, 100);
00148   applyNameTransform( rules, flat_container, renamed_value );
00149 
00150   if(VERBOSE_TEST){
00151     for(auto&it: renamed_value) {
00152       std::cout << it.first << " >> " << it.second.convert<double>() << std::endl;
00153     }
00154   }
00155 
00156   int i = 0;
00157 
00158   EXPECT_EQ( renamed_value[i].first , ("myJointState/hola/pos"));
00159   EXPECT_EQ( renamed_value[i++].second, 11 );
00160 
00161   EXPECT_EQ( renamed_value[i].first , ("myJointState/ciao/pos"));
00162   EXPECT_EQ( renamed_value[i++].second, 12 );
00163 
00164   EXPECT_EQ( renamed_value[i].first , ("myJointState/bye/pos"));
00165   EXPECT_EQ( renamed_value[i++].second, 13 );
00166 
00167   EXPECT_EQ( renamed_value[i].first , ("myJointState/hola/vel"));
00168   EXPECT_EQ( renamed_value[i++].second, 21 );
00169 
00170   EXPECT_EQ( renamed_value[i].first , ("myJointState/ciao/vel"));
00171   EXPECT_EQ( renamed_value[i++].second, 22 );
00172 
00173   EXPECT_EQ( renamed_value[i].first , ("myJointState/bye/vel"));
00174   EXPECT_EQ( renamed_value[i++].second, 23 );
00175 
00176   EXPECT_EQ( renamed_value[i].first , ("myJointState/hola/eff"));
00177   EXPECT_EQ( renamed_value[i++].second, 31 );
00178 
00179   EXPECT_EQ( renamed_value[i].first , ("myJointState/ciao/eff"));
00180   EXPECT_EQ( renamed_value[i++].second, 32 );
00181 
00182   EXPECT_EQ( renamed_value[i].first , ("myJointState/bye/eff"));
00183   EXPECT_EQ( renamed_value[i++].second, 33 );
00184 
00185   EXPECT_EQ( renamed_value[i].first , ("JointState/header/seq"));
00186   EXPECT_EQ( renamed_value[i++].second, 2016 );
00187 
00188   EXPECT_EQ( renamed_value[i].first , ("JointState/header/stamp"));
00189   EXPECT_EQ( renamed_value[i++].second, 1234.567 );
00190 
00191 }
00192 


ros_type_introspection
Author(s): Davide Faconti
autogenerated on Sun Oct 1 2017 02:54:53