utest.cpp
Go to the documentation of this file.
00001 /*
00002  * Software License Agreement (BSD License)
00003  *
00004  * Copyright (c) 2011, Southwest Research Institute
00005  * All rights reserved.
00006  *
00007  * Redistribution and use in source and binary forms, with or without
00008  * modification, are permitted provided that the following conditions are met:
00009  *
00010  *      * Redistributions of source code must retain the above copyright
00011  *      notice, this list of conditions and the following disclaimer.
00012  *      * Redistributions in binary form must reproduce the above copyright
00013  *      notice, this list of conditions and the following disclaimer in the
00014  *      documentation and/or other materials provided with the distribution.
00015  *      * Neither the name of the Southwest Research Institute, nor the names
00016  *      of its contributors may be used to endorse or promote products derived
00017  *      from this software without specific prior written permission.
00018  *
00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00020  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00021  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00022  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00023  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00024  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00025  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00026  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00027  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00028  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00029  * POSSIBILITY OF SUCH DAMAGE.
00030  */
00031 
00032 #include "simple_message/simple_message.h"
00033 #include "simple_message/byte_array.h"
00034 #include "simple_message/shared_types.h"
00035 #include "simple_message/smpl_msg_connection.h"
00036 #include "simple_message/socket/udp_client.h"
00037 #include "simple_message/socket/udp_server.h"
00038 #include "simple_message/socket/tcp_client.h"
00039 #include "simple_message/socket/tcp_server.h"
00040 #include "simple_message/ping_message.h"
00041 #include "simple_message/ping_handler.h"
00042 #include "simple_message/messages/joint_message.h"
00043 #include "simple_message/joint_data.h"
00044 #include "simple_message/message_manager.h"
00045 #include "simple_message/simple_comms_fault_handler.h"
00046 #include "simple_message/joint_traj_pt.h"
00047 #include "simple_message/messages/joint_traj_pt_message.h"
00048 #include "simple_message/typed_message.h"
00049 #include "simple_message/joint_traj.h"
00050 
00051 #include <gtest/gtest.h>
00052 // Use pthread instead of boost::thread so we can cancel the TCP/UDP server
00053 // threads 
00054 //#include <boost/thread/thread.hpp>
00055 #include <pthread.h>
00056 
00057 using namespace industrial::simple_message;
00058 using namespace industrial::byte_array;
00059 using namespace industrial::shared_types;
00060 using namespace industrial::smpl_msg_connection;
00061 using namespace industrial::udp_socket;
00062 using namespace industrial::udp_client;
00063 using namespace industrial::udp_server;
00064 using namespace industrial::tcp_socket;
00065 using namespace industrial::tcp_client;
00066 using namespace industrial::tcp_server;
00067 using namespace industrial::ping_message;
00068 using namespace industrial::ping_handler;
00069 using namespace industrial::joint_data;
00070 using namespace industrial::joint_message;
00071 using namespace industrial::message_manager;
00072 using namespace industrial::simple_comms_fault_handler;
00073 using namespace industrial::joint_traj_pt;
00074 using namespace industrial::joint_traj_pt_message;
00075 using namespace industrial::typed_message;
00076 using namespace industrial::joint_traj;
00077 
00078 TEST(ByteArraySuite, init)
00079 {
00080 
00081   const shared_int SIZE = 100;
00082 
00083   ByteArray bytes;
00084   shared_int TOO_BIG = bytes.getMaxBufferSize()+1;
00085 
00086   char bigBuffer[TOO_BIG];
00087   char buffer[SIZE];
00088 
00089   // Valid byte arrays
00090   EXPECT_TRUE(bytes.init(&buffer[0], SIZE));
00091   EXPECT_EQ((shared_int)bytes.getBufferSize(), SIZE);
00092 
00093   // Invalid init (too big)
00094   // Invalid buffers
00095   EXPECT_FALSE(bytes.init(&bigBuffer[0], TOO_BIG));
00096 }
00097 
00098 TEST(ByteArraySuite, loading)
00099 {
00100   const shared_int SIZE = 100;
00101   char buffer[SIZE];
00102 
00103   ByteArray bytes;
00104   ByteArray empty;
00105 
00106   ASSERT_TRUE(bytes.init(&buffer[0], SIZE));
00107 
00108   shared_bool bIN = true, bOUT = false;
00109   shared_int iIN = 999, iOUT = 0;
00110   shared_real rIN = 9999.9999, rOUT = 0;
00111 
00112   // Boolean loading
00113   EXPECT_TRUE(bytes.load(bIN));
00114   EXPECT_EQ(bytes.getBufferSize(), SIZE+sizeof(shared_bool));
00115   EXPECT_TRUE(bytes.unload(bOUT));
00116   EXPECT_EQ((shared_int)bytes.getBufferSize(), SIZE);
00117   EXPECT_EQ(bOUT, bIN);
00118 
00119   // Integer loading
00120   EXPECT_TRUE(bytes.load(iIN));
00121   EXPECT_EQ(bytes.getBufferSize(), SIZE+sizeof(shared_int));
00122   EXPECT_TRUE(bytes.unload(iOUT));
00123   EXPECT_EQ((shared_int)bytes.getBufferSize(), SIZE);
00124   EXPECT_EQ(iOUT, iIN);
00125 
00126   // Real loading
00127   EXPECT_TRUE(bytes.load(rIN));
00128   EXPECT_EQ(bytes.getBufferSize(), SIZE+sizeof(shared_real));
00129   EXPECT_TRUE(bytes.unload(rOUT));
00130   EXPECT_EQ((shared_int)bytes.getBufferSize(), SIZE);
00131   EXPECT_EQ(rOUT, rIN);
00132 
00133   // Unloading a single member (down to an empty buffer size)
00134   EXPECT_TRUE(empty.load(bIN));
00135   EXPECT_EQ(empty.getBufferSize(), sizeof(shared_bool));
00136   EXPECT_TRUE(empty.unload(bOUT));
00137   EXPECT_EQ((int)empty.getBufferSize(), 0);
00138   EXPECT_EQ(bOUT, bIN);
00139 
00140   // Loading two members (unloading the first) and then checking the value of the second
00141   rOUT = 0.0;
00142   iOUT = 0;
00143   EXPECT_TRUE(empty.load(rIN));
00144   EXPECT_EQ(empty.getBufferSize(), sizeof(shared_real));
00145   EXPECT_TRUE(empty.load(iIN));
00146   EXPECT_EQ(empty.getBufferSize(), sizeof(shared_real)+sizeof(shared_int));
00147   EXPECT_TRUE(empty.unloadFront((void*)&rOUT, sizeof(shared_real)));
00148   EXPECT_EQ(rOUT, rIN);
00149   EXPECT_TRUE(empty.unload(iOUT));
00150   EXPECT_EQ((int)empty.getBufferSize(), 0);
00151   EXPECT_EQ(iOUT, iIN);
00152 }
00153 
00154 TEST(ByteArraySuite, copy)
00155 {
00156 
00157   const shared_int SIZE = 100;
00158   char buffer[SIZE];
00159 
00160   // Copy
00161   ByteArray copyFrom;
00162   ByteArray copyTo;
00163   ByteArray tooBig;
00164 
00165 
00166   shared_int TOO_BIG = tooBig.getMaxBufferSize()-1;
00167   char bigBuffer[TOO_BIG];
00168 
00169   EXPECT_TRUE(copyFrom.init(&buffer[0], SIZE));
00170   EXPECT_TRUE(copyTo.load(copyFrom));
00171   EXPECT_EQ((shared_int)copyTo.getBufferSize(), SIZE);
00172   EXPECT_TRUE(copyTo.load(copyFrom));
00173   EXPECT_EQ((shared_int)copyTo.getBufferSize(), 2*SIZE);
00174 
00175   // Copy too large
00176   EXPECT_TRUE(tooBig.init(&bigBuffer[0], TOO_BIG));
00177   EXPECT_FALSE(copyTo.load(tooBig));
00178   // A failed load should not change the buffer.
00179   EXPECT_EQ((shared_int)copyTo.getBufferSize(), 2*SIZE);
00180 }
00181 
00182 TEST(SimpleMessageSuite, init)
00183 {
00184   SimpleMessage msg;
00185   ByteArray bytes;
00186 
00187   // Valid messages
00188   EXPECT_TRUE(msg.init(StandardMsgTypes::PING, CommTypes::TOPIC, ReplyTypes::INVALID, bytes));
00189   EXPECT_TRUE(msg.init(StandardMsgTypes::PING, CommTypes::SERVICE_REQUEST,ReplyTypes::INVALID, bytes));
00190   EXPECT_TRUE(msg.init(StandardMsgTypes::PING, CommTypes::SERVICE_REPLY,ReplyTypes::SUCCESS, bytes));
00191   EXPECT_TRUE(msg.init(StandardMsgTypes::PING, CommTypes::SERVICE_REPLY,ReplyTypes::FAILURE, bytes));
00192 
00193   // Unused command
00194   EXPECT_FALSE(msg.init(StandardMsgTypes::INVALID, CommTypes::INVALID,ReplyTypes::INVALID, bytes));
00195 
00196   // Service request with a reply
00197   EXPECT_FALSE(msg.init(StandardMsgTypes::PING, CommTypes::SERVICE_REQUEST,ReplyTypes::SUCCESS, bytes));
00198   EXPECT_FALSE(msg.init(StandardMsgTypes::PING, CommTypes::SERVICE_REQUEST,ReplyTypes::FAILURE, bytes));
00199 }
00200 
00201 TEST(PingMessageSuite, init)
00202 {
00203   PingMessage ping;
00204   SimpleMessage msg;
00205 
00206   EXPECT_FALSE(ping.init(msg));
00207   ping.init();
00208   EXPECT_EQ(StandardMsgTypes::PING, ping.getMessageType());
00209 
00210   ping = PingMessage();
00211   ASSERT_TRUE(msg.init(StandardMsgTypes::PING, CommTypes::SERVICE_REQUEST, ReplyTypes::INVALID));
00212   EXPECT_TRUE(ping.init(msg));
00213   EXPECT_EQ(StandardMsgTypes::PING, ping.getMessageType());
00214 }
00215 
00216 TEST(PingMessageSuite, toMessage)
00217 {
00218   PingMessage ping;
00219   SimpleMessage msg;
00220 
00221   ping.init();
00222 
00223   ASSERT_TRUE(ping.toReply(msg, ReplyTypes::SUCCESS));
00224   EXPECT_EQ(StandardMsgTypes::PING, msg.getMessageType());
00225   EXPECT_EQ(CommTypes::SERVICE_REPLY, msg.getCommType());
00226   EXPECT_EQ(ReplyTypes::SUCCESS, msg.getReplyCode());
00227 
00228   ASSERT_TRUE(ping.toRequest(msg));
00229   EXPECT_EQ(StandardMsgTypes::PING, msg.getMessageType());
00230   EXPECT_EQ(CommTypes::SERVICE_REQUEST, msg.getCommType());
00231   EXPECT_EQ(ReplyTypes::INVALID, msg.getReplyCode());
00232 
00233   EXPECT_FALSE(ping.toTopic(msg));
00234 
00235 }
00236 
00237 TEST(PingHandlerSuite, init)
00238 {
00239   PingHandler handler;
00240   UdpClient udp;
00241 
00242   ASSERT_TRUE(handler.init(&udp));
00243   EXPECT_EQ(StandardMsgTypes::PING, handler.getMsgType());
00244 
00245   EXPECT_FALSE(handler.init(NULL));
00246 
00247 }
00248 
00249 TEST(MessageManagerSuite, init)
00250 {
00251   MessageManager manager;
00252   UdpClient udp;
00253 
00254   EXPECT_TRUE(manager.init(&udp));
00255   EXPECT_FALSE(manager.init(NULL));
00256 
00257 }
00258 
00259 TEST(MessageManagerSuite, addHandler)
00260 {
00261   MessageManager manager;
00262   UdpClient udp;
00263   PingHandler handler;
00264 
00265   EXPECT_EQ(0, (int)manager.getNumHandlers());
00266 
00267   ASSERT_TRUE(manager.init(&udp));
00268   EXPECT_EQ(1, (int)manager.getNumHandlers());
00269   EXPECT_FALSE(manager.add(NULL));
00270 
00271   ASSERT_TRUE(handler.init(&udp));
00272   EXPECT_FALSE(manager.add(&handler));
00273 }
00274 
00275 // wrapper around MessageManager::spin() that can be passed to
00276 // pthread_create()
00277 void*
00278 spinFunc(void* arg)
00279 {
00280   MessageManager* mgr = (MessageManager*)arg;
00281   mgr->spin();
00282   return NULL;
00283 }
00284 
00285 TEST(DISABLED_MessageManagerSuite, udp)
00286 {
00287   const int udpPort = 11000;
00288   char ipAddr[] = "127.0.0.1";
00289 
00290   UdpClient* udpClient = new UdpClient();
00291   UdpServer udpServer;
00292   SimpleMessage pingRequest, pingReply;
00293   MessageManager udpManager;
00294 
00295   ASSERT_TRUE(pingRequest.init(StandardMsgTypes::PING, CommTypes::SERVICE_REQUEST, ReplyTypes::INVALID));
00296 
00297   // UDP Socket testing
00298   // Construct server and start in a thread
00299   ASSERT_TRUE(udpServer.init(udpPort));
00300   ASSERT_TRUE(udpManager.init(&udpServer));
00301   //boost::thread udpSrvThrd(boost::bind(&MessageManager::spin, &udpManager));
00302   pthread_t udpSrvThrd;
00303   pthread_create(&udpSrvThrd, NULL, spinFunc, &udpManager);
00304 
00305   // Construct a client and try to ping the server
00306   ASSERT_TRUE(udpClient->init(&ipAddr[0], udpPort));
00307   ASSERT_TRUE(udpClient->makeConnect());
00308   ASSERT_TRUE(udpClient->sendMsg(pingRequest));
00309   ASSERT_TRUE(udpClient->receiveMsg(pingReply));
00310   ASSERT_TRUE(udpClient->sendAndReceiveMsg(pingRequest, pingReply));
00311 
00312   // Delete client and try to reconnect
00313   delete udpClient;
00314   udpClient = new UdpClient();
00315   ASSERT_TRUE(udpClient->init(&ipAddr[0], udpPort));
00316   ASSERT_TRUE(udpClient->makeConnect());
00317   ASSERT_TRUE(udpClient->sendAndReceiveMsg(pingRequest, pingReply));
00318 
00319   pthread_cancel(udpSrvThrd);
00320   pthread_join(udpSrvThrd, NULL);
00321 }
00322 
00323 TEST(DISABLED_MessageManagerSuite, tcp)
00324 {
00325   const int tcpPort = 11000;
00326   char ipAddr[] = "127.0.0.1";
00327 
00328   TcpClient* tcpClient = new TcpClient();
00329   TcpServer tcpServer;
00330   SimpleMessage pingRequest, pingReply;
00331   MessageManager tcpManager;
00332 
00333   ASSERT_TRUE(pingRequest.init(StandardMsgTypes::PING, CommTypes::SERVICE_REQUEST, ReplyTypes::INVALID));
00334 
00335   // TCP Socket testing
00336 
00337   // Construct server
00338   ASSERT_TRUE(tcpServer.init(tcpPort));
00339 
00340   // Construct a client
00341   ASSERT_TRUE(tcpClient->init(&ipAddr[0], tcpPort));
00342   ASSERT_TRUE(tcpClient->makeConnect());
00343 
00344   // Listen for client connection, init manager and start thread
00345   ASSERT_TRUE(tcpServer.makeConnect());
00346   ASSERT_TRUE(tcpManager.init(&tcpServer));
00347 
00348   // TODO: The message manager is not thread safe (threads are used for testing,
00349   // but running the message manager in a thread results in errors when the
00350   // underlying connection is deconstructed before the manager
00351   //boost::thread tcpSrvThrd(boost::bind(&MessageManager::spin, &tcpManager));
00352   pthread_t tcpSrvThrd;
00353   pthread_create(&tcpSrvThrd, NULL, spinFunc, &tcpManager);
00354 
00355   // Ping the server
00356   ASSERT_TRUE(tcpClient->sendMsg(pingRequest));
00357   ASSERT_TRUE(tcpClient->receiveMsg(pingReply));
00358   ASSERT_TRUE(tcpClient->sendAndReceiveMsg(pingRequest, pingReply));
00359 
00360   // Delete client and try to reconnect
00361 
00362   delete tcpClient;
00363   sleep(10); //Allow time for client to destruct and free up port
00364   tcpClient = new TcpClient();
00365   ASSERT_TRUE(tcpClient->init(&ipAddr[0], tcpPort));
00366   ASSERT_TRUE(tcpClient->makeConnect());
00367   ASSERT_TRUE(tcpClient->sendAndReceiveMsg(pingRequest, pingReply));
00368 
00369   pthread_cancel(tcpSrvThrd);
00370   pthread_join(tcpSrvThrd, NULL);
00371 }
00372 
00373 TEST(JointMessage, init)
00374 {
00375   JointData joint;
00376 
00377   joint.init();
00378   EXPECT_TRUE(joint.setJoint(0, 1.0));
00379   EXPECT_TRUE(joint.setJoint(1, 2.0));
00380   EXPECT_TRUE(joint.setJoint(2, 3.0));
00381   EXPECT_TRUE(joint.setJoint(3, 4.0));
00382   EXPECT_TRUE(joint.setJoint(4, 5.0));
00383   EXPECT_TRUE(joint.setJoint(5, 6.0));
00384   EXPECT_TRUE(joint.setJoint(6, 7.0));
00385   EXPECT_TRUE(joint.setJoint(7, 8.0));
00386   EXPECT_TRUE(joint.setJoint(8, 9.0));
00387   EXPECT_TRUE(joint.setJoint(9, 10.0));
00388 
00389   EXPECT_FALSE(joint.setJoint(10, 11.0));
00390 
00391 }
00392 
00393 TEST(JointMessage, equal)
00394 {
00395   JointData jointlhs, jointrhs;
00396 
00397   jointrhs.init();
00398   jointlhs.init();
00399   jointlhs.setJoint(0, -1.0);
00400   jointlhs.setJoint(9, 1.0);
00401 
00402   EXPECT_FALSE(jointlhs==jointrhs);
00403 
00404   jointrhs.setJoint(0, -1.0);
00405   jointrhs.setJoint(9, 1.0);
00406 
00407   EXPECT_TRUE(jointlhs==jointrhs);
00408 
00409 }
00410 
00411 TEST(JointMessage, toMessage)
00412 {
00413   JointData toMessage, fromMessage;
00414   JointMessage msg;
00415 
00416   toMessage.init();
00417   toMessage.setJoint(4, 44.44);
00418 
00419   msg.init(1, toMessage);
00420 
00421   fromMessage.copyFrom(msg.getJoints());
00422 
00423   EXPECT_TRUE(toMessage==fromMessage);
00424 
00425 }
00426 
00427 // Message passing routine, used to send and receive a typed message
00428 // Useful for checking the packing and unpacking of message data.
00429 void messagePassing(TypedMessage &send, TypedMessage &recv)
00430 {
00431         const int tcpPort = 11010;
00432           char ipAddr[] = "127.0.0.1";
00433 
00434           TcpClient tcpClient;
00435           TcpServer tcpServer;
00436           SimpleMessage msgSend, msgRecv;
00437 
00438           ASSERT_TRUE(send.toTopic(msgSend));
00439 
00440           // Construct server
00441 
00442           ASSERT_TRUE(tcpServer.init(tcpPort));
00443 
00444           // Construct a client
00445           ASSERT_TRUE(tcpClient.init(&ipAddr[0], tcpPort));
00446           ASSERT_TRUE(tcpClient.makeConnect());
00447 
00448           ASSERT_TRUE(tcpServer.makeConnect());
00449 
00450           ASSERT_TRUE(tcpClient.sendMsg(msgSend));
00451           ASSERT_TRUE(tcpServer.receiveMsg(msgRecv));
00452           ASSERT_TRUE(recv.init(msgRecv));
00453 }
00454 
00455 TEST(JointMessage, Comms)
00456 {
00457 
00458   JointMessage jointSend, jointRecv;
00459   JointData posSend, posRecv;
00460 
00461   posSend.init();
00462   posSend.setJoint(0,1.0);
00463   posSend.setJoint(1,2.0);
00464   posSend.setJoint(2,3.0);
00465   posSend.setJoint(3,4.0);
00466   posSend.setJoint(4,5.0);
00467   posSend.setJoint(5,6.0);
00468   posSend.setJoint(6,7.0);
00469   posSend.setJoint(7,8.0);
00470   posSend.setJoint(8,9.0);
00471   posSend.setJoint(9,10.0);
00472 
00473   jointSend.init(1, posSend);
00474 
00475   messagePassing(jointSend, jointRecv);
00476 
00477   posRecv.copyFrom(jointRecv.getJoints());
00478   ASSERT_TRUE(posRecv==posSend);
00479 }
00480 
00481 
00482 TEST(JointTrajPt, equal)
00483 {
00484         JointTrajPt lhs, rhs;
00485         JointData joint;
00486 
00487   joint.init();
00488   ASSERT_TRUE(joint.setJoint(0, 1.0));
00489   ASSERT_TRUE(joint.setJoint(1, 2.0));
00490   ASSERT_TRUE(joint.setJoint(2, 3.0));
00491   ASSERT_TRUE(joint.setJoint(3, 4.0));
00492   ASSERT_TRUE(joint.setJoint(4, 5.0));
00493   ASSERT_TRUE(joint.setJoint(5, 6.0));
00494   ASSERT_TRUE(joint.setJoint(6, 7.0));
00495   ASSERT_TRUE(joint.setJoint(7, 8.0));
00496   ASSERT_TRUE(joint.setJoint(8, 9.0));
00497   ASSERT_TRUE(joint.setJoint(9, 10.0));
00498 
00499   rhs.init(1.0, joint, 50.0);
00500   EXPECT_FALSE(lhs==rhs);
00501 
00502   lhs.init(0, joint, 0);
00503   EXPECT_FALSE(lhs==rhs);
00504 
00505   lhs.copyFrom(rhs);
00506   EXPECT_TRUE(lhs==rhs);
00507 
00508 }
00509 
00510 TEST(JointTrajPt, toMessage)
00511 {
00512         JointTrajPt toMessage, fromMessage;
00513         JointTrajPtMessage msg;
00514 
00515   toMessage.init();
00516   toMessage.setSequence(99);
00517   msg.init(toMessage);
00518 
00519   fromMessage.copyFrom(msg.point_);
00520 
00521   EXPECT_TRUE(toMessage==fromMessage);
00522 
00523 }
00524 
00525 
00526 TEST(JointTrajPt, Comms)
00527 {
00528 
00529         JointTrajPtMessage jointSend, jointRecv;
00530         JointData data;
00531         JointTrajPt posSend, posRecv;
00532 
00533         data.init();
00534         data.setJoint(0,1.0);
00535         data.setJoint(1,2.0);
00536         data.setJoint(2,3.0);
00537         data.setJoint(3,4.0);
00538         data.setJoint(4,5.0);
00539         data.setJoint(5,6.0);
00540         data.setJoint(6,7.0);
00541         data.setJoint(7,8.0);
00542         data.setJoint(8,9.0);
00543         data.setJoint(9,10.0);
00544         posSend.init(1, data, 99);
00545 
00546   jointSend.init(posSend);
00547 
00548   messagePassing(jointSend, jointRecv);
00549 
00550   posRecv.copyFrom(jointRecv.point_);
00551   ASSERT_TRUE(posRecv==posSend);
00552 }
00553 
00554 TEST(JointTraj, equal)
00555 {
00556         JointTraj lhs, rhs;
00557         JointData joint;
00558         JointTrajPt point;
00559 
00560   joint.init();
00561   ASSERT_TRUE(joint.setJoint(0, 1.0));
00562   ASSERT_TRUE(joint.setJoint(1, 2.0));
00563   ASSERT_TRUE(joint.setJoint(2, 3.0));
00564   ASSERT_TRUE(joint.setJoint(3, 4.0));
00565   ASSERT_TRUE(joint.setJoint(4, 5.0));
00566   ASSERT_TRUE(joint.setJoint(5, 6.0));
00567   ASSERT_TRUE(joint.setJoint(6, 7.0));
00568   ASSERT_TRUE(joint.setJoint(7, 8.0));
00569   ASSERT_TRUE(joint.setJoint(8, 9.0));
00570   ASSERT_TRUE(joint.setJoint(9, 10.0));
00571 
00572   point.init(1.0, joint, 50.0);
00573   rhs.addPoint(point);
00574   EXPECT_FALSE(lhs==rhs);
00575 
00576   lhs.addPoint(point);
00577   EXPECT_TRUE(lhs==rhs);
00578 
00579   lhs.addPoint(point);
00580   EXPECT_FALSE(lhs==rhs);
00581 
00582   lhs.copyFrom(rhs);
00583   EXPECT_TRUE(lhs==rhs);
00584 
00585 }
00586 
00587 
00588 // Run all the tests that were declared with TEST()
00589 int main(int argc, char **argv)
00590 {
00591   testing::InitGoogleTest(&argc, argv);
00592   return RUN_ALL_TESTS();
00593 }
00594 


simple_message
Author(s): Shaun Edwards
autogenerated on Fri Jan 3 2014 11:26:56