1 #include <gtest/gtest.h> 15 class testTimedAction:
public ::testing::Test {
20 testTimedAction() : timedAction(
"TestTimedAction") {
23 virtual ~testTimedAction() {
26 virtual void SetUp()
override {
28 std::shared_ptr <ROSEE::ParserMoveIt> parserMoveIt = std::make_shared <ROSEE::ParserMoveIt> ();
31 ASSERT_TRUE(parserMoveIt->init (
"robot_description",
false)) ;
35 std::string folderForActions =
"ROSEE/actions/" + parserMoveIt->getHandName();
37 trigMap = actionsFinder.findTrig(ROSEE::ActionPrimitive::Type::Trig, folderForActions +
"/primitives/") ;
38 auto pinches = actionsFinder.findPinch(folderForActions +
"/primitives/") ;
40 pinchTightMap = pinches.first;
41 pinchLooseMap = pinches.second;
43 std::shared_ptr<ROSEE::ActionComposed> actionComposed = std::make_shared<ROSEE::ActionComposed> (
"degrasp");
45 if (trigMap.size() > 0){
46 for (
auto trig : trigMap) {
47 std::shared_ptr <ROSEE::ActionPrimitive> pointer =
48 std::make_shared <ROSEE::ActionTrig> ( trig.second );
50 actionComposed->sumAction(pointer, 0);
53 timedAction.insertAction(pointer, 0.54, 0.2, 0, 0.8,
"trig_" + *(pointer->getKeyElements().begin()) );
58 if (pinchTightMap.size()>0) {
60 std::shared_ptr <ROSEE::ActionPrimitive> pointer =
61 std::make_shared <ROSEE::ActionPinchTight> ( pinchTightMap.begin()->second );
63 timedAction.insertAction(pointer, 0, 0.45);
65 }
else if (pinchLooseMap.size()>0) {
67 std::shared_ptr <ROSEE::ActionPrimitive> pointer =
68 std::make_shared <ROSEE::ActionPinchLoose> ( pinchLooseMap.begin()->second );
70 timedAction.insertAction(pointer, 0, 0.45);
74 if (actionComposed->numberOfInnerActions( ) > 0) {
75 std::shared_ptr <ROSEE::Action> pointer = actionComposed ;
76 timedAction.insertAction(pointer);
80 yamlWorker.
createYamlFile (&timedAction, folderForActions +
"/timeds/");
83 timedActionParsed = yamlWorker.
parseYamlTimed (folderForActions +
"/timeds/TestTimedAction.yaml");
87 virtual void TearDown()
override{
95 std::shared_ptr<ROSEE::ActionTimed> timedActionParsed;
100 TEST_F ( testTimedAction, checkMembersSizeConsistency ) {
102 EXPECT_EQ ( timedAction.getInnerActionsNames().size(), timedAction.getAllActionMargins().size() );
103 EXPECT_EQ ( timedAction.getAllActionMargins().size(), timedAction.getAllJointCountAction().size() );
104 EXPECT_EQ ( timedAction.getAllJointCountAction().size(), timedAction.getAllJointPos().size() );
106 EXPECT_EQ ( timedActionParsed->getInnerActionsNames().size(), timedActionParsed->getAllActionMargins().size() );
107 EXPECT_EQ ( timedActionParsed->getAllActionMargins().size(), timedActionParsed->getAllJointCountAction().size() );
108 EXPECT_EQ ( timedActionParsed->getAllJointCountAction().size(), timedActionParsed->getAllJointPos().size() );
112 TEST_F ( testTimedAction, checkEmitParse ) {
114 if (timedAction.getInnerActionsNames().size() > 0) {
116 EXPECT_EQ (timedAction.getName(), timedActionParsed->getName() );
117 EXPECT_EQ (timedAction.getType(), timedActionParsed->getType() );
118 EXPECT_EQ (timedAction.getFingersInvolved(), timedActionParsed->getFingersInvolved() );
120 for (
auto jointCount : timedAction.getJointsInvolvedCount()) {
121 EXPECT_EQ ( jointCount.second, timedActionParsed->getJointsInvolvedCount().at(jointCount.first) );
124 for (
auto joint: timedAction.getJointPos() ) {
127 ASSERT_EQ (joint.second.size(), timedActionParsed->getJointPos().at(joint.first).size() );
129 for (
int j = 0; j < joint.second.size(); ++j ){
130 EXPECT_DOUBLE_EQ ( joint.second.at(j), timedActionParsed->getJointPos().at(joint.first).at(j) );
135 for (
auto innerActName : timedAction.getInnerActionsNames()) {
136 EXPECT_EQ ( innerActName, timedActionParsed->getInnerActionsNames().at(k) );
141 for (
auto timeMargins : timedAction.getAllActionMargins() ) {
143 EXPECT_DOUBLE_EQ (timeMargins.first, timedActionParsed->getAllActionMargins().at(k).first);
144 EXPECT_DOUBLE_EQ (timeMargins.second, timedActionParsed->getAllActionMargins().at(k).second);
148 auto jpvector = timedAction.getAllJointPos();
149 for (
int i=0; i < jpvector.size(); i++) {
151 for (
auto joint: jpvector.at(i) ) {
153 auto otherjointPos = timedActionParsed->getAllJointPos().at(i).at(joint.first);
155 ASSERT_EQ (joint.second.size(), otherjointPos.size() );
158 for (
int j = 0; j < joint.second.size(); ++j ){
159 EXPECT_DOUBLE_EQ ( joint.second.at(j), otherjointPos.at(j) );
164 auto jpcvector = timedAction.getAllJointCountAction();
165 for (
int i=0; i < jpcvector.size(); i++) {
167 for (
auto joint: jpcvector.at(i) ) {
169 EXPECT_EQ ( joint.second, timedActionParsed->getAllJointCountAction().at(i).at(joint.first) );
179 int main (
int argc,
char **argv ) {
183 std::cout <<
"[TEST ERROR] Insert hand name as argument" << std::endl;
188 if(setenv(
"ROS_MASTER_URI",
"http://localhost:11322", 1) == -1)
195 std::unique_ptr<ROSEE::TestUtils::Process> roscore;
200 std::cout <<
"[TEST ERROR] Prepare Function failed" << std::endl;
205 ::testing::InitGoogleTest ( &argc, argv );
206 return RUN_ALL_TESTS();
std::map< std::string, ActionTrig > Map
std::shared_ptr< ROSEE::ActionTimed > parseYamlTimed(std::string fileWithPath)
Parse a timed Action.
std::map< std::pair< std::string, std::string >, ActionPinchTight > Map
std::map< std::pair< std::string, std::string >, ActionPinchLoose > Map
int prepareROSForTests(int argc, char **argv, std::string testName)
Function to be called in the main of each test, it runs roscore and fill parameter server with robot ...
int main(int argc, char **argv)
An action composed by other ones that must be executed one after other with some wait time (also 0) i...
Class to check which fingertips collide (for the pinch action at the moment)
TEST_F(TestRunner, threaded_test)
std::string createYamlFile(const std::map< std::set< std::string >, ActionPrimitive * > mapOfActions, const std::string actionName, std::string pathFolder)
Create/overwrite yaml file and emit info on it about each ActionPrimitive inside the given mapOfActio...