RegisterPropertiesFactory_Test.cpp
Go to the documentation of this file.
00001 #include <gtest/gtest.h>
00002 #include <boost/make_shared.hpp>
00003 #include "robot_instance/RegisterPropertiesFactory.h"
00004 
00005 class RegisterPropertiesFactoryTest : public ::testing::Test
00006 {
00007 protected:
00008     virtual void SetUp()
00009     {
00010         registerXml =
00011             "<Register id=\"Control1\" type=\"Control\" size=\"16\">" \
00012             "   <Certificate value=\"0xAA00\" mask=\"0xFF00\" />" \
00013             "   <Entries>" \
00014             "       <Entry id=\"Mode\" index=\"0\" size=\"8\"><Description>Used to set value of entire lower byte.</Description></Entry>" \
00015             "       <Entry id=\"MotorEnable\" index=\"0\" size=\"1\"><Description>0=disable,1=enable</Description></Entry>" \
00016             "       <Entry id=\"BrakeRelease\" index=\"1\" size=\"1\"><Description>0=engage,1=release</Description></Entry>" \
00017             "       <Entry id=\"ProcReset\" index=\"2\" size=\"1\"><Description>1=reset</Description></Entry>" \
00018             "       <Entry id=\"CourseMode\" index=\"3\" size=\"1\"><Description>0=fine,1=course</Description></Entry>" \
00019             "       <Entry id=\"CalibrationMode\" index=\"4\" size=\"1\"><Description>0=run,1=calibrate</Description></Entry>" \
00020             "       <Entry id=\"ClearEncoder\" index=\"5\" size=\"1\"><Description>1=clear</Description></Entry>" \
00021             "       <Entry id=\"MotComSource\" index=\"6\" size=\"1\"><Description>0=brainstem,1=embedded</Description></Entry>" \
00022             "       <Entry id=\"QuadMode\" index=\"7\" size=\"1\"><Description>0=two quad,1=four quad</Description></Entry>" \
00023             "   </Entries>" \
00024             "</Register>";
00025     }
00026 
00027     virtual void TearDown()
00028     {
00029     }
00030 
00031     RegisterPropertiesFactory registerPropertiesFactory;
00032     std::string registerXml;
00033 };
00034 
00035 TEST_F(RegisterPropertiesFactoryTest, ParseXml)
00036 {
00037     RegisterPropertiesPtr registerProperties = registerPropertiesFactory.fromXml(registerXml);
00038 
00039     EXPECT_EQ(0xAA00, registerProperties->REGISTER_CERTIFICATE_VALUE);
00040     EXPECT_EQ(0xFF00, registerProperties->REGISTER_CERTIFICATE_MASK);
00041     EXPECT_TRUE(registerProperties->isWritable);
00042 
00043     EXPECT_EQ(9, registerProperties->registerProperty.size());
00044 
00045     EXPECT_STREQ("Mode", registerProperties->registerProperty["Mode"].name.c_str());
00046     EXPECT_EQ(BitMinion::BIT_ZERO_INDEX, registerProperties->registerProperty["Mode"].bitIndex);
00047     EXPECT_EQ(BitMinion::EIGHT_BIT_MASK, registerProperties->registerProperty["Mode"].sizeMask);
00048     EXPECT_STREQ("Used to set value of entire lower byte.", registerProperties->registerProperty["Mode"].notes.c_str());
00049 
00050     EXPECT_STREQ("QuadMode", registerProperties->registerPropertyVector[8]->name.c_str());
00051     EXPECT_EQ(BitMinion::BIT_SEVEN_INDEX, registerProperties->registerPropertyVector[8]->bitIndex);
00052     EXPECT_EQ(BitMinion::ONE_BIT_MASK, registerProperties->registerPropertyVector[8]->sizeMask);
00053     EXPECT_STREQ("0=two quad,1=four quad", registerProperties->registerPropertyVector[8]->notes.c_str());
00054 
00055     EXPECT_THROW(registerPropertiesFactory.fromXml(""), MissingXMLElementException);
00056     EXPECT_NO_THROW(registerPropertiesFactory.fromXml("<Register></Register>"));
00057     EXPECT_NO_THROW(registerPropertiesFactory.fromXml("<Register><Certificate /></Register>"));
00058     EXPECT_NO_THROW(registerPropertiesFactory.fromXml("<Register><Certificate /><Entries></Entries></Register>"));
00059     EXPECT_THROW(registerPropertiesFactory.fromXml("<Register><Certificate /><Entries><Entry></Entry></Entries></Register>"), MissingXMLElementException);
00060     EXPECT_THROW(registerPropertiesFactory.fromXml("<Register><Certificate /><Entries><Entry id=\"\"></Entry></Entries></Register>"), MissingXMLElementException);
00061     EXPECT_THROW(registerPropertiesFactory.fromXml("<Register><Certificate /><Entries><Entry id=\"\" index=\"\"></Entry></Entries></Register>"), MissingXMLElementException);
00062     EXPECT_THROW(registerPropertiesFactory.fromXml("<Register><Certificate /><Entries><Entry id=\"\" index=\"1\"></Entry></Entries></Register>"), MissingXMLElementException);
00063     EXPECT_THROW(registerPropertiesFactory.fromXml("<Register><Certificate /><Entries><Entry id=\"\" index=\"1\" size=\"\"></Entry></Entries></Register>"), MissingXMLElementException);
00064     EXPECT_THROW(registerPropertiesFactory.fromXml("<Register><Certificate /><Entries><Entry id=\"\" index=\"1\" size=\"1\"></Entry></Entries></Register>"), MissingXMLElementException);
00065 }
00066 
00067 int main(int argc, char** argv)
00068 {
00069     testing::InitGoogleTest(&argc, argv);
00070     return RUN_ALL_TESTS();
00071 }


robot_instance
Author(s):
autogenerated on Sat Jun 8 2019 20:43:12