Go to the documentation of this file.00001 #include <gtest/gtest.h>
00002 #include "robodyn_controllers/JointTorqueLimiter.h"
00003 #include <ros/package.h>
00004 #include <sensor_msgs/JointState.h>
00005
00006 class JointTorqueLimiterTest : public ::testing::Test
00007 {
00008 protected:
00009 virtual void SetUp()
00010 {
00011 std::string packagePath = ros::package::getPath("robodyn_controllers");
00012 std::string urdfFile = packagePath + "/test/urdf/SimpleTestRobot.xml";
00013 jtl = new JointTorqueLimiter(urdfFile);
00014 ros::Time::init();
00015 }
00016
00017 virtual void TearDown()
00018 {
00019 }
00020
00021 JointTorqueLimiter* jtl;
00022 };
00023
00024 TEST_F(JointTorqueLimiterTest, InitializeMapsTest)
00025 {
00026
00027
00028 jtl->initializeMaps();
00029
00030 ASSERT_FALSE(jtl->jointTorqueLimMap.empty());
00031 EXPECT_EQ (1, jtl->jointTorqueLimMap.count("joint1"));
00032 EXPECT_EQ (0, jtl->jointTorqueLimMap.count("link3"));
00033
00034 }
00035
00036 TEST_F(JointTorqueLimiterTest, PopulateTorqueMsgTest)
00037 {
00038 jtl->initializeMaps();
00039
00040 sensor_msgs::JointState tLim;
00041 EXPECT_EQ(0, tLim.name.size());
00042
00043 ASSERT_EQ(0, jtl->populateTorqueMsg(tLim));
00044 ASSERT_EQ(3, jtl->jointTorqueLimMap.size());
00045 ASSERT_EQ(3, tLim.name.size());
00046 EXPECT_EQ("joint1", tLim.name[0]);
00047 EXPECT_EQ(0.0, tLim.effort[1]);
00048
00049 jtl->jointTorqueLimMap["joint2"] = 2;
00050 ASSERT_EQ(0, jtl->populateTorqueMsg(tLim));
00051 EXPECT_EQ(2, tLim.effort[1]);
00052 }
00053
00054 TEST_F(JointTorqueLimiterTest, StoreJointTorques1Test)
00055 {
00056 jtl->initializeMaps();
00057
00058 double yLim = 5.0;
00059 jtl->setYankLimit(yLim);
00060
00061 EXPECT_EQ(0, jtl->jointTorqueLimMap["joint1"]);
00062 ASSERT_EQ(0, jtl->storeJointTorques(2.0));
00063 EXPECT_EQ(2.0, jtl->jointTorqueLimMap["joint1"]);
00064 EXPECT_EQ(2.0, jtl->jointTorqueLimMap["joint3"]);
00065
00066 ASSERT_EQ(0, jtl->storeJointTorques(10.0));
00067 EXPECT_EQ(7.0, jtl->jointTorqueLimMap["joint1"]);
00068 EXPECT_EQ(7.0, jtl->jointTorqueLimMap["joint2"]);
00069
00070 }
00071
00072 TEST_F(JointTorqueLimiterTest, StoreJointTorques2Test)
00073 {
00074 jtl->initializeMaps();
00075
00076 double yLim = 5.0;
00077 jtl->setYankLimit(yLim);
00078
00079 sensor_msgs::JointState tLim;
00080 tLim.name.push_back("joint1");
00081 tLim.name.push_back("joint2");
00082 tLim.effort.push_back(1.0);
00083 tLim.effort.push_back(2.0);
00084
00085 ASSERT_EQ(0, jtl->storeJointTorques(tLim));
00086 EXPECT_EQ(1.0, jtl->jointTorqueLimMap["joint1"]);
00087 EXPECT_EQ(2.0, jtl->jointTorqueLimMap["joint2"]);
00088 EXPECT_EQ(0.0, jtl->jointTorqueLimMap["joint3"]);
00089
00090 tLim.name.push_back("joint3");
00091 tLim.effort.push_back(6.0);
00092
00093 ASSERT_EQ(0, jtl->storeJointTorques(tLim));
00094 EXPECT_EQ(5.0, jtl->jointTorqueLimMap["joint3"]);
00095 }
00096
00097 int main(int argc, char** argv)
00098 {
00099 ::testing::InitGoogleTest(&argc, argv);
00100 return RUN_ALL_TESTS();
00101 }