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 }