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();