00001 #include <iostream>
00002 #include <gtest/gtest.h>
00003 #include <boost/shared_ptr.hpp>
00004 #include "robot_instance/RobonetDataElement.h"
00005
00006 using namespace std;
00007 using namespace boost;
00008
00009 TEST(RobonetDataElement, Constructors)
00010 {
00011 RobonetDataElement robonetDataElement1("bool", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor");
00012 ASSERT_FALSE(robonetDataElement1.getValue<bool>());
00013 ASSERT_EQ(DataElement::Read, robonetDataElement1.getReadWrite());
00014 ASSERT_EQ("RightArm", robonetDataElement1.getChannel());
00015 ASSERT_EQ("J1", robonetDataElement1.getNode());
00016 ASSERT_EQ("OnOff", robonetDataElement1.getOffsetPair().first);
00017 ASSERT_EQ("", robonetDataElement1.getOffsetPair().second);
00018 ASSERT_EQ("Monitor", robonetDataElement1.getGroup());
00019 ASSERT_EQ(DataElement::EightBit, robonetDataElement1.getSize());
00020 ASSERT_EQ(0, robonetDataElement1.getRawPair().first);
00021 ASSERT_EQ(0, robonetDataElement1.getRawPair().second);
00022
00023 RobonetDataElement robonetDataElement2("float", DataElement::Write, "LeftLeg", "J3", RobonetDataElement::OffsetPair("APS1L", "APS1H"), "Command");
00024 ASSERT_FLOAT_EQ(0, robonetDataElement2.getValue<float>());
00025 ASSERT_EQ(DataElement::Write, robonetDataElement2.getReadWrite());
00026 ASSERT_EQ("LeftLeg", robonetDataElement2.getChannel());
00027 ASSERT_EQ("J3", robonetDataElement2.getNode());
00028 ASSERT_EQ("APS1L", robonetDataElement2.getOffsetPair().first);
00029 ASSERT_EQ("APS1H", robonetDataElement2.getOffsetPair().second);
00030 ASSERT_EQ("Command", robonetDataElement2.getGroup());
00031 ASSERT_EQ(DataElement::ThirtyTwoBit, robonetDataElement2.getSize());
00032 ASSERT_EQ(0, robonetDataElement2.getRawPair().first);
00033 ASSERT_EQ(0, robonetDataElement2.getRawPair().second);
00034
00035 RobonetDataElement robonetDataElement3("int16_t", DataElement::Write, "LeftLeg", "J3", RobonetDataElement::OffsetPair("APS1L", ""), "Command", RobonetDataElement::MotCom);
00036 ASSERT_FLOAT_EQ(0, robonetDataElement3.getValue<int16_t>());
00037 ASSERT_EQ(DataElement::Write, robonetDataElement3.getReadWrite());
00038 ASSERT_EQ("LeftLeg", robonetDataElement3.getChannel());
00039 ASSERT_EQ("J3", robonetDataElement3.getNode());
00040 ASSERT_EQ("APS1L", robonetDataElement3.getOffsetPair().first);
00041 ASSERT_EQ("", robonetDataElement3.getOffsetPair().second);
00042 ASSERT_EQ("Command", robonetDataElement3.getGroup());
00043 ASSERT_EQ(DataElement::SixteenBit, robonetDataElement3.getSize());
00044 ASSERT_EQ(0, robonetDataElement3.getRawPair().first);
00045 ASSERT_EQ(0, robonetDataElement3.getRawPair().second);
00046
00047 RobonetDataElement robonetDataElement4("float", DataElement::Write, "LeftLeg", "J3", RobonetDataElement::OffsetPair("APS1L", ""), "Command", RobonetDataElement::Temperature);
00048 ASSERT_FLOAT_EQ(0, robonetDataElement4.getValue<float>());
00049 ASSERT_EQ(DataElement::Write, robonetDataElement4.getReadWrite());
00050 ASSERT_EQ("LeftLeg", robonetDataElement4.getChannel());
00051 ASSERT_EQ("J3", robonetDataElement4.getNode());
00052 ASSERT_EQ("APS1L", robonetDataElement4.getOffsetPair().first);
00053 ASSERT_EQ("", robonetDataElement4.getOffsetPair().second);
00054 ASSERT_EQ("Command", robonetDataElement4.getGroup());
00055 ASSERT_EQ(DataElement::ThirtyTwoBit, robonetDataElement4.getSize());
00056 ASSERT_EQ(0, robonetDataElement4.getRawPair().first);
00057 ASSERT_EQ(0, robonetDataElement4.getRawPair().second);
00058
00059 RobonetDataElement robonetDataElement5("uint16_t", DataElement::Write, "LeftLeg", "J3", RobonetDataElement::OffsetPair("APS1L", "APS1H"), "Command", RobonetDataElement::BrakePwm);
00060 ASSERT_FLOAT_EQ(0, robonetDataElement5.getValue<uint16_t>());
00061 ASSERT_EQ(DataElement::Write, robonetDataElement5.getReadWrite());
00062 ASSERT_EQ("LeftLeg", robonetDataElement5.getChannel());
00063 ASSERT_EQ("J3", robonetDataElement5.getNode());
00064 ASSERT_EQ("APS1L", robonetDataElement5.getOffsetPair().first);
00065 ASSERT_EQ("APS1H", robonetDataElement5.getOffsetPair().second);
00066 ASSERT_EQ("Command", robonetDataElement5.getGroup());
00067 ASSERT_EQ(DataElement::SixteenBit, robonetDataElement5.getSize());
00068 ASSERT_EQ(0, robonetDataElement5.getRawPair().first);
00069 ASSERT_EQ(0, robonetDataElement5.getRawPair().second);
00070
00071 RobonetDataElement robonetDataElement6("float", DataElement::Read, "Power", "BMS", RobonetDataElement::OffsetPair("Temperature1", ""), "Command", RobonetDataElement::FixedPointMilli);
00072 ASSERT_FLOAT_EQ(0, robonetDataElement6.getValue<float>());
00073 ASSERT_EQ(DataElement::Read, robonetDataElement6.getReadWrite());
00074 ASSERT_EQ("Power", robonetDataElement6.getChannel());
00075 ASSERT_EQ("BMS", robonetDataElement6.getNode());
00076 ASSERT_EQ("Temperature1", robonetDataElement6.getOffsetPair().first);
00077 ASSERT_EQ("", robonetDataElement6.getOffsetPair().second);
00078 ASSERT_EQ("Command", robonetDataElement6.getGroup());
00079 ASSERT_EQ(DataElement::ThirtyTwoBit, robonetDataElement6.getSize());
00080 ASSERT_EQ(0, robonetDataElement6.getRawPair().first);
00081 ASSERT_EQ(0, robonetDataElement6.getRawPair().second);
00082
00083 RobonetDataElement robonetDataElement7("float", DataElement::Write, "Power", "BMS", RobonetDataElement::OffsetPair("Current24VUpperLimit", ""), "Command", RobonetDataElement::UnsignedFixedPointMilli);
00084 ASSERT_FLOAT_EQ(0, robonetDataElement7.getValue<float>());
00085 ASSERT_EQ(DataElement::Write, robonetDataElement7.getReadWrite());
00086 ASSERT_EQ("Power", robonetDataElement7.getChannel());
00087 ASSERT_EQ("BMS", robonetDataElement7.getNode());
00088 ASSERT_EQ("Current24VUpperLimit", robonetDataElement7.getOffsetPair().first);
00089 ASSERT_EQ("", robonetDataElement7.getOffsetPair().second);
00090 ASSERT_EQ("Command", robonetDataElement7.getGroup());
00091 ASSERT_EQ(DataElement::ThirtyTwoBit, robonetDataElement7.getSize());
00092 ASSERT_EQ(0, robonetDataElement7.getRawPair().first);
00093 ASSERT_EQ(0, robonetDataElement7.getRawPair().second);
00094
00095 RobonetDataElement robonetDataElement8("float", DataElement::Read, "Power", "PowCon", RobonetDataElement::OffsetPair("PC_24V_TEMP_1", ""), "Command", RobonetDataElement::PowConTemperature);
00096 ASSERT_FLOAT_EQ(0, robonetDataElement8.getValue<float>());
00097 ASSERT_EQ(DataElement::Read, robonetDataElement8.getReadWrite());
00098 ASSERT_EQ("Power", robonetDataElement8.getChannel());
00099 ASSERT_EQ("PowCon", robonetDataElement8.getNode());
00100 ASSERT_EQ("PC_24V_TEMP_1", robonetDataElement8.getOffsetPair().first);
00101 ASSERT_EQ("", robonetDataElement8.getOffsetPair().second);
00102 ASSERT_EQ("Command", robonetDataElement8.getGroup());
00103 ASSERT_EQ(DataElement::ThirtyTwoBit, robonetDataElement8.getSize());
00104 ASSERT_EQ(0, robonetDataElement8.getRawPair().first);
00105 ASSERT_EQ(0, robonetDataElement8.getRawPair().second);
00106
00107 RobonetDataElement robonetDataElement9("float", DataElement::Read, "Power", "PowCon", RobonetDataElement::OffsetPair("PC_24V_CSENSE_1", ""), "Command", RobonetDataElement::PowConCurrentMany);
00108 ASSERT_FLOAT_EQ(0, robonetDataElement9.getValue<float>());
00109 ASSERT_EQ(DataElement::Read, robonetDataElement9.getReadWrite());
00110 ASSERT_EQ("Power", robonetDataElement9.getChannel());
00111 ASSERT_EQ("PowCon", robonetDataElement9.getNode());
00112 ASSERT_EQ("PC_24V_CSENSE_1", robonetDataElement9.getOffsetPair().first);
00113 ASSERT_EQ("", robonetDataElement9.getOffsetPair().second);
00114 ASSERT_EQ("Command", robonetDataElement9.getGroup());
00115 ASSERT_EQ(DataElement::ThirtyTwoBit, robonetDataElement9.getSize());
00116 ASSERT_EQ(0, robonetDataElement9.getRawPair().first);
00117 ASSERT_EQ(0, robonetDataElement9.getRawPair().second);
00118
00119 RobonetDataElement robonetDataElement10("float", DataElement::Write, "Power", "PowCon", RobonetDataElement::OffsetPair("PC_5V_UL", ""), "Command", RobonetDataElement::PowConTemperature);
00120 ASSERT_FLOAT_EQ(0, robonetDataElement10.getValue<float>());
00121 ASSERT_EQ(DataElement::Write, robonetDataElement10.getReadWrite());
00122 ASSERT_EQ("Power", robonetDataElement10.getChannel());
00123 ASSERT_EQ("PowCon", robonetDataElement10.getNode());
00124 ASSERT_EQ("PC_5V_UL", robonetDataElement10.getOffsetPair().first);
00125 ASSERT_EQ("", robonetDataElement10.getOffsetPair().second);
00126 ASSERT_EQ("Command", robonetDataElement10.getGroup());
00127 ASSERT_EQ(DataElement::ThirtyTwoBit, robonetDataElement10.getSize());
00128 ASSERT_EQ(0, robonetDataElement10.getRawPair().first);
00129 ASSERT_EQ(0, robonetDataElement10.getRawPair().second);
00130 }
00131
00132 TEST(RobonetDataElement, InvalidArgumentInConstructor)
00133 {
00134 ASSERT_NO_THROW(RobonetDataElement("bool", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor"));
00135 ASSERT_THROW(RobonetDataElement("bool", DataElement::Read, "", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor"), invalid_argument);
00136 ASSERT_THROW(RobonetDataElement("bool", DataElement::Read, "RightArm", "", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor"), invalid_argument);
00137 ASSERT_THROW(RobonetDataElement("bool", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("", ""), "Monitor"), invalid_argument);
00138 ASSERT_THROW(RobonetDataElement("bool", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), ""), invalid_argument);
00139 ASSERT_THROW(RobonetDataElement("float", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor"), invalid_argument);
00140 ASSERT_NO_THROW(RobonetDataElement("float", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor", RobonetDataElement::Temperature));
00141 ASSERT_THROW(RobonetDataElement("float", DataElement::Write, "LeftLeg", "J3", RobonetDataElement::OffsetPair("APS1L", "APS1H"), "Command", RobonetDataElement::MotCom), invalid_argument);
00142 ASSERT_THROW(RobonetDataElement("uint32_t", DataElement::Write, "LeftLeg", "J3", RobonetDataElement::OffsetPair("APS1L", "APS1H"), "Command", RobonetDataElement::Temperature), invalid_argument);
00143 ASSERT_THROW(RobonetDataElement("float", DataElement::Write, "LeftLeg", "J3", RobonetDataElement::OffsetPair("APS1L", "APS1H"), "Command", RobonetDataElement::BrakePwm), invalid_argument);
00144 ASSERT_THROW(RobonetDataElement("int16_t", DataElement::Read, "Power", "BMS", RobonetDataElement::OffsetPair("Temperature1", ""), "Command", RobonetDataElement::FixedPointMilli), invalid_argument);
00145 ASSERT_THROW(RobonetDataElement("uint16_t", DataElement::Write, "Power", "BMS", RobonetDataElement::OffsetPair("Current24VUpperLimit", ""), "Command", RobonetDataElement::UnsignedFixedPointMilli), invalid_argument);
00146 }
00147
00148 TEST(RobonetDataElement, InvalidArgumentInMethods)
00149 {
00150 RobonetDataElement robonetDataElement("float", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00151
00152 EXPECT_THROW(robonetDataElement.setChannel(""), invalid_argument);
00153 EXPECT_THROW(robonetDataElement.setNode(""), invalid_argument);
00154 EXPECT_THROW(robonetDataElement.setOffsetPair(RobonetDataElement::OffsetPair("", "")), invalid_argument);
00155 EXPECT_THROW(robonetDataElement.setOffsetPair(RobonetDataElement::OffsetPair("OnOff", "")), invalid_argument);
00156 EXPECT_THROW(robonetDataElement.setGroup(""), invalid_argument);
00157 }
00158
00159 TEST(RobonetDataElement, MotComTrim)
00160 {
00161 RobonetDataElement robonetDataElement("int16_t", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor", RobonetDataElement::MotCom);
00162
00163 int16_t value = 20000;
00164 robonetDataElement.setValue<int16_t>(value);
00165 EXPECT_EQ(255, robonetDataElement.getValue<int16_t>());
00166
00167 value = -20000;
00168 robonetDataElement.setValue<int16_t>(value);
00169 EXPECT_EQ(-255, robonetDataElement.getValue<int16_t>());
00170 }
00171
00172 TEST(RobonetDataElement, TemperatureTrim)
00173 {
00174 RobonetDataElement robonetDataElement("float", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor", RobonetDataElement::Temperature);
00175
00176 float value = 100;
00177 robonetDataElement.setValue<float>(value);
00178 EXPECT_EQ(100, robonetDataElement.getValue<float>());
00179
00180 value = -20000;
00181 robonetDataElement.setValue<float>(value);
00182 EXPECT_EQ(0, robonetDataElement.getValue<float>());
00183 }
00184
00185 TEST(RobonetDataElement, BrakePwmTrim)
00186 {
00187 RobonetDataElement robonetDataElement("uint16_t", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor", RobonetDataElement::BrakePwm);
00188
00189 uint16_t value = 4097;
00190 robonetDataElement.setValue<uint16_t>(value);
00191 EXPECT_EQ(4096, robonetDataElement.getValue<uint16_t>());
00192 }
00193
00194 TEST(RobonetDataElement, GetRawSize)
00195 {
00196 RobonetDataElement robonetDataElement1("bool", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor");
00197 EXPECT_EQ(DataElement::EightBit, robonetDataElement1.getSize());
00198 EXPECT_EQ(DataElement::EightBit, robonetDataElement1.getRawSize());
00199
00200 RobonetDataElement robonetDataElement2("float", DataElement::Write, "LeftLeg", "J3", RobonetDataElement::OffsetPair("APS1L", "APS1H"), "Command");
00201 EXPECT_EQ(DataElement::ThirtyTwoBit, robonetDataElement2.getSize());
00202 EXPECT_EQ(DataElement::ThirtyTwoBit, robonetDataElement2.getRawSize());
00203
00204 RobonetDataElement robonetDataElement3("int16_t", DataElement::Write, "LeftLeg", "J3", RobonetDataElement::OffsetPair("APS1L", ""), "Command", RobonetDataElement::MotCom);
00205 EXPECT_EQ(DataElement::SixteenBit, robonetDataElement3.getSize());
00206 EXPECT_EQ(DataElement::SixteenBit, robonetDataElement3.getRawSize());
00207
00208 RobonetDataElement robonetDataElement4("float", DataElement::Write, "LeftLeg", "J3", RobonetDataElement::OffsetPair("APS1L", ""), "Command", RobonetDataElement::Temperature);
00209 EXPECT_EQ(DataElement::ThirtyTwoBit, robonetDataElement4.getSize());
00210 EXPECT_EQ(DataElement::SixteenBit, robonetDataElement4.getRawSize());
00211 }
00212
00213 TEST(RobonetDataElement, GetSetAttributes)
00214 {
00215 RobonetDataElement robonetDataElement("bool", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor");
00216
00217 EXPECT_EQ("RightArm", robonetDataElement.getChannel());
00218 robonetDataElement.setChannel("LeftLeg");
00219 EXPECT_EQ("LeftLeg", robonetDataElement.getChannel());
00220
00221 EXPECT_EQ("J1", robonetDataElement.getNode());
00222 robonetDataElement.setNode("J3");
00223 EXPECT_EQ("J3", robonetDataElement.getNode());
00224
00225 EXPECT_EQ("OnOff", robonetDataElement.getOffsetPair().first);
00226 EXPECT_EQ("", robonetDataElement.getOffsetPair().second);
00227 robonetDataElement.setOffsetPair(RobonetDataElement::OffsetPair("APS1L", "APS1H"));
00228 EXPECT_EQ("APS1L", robonetDataElement.getOffsetPair().first);
00229 EXPECT_EQ("APS1H", robonetDataElement.getOffsetPair().second);
00230
00231 EXPECT_EQ("Monitor", robonetDataElement.getGroup());
00232 robonetDataElement.setGroup("Command");
00233 EXPECT_EQ("Command", robonetDataElement.getGroup());
00234 }
00235
00236 TEST(RobonetDataElement, PullFromReadElement)
00237 {
00238 RobonetDataElement robonetDataElement("uint32_t", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00239 RobonetDataElement::RawPair rawPair;
00240
00241 EXPECT_EQ(0, robonetDataElement.getValue<uint32_t>());
00242 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00243 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00244
00245 robonetDataElement.setValue<uint32_t>(65537);
00246 rawPair = robonetDataElement.pull();
00247 EXPECT_EQ(0, rawPair.first);
00248 EXPECT_EQ(0, rawPair.second);
00249 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00250 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00251 }
00252
00253 TEST(RobonetDataElement, PullFromWriteElement)
00254 {
00255 RobonetDataElement robonetDataElement("uint32_t", DataElement::Write, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00256 RobonetDataElement::RawPair rawPair;
00257
00258 EXPECT_EQ(0, robonetDataElement.getValue<uint32_t>());
00259 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00260 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00261
00262 robonetDataElement.setValue<uint32_t>(65537);
00263 rawPair = robonetDataElement.pull();
00264 EXPECT_EQ(1, rawPair.first);
00265 EXPECT_EQ(1, rawPair.second);
00266 EXPECT_EQ(1, robonetDataElement.getRawPair().first);
00267 EXPECT_EQ(1, robonetDataElement.getRawPair().second);
00268 }
00269
00270 TEST(RobonetDataElement, PullUnsignedIntSixteen)
00271 {
00272 RobonetDataElement robonetDataElement("uint16_t", DataElement::Write, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00273 RobonetDataElement::RawPair rawPair;
00274
00275 EXPECT_EQ(0, robonetDataElement.getValue<uint16_t>());
00276 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00277 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00278
00279 robonetDataElement.setValue<uint16_t>(12);
00280
00281 EXPECT_EQ(12, robonetDataElement.getValue<uint16_t>());
00282 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00283 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00284
00285 rawPair = robonetDataElement.pull();
00286 EXPECT_EQ(12, rawPair.first);
00287 EXPECT_EQ(0, rawPair.second);
00288 EXPECT_EQ(12, robonetDataElement.getRawPair().first);
00289 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00290
00291 robonetDataElement.setValue<uint16_t>((uint16_t)65536);
00292 rawPair = robonetDataElement.pull();
00293 EXPECT_EQ(0, rawPair.first);
00294 EXPECT_EQ(0, rawPair.second);
00295 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00296 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00297 }
00298
00299 TEST(RobonetDataElement, PullUnsignedIntThirtyTwo)
00300 {
00301 RobonetDataElement robonetDataElement("uint32_t", DataElement::Write, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00302 RobonetDataElement::RawPair rawPair;
00303
00304 robonetDataElement.setValue<uint32_t>(65536);
00305 rawPair = robonetDataElement.pull();
00306 EXPECT_EQ(0, rawPair.first);
00307 EXPECT_EQ(1, rawPair.second);
00308 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00309 EXPECT_EQ(1, robonetDataElement.getRawPair().second);
00310 }
00311
00312 TEST(RobonetDataElement, PullIntSixteen)
00313 {
00314 RobonetDataElement robonetDataElement("int16_t", DataElement::Write, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00315 RobonetDataElement::RawPair rawPair;
00316
00317 EXPECT_EQ(0, robonetDataElement.getValue<int16_t>());
00318 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00319 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00320
00321 robonetDataElement.setValue<int16_t>(-12);
00322
00323 EXPECT_EQ(-12, robonetDataElement.getValue<int16_t>());
00324 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00325 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00326
00327 rawPair = robonetDataElement.pull();
00328 EXPECT_EQ(65524, rawPair.first);
00329 EXPECT_EQ(0, rawPair.second);
00330 EXPECT_EQ(65524, robonetDataElement.getRawPair().first);
00331 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00332
00333 robonetDataElement.setValue<int16_t>((int16_t)65536);
00334 rawPair = robonetDataElement.pull();
00335 EXPECT_EQ(0, rawPair.first);
00336 EXPECT_EQ(0, rawPair.second);
00337 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00338 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00339
00340 robonetDataElement.setValue<int16_t>(-1);
00341 rawPair = robonetDataElement.pull();
00342 EXPECT_EQ(65535, rawPair.first);
00343 EXPECT_EQ(0, rawPair.second);
00344 EXPECT_EQ(65535, robonetDataElement.getRawPair().first);
00345 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00346 }
00347
00348 TEST(RobonetDataElement, PullIntThirtyTwo)
00349 {
00350 RobonetDataElement robonetDataElement("int32_t", DataElement::Write, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00351 RobonetDataElement::RawPair rawPair;
00352
00353 EXPECT_EQ(0, robonetDataElement.getValue<int32_t>());
00354 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00355 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00356
00357 robonetDataElement.setValue<int32_t>(-12);
00358
00359 EXPECT_EQ(-12, robonetDataElement.getValue<int32_t>());
00360 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00361 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00362
00363 rawPair = robonetDataElement.pull();
00364 EXPECT_EQ(65524, rawPair.first);
00365 EXPECT_EQ(65535, rawPair.second);
00366 EXPECT_EQ(65524, robonetDataElement.getRawPair().first);
00367 EXPECT_EQ(65535, robonetDataElement.getRawPair().second);
00368
00369 robonetDataElement.setValue<int32_t>(65536);
00370 rawPair = robonetDataElement.pull();
00371 EXPECT_EQ(0, rawPair.first);
00372 EXPECT_EQ(1, rawPair.second);
00373 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00374 EXPECT_EQ(1, robonetDataElement.getRawPair().second);
00375
00376 robonetDataElement.setValue<int32_t>(-1);
00377 rawPair = robonetDataElement.pull();
00378 EXPECT_EQ(65535, rawPair.first);
00379 EXPECT_EQ(65535, rawPair.second);
00380 EXPECT_EQ(65535, robonetDataElement.getRawPair().first);
00381 EXPECT_EQ(65535, robonetDataElement.getRawPair().second);
00382 }
00383
00384 TEST(RobonetDataElement, PullFloat)
00385 {
00386 RobonetDataElement robonetDataElement("float", DataElement::Write, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00387 RobonetDataElement::RawPair rawPair;
00388
00389 EXPECT_FLOAT_EQ(0, robonetDataElement.getValue<float>());
00390 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00391 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00392
00393 robonetDataElement.setValue<float>(3.14159);
00394
00395 EXPECT_FLOAT_EQ(3.14159, robonetDataElement.getValue<float>());
00396 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00397 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00398
00399 rawPair = robonetDataElement.pull();
00400 EXPECT_EQ(4048, rawPair.first);
00401 EXPECT_EQ(16457, rawPair.second);
00402 EXPECT_EQ(4048, robonetDataElement.getRawPair().first);
00403 EXPECT_EQ(16457, robonetDataElement.getRawPair().second);
00404 }
00405
00406 TEST(RobonetDataElement, PullBool)
00407 {
00408 RobonetDataElement robonetDataElement("bool", DataElement::Write, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00409 RobonetDataElement::RawPair rawPair;
00410
00411 EXPECT_FALSE(robonetDataElement.getValue<bool>());
00412 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00413 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00414
00415 robonetDataElement.setValue<bool>(true);
00416
00417 EXPECT_TRUE(robonetDataElement.getValue<bool>());
00418 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00419 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00420
00421 rawPair = robonetDataElement.pull();
00422 EXPECT_EQ(1, rawPair.first);
00423 EXPECT_EQ(0, rawPair.second);
00424 EXPECT_EQ(1, robonetDataElement.getRawPair().first);
00425 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00426 }
00427
00428 TEST(RobonetDataElement, PullMotCom)
00429 {
00430 RobonetDataElement robonetDataElement("int16_t", DataElement::Write, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor", RobonetDataElement::MotCom);
00431 RobonetDataElement::RawPair rawPair;
00432
00433 EXPECT_EQ(0, robonetDataElement.getValue<int16_t>());
00434 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00435 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00436
00437 rawPair = robonetDataElement.pull();
00438 EXPECT_EQ(0x0E00, rawPair.first);
00439 EXPECT_EQ(0x0000, rawPair.second);
00440
00441 robonetDataElement.setValue<int16_t>(255);
00442 rawPair = robonetDataElement.pull();
00443 EXPECT_EQ(0x0EFF, rawPair.first);
00444 EXPECT_EQ(0x0000, rawPair.second);
00445
00446 robonetDataElement.setValue<int16_t>(-255);
00447 rawPair = robonetDataElement.pull();
00448 EXPECT_EQ(0x0FFF, rawPair.first);
00449 EXPECT_EQ(0x0000, rawPair.second);
00450
00451 robonetDataElement.setValue<int16_t>(64);
00452 rawPair = robonetDataElement.pull();
00453 EXPECT_EQ(0x0E40, rawPair.first);
00454 EXPECT_EQ(0x0000, rawPair.second);
00455
00456 robonetDataElement.setValue<int16_t>(-48);
00457 rawPair = robonetDataElement.pull();
00458 EXPECT_EQ(0x0F30, rawPair.first);
00459 EXPECT_EQ(0x0000, rawPair.second);
00460 }
00461
00462 TEST(RobonetDataElement, PullTemperature)
00463 {
00464 RobonetDataElement robonetDataElement("float", DataElement::Write, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor", RobonetDataElement::Temperature);
00465 RobonetDataElement::RawPair rawPair;
00466
00467 EXPECT_EQ(0, robonetDataElement.getValue<float>());
00468 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00469 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00470
00471 rawPair = robonetDataElement.pull();
00472 EXPECT_EQ(0x0000, rawPair.first);
00473 EXPECT_EQ(0x0000, rawPair.second);
00474
00475 robonetDataElement.setValue<float>(100.0);
00476 rawPair = robonetDataElement.pull();
00477 EXPECT_EQ(0x00C8, rawPair.first);
00478 EXPECT_EQ(0x0000, rawPair.second);
00479
00480 robonetDataElement.setValue<float>(121.5);
00481 rawPair = robonetDataElement.pull();
00482 EXPECT_EQ(0x00F3, rawPair.first);
00483 EXPECT_EQ(0x0000, rawPair.second);
00484 }
00485
00486 TEST(RobonetDataElement, PullBrakePwm)
00487 {
00488 RobonetDataElement robonetDataElement("uint16_t", DataElement::Write, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor", RobonetDataElement::BrakePwm);
00489 RobonetDataElement::RawPair rawPair;
00490
00491 EXPECT_EQ(0, robonetDataElement.getValue<uint16_t>());
00492 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00493 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00494
00495 rawPair = robonetDataElement.pull();
00496 EXPECT_EQ(0xC000, rawPair.first);
00497 EXPECT_EQ(0x0000, rawPair.second);
00498
00499 robonetDataElement.setValue<uint16_t>(0x123);
00500 rawPair = robonetDataElement.pull();
00501 EXPECT_EQ(0xC123, rawPair.first);
00502 EXPECT_EQ(0x0000, rawPair.second);
00503 }
00504
00505 TEST(RobonetDataElement, PullFixedPointMilli)
00506 {
00507 RobonetDataElement robonetDataElement("float", DataElement::Write, "Power", "BMS", RobonetDataElement::OffsetPair("Current24VUpperLimit", ""), "Monitor", RobonetDataElement::FixedPointMilli);
00508 RobonetDataElement::RawPair rawPair;
00509
00510 EXPECT_EQ(0, robonetDataElement.getValue<float>());
00511 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00512 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00513
00514 rawPair = robonetDataElement.pull();
00515 EXPECT_EQ(0x0000, rawPair.first);
00516 EXPECT_EQ(0x0000, rawPair.second);
00517
00518 robonetDataElement.setValue<float>(-31.456);
00519 rawPair = robonetDataElement.pull();
00520 EXPECT_EQ(0x8520, rawPair.first);
00521 EXPECT_EQ(0x0000, rawPair.second);
00522
00523 robonetDataElement.setValue<float>(-1.454);
00524 rawPair = robonetDataElement.pull();
00525 EXPECT_EQ(0xFA52, rawPair.first);
00526 EXPECT_EQ(0x0000, rawPair.second);
00527
00528 robonetDataElement.setValue<float>(31.456);
00529 rawPair = robonetDataElement.pull();
00530 EXPECT_EQ(0x7AE0, rawPair.first);
00531 EXPECT_EQ(0x0000, rawPair.second);
00532 }
00533
00534 TEST(RobonetDataElement, PullUnsignedFixedPointMilli)
00535 {
00536 RobonetDataElement robonetDataElement("float", DataElement::Write, "Power", "BMS", RobonetDataElement::OffsetPair("Current24VUpperLimit", ""), "Monitor", RobonetDataElement::UnsignedFixedPointMilli);
00537 RobonetDataElement::RawPair rawPair;
00538
00539 EXPECT_EQ(0, robonetDataElement.getValue<float>());
00540 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00541 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00542
00543 rawPair = robonetDataElement.pull();
00544 EXPECT_EQ(0x0000, rawPair.first);
00545 EXPECT_EQ(0x0000, rawPair.second);
00546
00547 robonetDataElement.setValue<float>(1.454);
00548 rawPair = robonetDataElement.pull();
00549 EXPECT_EQ(0x5AE, rawPair.first);
00550 EXPECT_EQ(0x0000, rawPair.second);
00551
00552 robonetDataElement.setValue<float>(31.456);
00553 rawPair = robonetDataElement.pull();
00554 EXPECT_EQ(0x7AE0, rawPair.first);
00555 EXPECT_EQ(0x0000, rawPair.second);
00556
00557 robonetDataElement.setValue<float>(63.772);
00558 rawPair = robonetDataElement.pull();
00559 EXPECT_EQ(0xF91C, rawPair.first);
00560 EXPECT_EQ(0x0000, rawPair.second);
00561 }
00562
00563 TEST(RobonetDataElement, PullFixedPointCenti)
00564 {
00565 RobonetDataElement robonetDataElement("float", DataElement::Write, "Power", "BMS", RobonetDataElement::OffsetPair("Current24VUpperLimit", ""), "Monitor", RobonetDataElement::FixedPointCenti);
00566 RobonetDataElement::RawPair rawPair;
00567
00568 EXPECT_EQ(0, robonetDataElement.getValue<float>());
00569 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00570 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00571
00572 rawPair = robonetDataElement.pull();
00573 EXPECT_EQ(0x0000, rawPair.first);
00574 EXPECT_EQ(0x0000, rawPair.second);
00575
00576 robonetDataElement.setValue<float>(-314.56);
00577 rawPair = robonetDataElement.pull();
00578 EXPECT_EQ(0x8520, rawPair.first);
00579 EXPECT_EQ(0x0000, rawPair.second);
00580
00581 robonetDataElement.setValue<float>(-14.54);
00582 rawPair = robonetDataElement.pull();
00583 EXPECT_EQ(0xFA52, rawPair.first);
00584 EXPECT_EQ(0x0000, rawPair.second);
00585
00586 robonetDataElement.setValue<float>(314.56);
00587 rawPair = robonetDataElement.pull();
00588 EXPECT_EQ(0x7AE0, rawPair.first);
00589 EXPECT_EQ(0x0000, rawPair.second);
00590 }
00591
00592 TEST(RobonetDataElement, PullUnsignedFixedPointCenti)
00593 {
00594 RobonetDataElement robonetDataElement("float", DataElement::Write, "Power", "BMS", RobonetDataElement::OffsetPair("Current24VUpperLimit", ""), "Monitor", RobonetDataElement::UnsignedFixedPointCenti);
00595 RobonetDataElement::RawPair rawPair;
00596
00597 EXPECT_EQ(0, robonetDataElement.getValue<float>());
00598 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00599 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00600
00601 rawPair = robonetDataElement.pull();
00602 EXPECT_EQ(0x0000, rawPair.first);
00603 EXPECT_EQ(0x0000, rawPair.second);
00604
00605 robonetDataElement.setValue<float>(14.54);
00606 rawPair = robonetDataElement.pull();
00607 EXPECT_EQ(0x5AE, rawPair.first);
00608 EXPECT_EQ(0x0000, rawPair.second);
00609
00610 robonetDataElement.setValue<float>(314.56);
00611 rawPair = robonetDataElement.pull();
00612 EXPECT_EQ(0x7AE0, rawPair.first);
00613 EXPECT_EQ(0x0000, rawPair.second);
00614
00615 robonetDataElement.setValue<float>(637.72);
00616 rawPair = robonetDataElement.pull();
00617 EXPECT_EQ(0xF91B, rawPair.first);
00618 EXPECT_EQ(0x0000, rawPair.second);
00619 }
00620
00621 TEST(RobonetDataElement, PullPowConTemperature)
00622 {
00623 RobonetDataElement robonetDataElement("float", DataElement::Write, "Power", "PowCon", RobonetDataElement::OffsetPair("PC_24V_TEMP_1", ""), "Monitor", RobonetDataElement::PowConTemperature);
00624 RobonetDataElement::RawPair rawPair;
00625
00626 EXPECT_EQ(0, robonetDataElement.getValue<float>());
00627 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00628 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00629
00630 rawPair = robonetDataElement.pull();
00631 EXPECT_EQ(0x199, rawPair.first);
00632 EXPECT_EQ(0x0000, rawPair.second);
00633
00634 robonetDataElement.setValue<float>(1.454);
00635 rawPair = robonetDataElement.pull();
00636 EXPECT_EQ(0x1A5, rawPair.first);
00637 EXPECT_EQ(0x0000, rawPair.second);
00638
00639 robonetDataElement.setValue<float>(448.5);
00640 rawPair = robonetDataElement.pull();
00641 EXPECT_EQ(0xFF2, rawPair.first);
00642 EXPECT_EQ(0x0000, rawPair.second);
00643
00644 robonetDataElement.setValue<float>(333.555);
00645 rawPair = robonetDataElement.pull();
00646 EXPECT_EQ(0xC45, rawPair.first);
00647 EXPECT_EQ(0x0000, rawPair.second);
00648 }
00649
00650 TEST(RobonetDataElement, PullPowConCurrentMany)
00651 {
00652 RobonetDataElement robonetDataElement("float", DataElement::Write, "Power", "PowCon", RobonetDataElement::OffsetPair("PC_24V_TEMP_1", ""), "Monitor", RobonetDataElement::PowConCurrentMany);
00653 RobonetDataElement::RawPair rawPair;
00654
00655 EXPECT_EQ(0, robonetDataElement.getValue<float>());
00656 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00657 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00658
00659 rawPair = robonetDataElement.pull();
00660 EXPECT_EQ(0x199, rawPair.first);
00661 EXPECT_EQ(0x0000, rawPair.second);
00662
00663 robonetDataElement.setValue<float>(1.454);
00664 rawPair = robonetDataElement.pull();
00665 EXPECT_EQ(0x275, rawPair.first);
00666 EXPECT_EQ(0x0000, rawPair.second);
00667
00668 robonetDataElement.setValue<float>(24.001);
00669 rawPair = robonetDataElement.pull();
00670 EXPECT_EQ(0xFCE, rawPair.first);
00671 EXPECT_EQ(0x0000, rawPair.second);
00672
00673 robonetDataElement.setValue<float>(14.2);
00674 rawPair = robonetDataElement.pull();
00675 EXPECT_EQ(0xA01, rawPair.first);
00676 EXPECT_EQ(0x0000, rawPair.second);
00677 }
00678
00679 TEST(RobonetDataElement, PullPowConVoltageMany)
00680 {
00681 RobonetDataElement robonetDataElement("float", DataElement::Write, "Power", "PowCon", RobonetDataElement::OffsetPair("PC_24V_TEMP_1", ""), "Monitor", RobonetDataElement::PowConVoltageMany);
00682 RobonetDataElement::RawPair rawPair;
00683
00684 EXPECT_EQ(0, robonetDataElement.getValue<float>());
00685 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00686 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00687
00688 rawPair = robonetDataElement.pull();
00689 EXPECT_EQ(0x0000, rawPair.first);
00690 EXPECT_EQ(0x0000, rawPair.second);
00691
00692 robonetDataElement.setValue<float>(1.454);
00693 rawPair = robonetDataElement.pull();
00694 EXPECT_EQ(0x4A6, rawPair.first);
00695 EXPECT_EQ(0x0000, rawPair.second);
00696
00697 robonetDataElement.setValue<float>(4.998);
00698 rawPair = robonetDataElement.pull();
00699 EXPECT_EQ(0xFFD, rawPair.first);
00700 EXPECT_EQ(0x0000, rawPair.second);
00701
00702 robonetDataElement.setValue<float>(1.36);
00703 rawPair = robonetDataElement.pull();
00704 EXPECT_EQ(0x459, rawPair.first);
00705 EXPECT_EQ(0x0000, rawPair.second);
00706 }
00707
00708 TEST(RobonetDataElement, PushToReadElement)
00709 {
00710 RobonetDataElement robonetDataElement("uint32_t", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00711 RobonetDataElement::RawPair rawPair;
00712
00713 robonetDataElement.push(RobonetDataElement::RawPair(1, 1));
00714 EXPECT_EQ(1, robonetDataElement.getRawPair().first);
00715 EXPECT_EQ(1, robonetDataElement.getRawPair().second);
00716 EXPECT_EQ(65537, robonetDataElement.getValue<uint32_t>());
00717 }
00718
00719 TEST(RobonetDataElement, PushToWriteElement)
00720 {
00721 RobonetDataElement robonetDataElement("uint32_t", DataElement::Write, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00722 RobonetDataElement::RawPair rawPair;
00723
00724 EXPECT_THROW(robonetDataElement.push(RobonetDataElement::RawPair(1, 1)), PushToWriteElementException);
00725 }
00726
00727 TEST(RobonetDataElement, PushUnsignedIntSixteen)
00728 {
00729 RobonetDataElement robonetDataElement("uint16_t", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00730 RobonetDataElement::RawPair rawPair;
00731
00732 EXPECT_EQ(0, robonetDataElement.getValue<uint16_t>());
00733 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00734 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00735
00736 rawPair = RobonetDataElement::RawPair(1, 0);
00737 robonetDataElement.push(rawPair);
00738 EXPECT_EQ(1, robonetDataElement.getRawPair().first);
00739 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00740 EXPECT_EQ(1, robonetDataElement.getValue<uint16_t>());
00741
00742 rawPair = RobonetDataElement::RawPair(0, 1);
00743 robonetDataElement.push(rawPair);
00744 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00745 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00746 EXPECT_EQ(0, robonetDataElement.getValue<uint16_t>());
00747
00748 rawPair = RobonetDataElement::RawPair((uint16_t)65536, 0);
00749 robonetDataElement.push(rawPair);
00750 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00751 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00752 EXPECT_EQ(0, robonetDataElement.getValue<uint16_t>());
00753 }
00754
00755 TEST(RobonetDataElement, PushUnsignedIntThirtyTwo)
00756 {
00757 RobonetDataElement robonetDataElement("uint32_t", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00758 RobonetDataElement::RawPair rawPair;
00759
00760 EXPECT_EQ(0, robonetDataElement.getValue<uint32_t>());
00761 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00762 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00763
00764 rawPair = RobonetDataElement::RawPair(1, 0);
00765 robonetDataElement.push(rawPair);
00766 EXPECT_EQ(1, robonetDataElement.getRawPair().first);
00767 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00768 EXPECT_EQ(1, robonetDataElement.getValue<uint32_t>());
00769
00770 rawPair = RobonetDataElement::RawPair(0, 1);
00771 robonetDataElement.push(rawPair);
00772 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00773 EXPECT_EQ(1, robonetDataElement.getRawPair().second);
00774 EXPECT_EQ(65536, robonetDataElement.getValue<uint32_t>());
00775
00776 rawPair = RobonetDataElement::RawPair((uint16_t)65536, (uint16_t)65536);
00777 robonetDataElement.push(rawPair);
00778 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00779 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00780 EXPECT_EQ(0, robonetDataElement.getValue<uint32_t>());
00781 }
00782
00783 TEST(RobonetDataElement, PushIntSixteen)
00784 {
00785 RobonetDataElement robonetDataElement("int16_t", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00786 RobonetDataElement::RawPair rawPair;
00787
00788 EXPECT_EQ(0, robonetDataElement.getValue<int16_t>());
00789 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00790 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00791
00792 rawPair = RobonetDataElement::RawPair(1, 0);
00793 robonetDataElement.push(rawPair);
00794 EXPECT_EQ(1, robonetDataElement.getRawPair().first);
00795 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00796 EXPECT_EQ(1, robonetDataElement.getValue<int16_t>());
00797
00798 rawPair = RobonetDataElement::RawPair(0, 1);
00799 robonetDataElement.push(rawPair);
00800 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00801 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00802 EXPECT_EQ(0, robonetDataElement.getValue<int16_t>());
00803
00804 rawPair = RobonetDataElement::RawPair((uint16_t)65536, 0);
00805 robonetDataElement.push(rawPair);
00806 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00807 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00808 EXPECT_EQ(0, robonetDataElement.getValue<int16_t>());
00809
00810 rawPair = RobonetDataElement::RawPair(65535, 0);
00811 robonetDataElement.push(rawPair);
00812 EXPECT_EQ(65535, robonetDataElement.getRawPair().first);
00813 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00814 EXPECT_EQ(-1, robonetDataElement.getValue<int16_t>());
00815 }
00816
00817 TEST(RobonetDataElement, PushIntThirtyTwo)
00818 {
00819 RobonetDataElement robonetDataElement("int32_t", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00820 RobonetDataElement::RawPair rawPair;
00821
00822 EXPECT_EQ(0, robonetDataElement.getValue<int32_t>());
00823 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00824 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00825
00826 rawPair = RobonetDataElement::RawPair(1, 0);
00827 robonetDataElement.push(rawPair);
00828 EXPECT_EQ(1, robonetDataElement.getRawPair().first);
00829 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00830 EXPECT_EQ(1, robonetDataElement.getValue<int32_t>());
00831
00832 rawPair = RobonetDataElement::RawPair(0, 1);
00833 robonetDataElement.push(rawPair);
00834 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00835 EXPECT_EQ(1, robonetDataElement.getRawPair().second);
00836 EXPECT_EQ(65536, robonetDataElement.getValue<int32_t>());
00837
00838 rawPair = RobonetDataElement::RawPair((uint16_t)65536, 0);
00839 robonetDataElement.push(rawPair);
00840 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00841 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00842 EXPECT_EQ(0, robonetDataElement.getValue<int32_t>());
00843
00844 rawPair = RobonetDataElement::RawPair(65535, 0);
00845 robonetDataElement.push(rawPair);
00846 EXPECT_EQ(65535, robonetDataElement.getRawPair().first);
00847 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00848 EXPECT_EQ(65535, robonetDataElement.getValue<int32_t>());
00849
00850 rawPair = RobonetDataElement::RawPair(65535, 65535);
00851 robonetDataElement.push(rawPair);
00852 EXPECT_EQ(65535, robonetDataElement.getRawPair().first);
00853 EXPECT_EQ(65535, robonetDataElement.getRawPair().second);
00854 EXPECT_EQ(-1, robonetDataElement.getValue<int32_t>());
00855 }
00856
00857 TEST(RobonetDataElement, PushFloat)
00858 {
00859 RobonetDataElement robonetDataElement("float", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00860 RobonetDataElement::RawPair rawPair;
00861
00862 EXPECT_EQ(0, robonetDataElement.getValue<float>());
00863 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00864 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00865
00866 rawPair = RobonetDataElement::RawPair(4048, 16457);
00867 robonetDataElement.push(rawPair);
00868 EXPECT_EQ(4048, robonetDataElement.getRawPair().first);
00869 EXPECT_EQ(16457, robonetDataElement.getRawPair().second);
00870 EXPECT_FLOAT_EQ(3.14159, robonetDataElement.getValue<float>());
00871 }
00872
00873 TEST(RobonetDataElement, PushBool)
00874 {
00875 RobonetDataElement robonetDataElement("bool", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
00876 RobonetDataElement::RawPair rawPair;
00877
00878 EXPECT_FALSE(robonetDataElement.getValue<bool>());
00879 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00880 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00881
00882 rawPair = RobonetDataElement::RawPair(1, 1);
00883 robonetDataElement.push(rawPair);
00884 EXPECT_EQ(1, robonetDataElement.getRawPair().first);
00885 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00886 EXPECT_TRUE( robonetDataElement.getValue<bool>());
00887
00888 rawPair = RobonetDataElement::RawPair(2, 0);
00889 robonetDataElement.push(rawPair);
00890 EXPECT_EQ(2, robonetDataElement.getRawPair().first);
00891 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00892 EXPECT_TRUE( robonetDataElement.getValue<bool>());
00893
00894 rawPair = RobonetDataElement::RawPair(256, 0);
00895 robonetDataElement.push(rawPair);
00896 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00897 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00898 EXPECT_FALSE(robonetDataElement.getValue<bool>());
00899 }
00900
00901 TEST(RobonetDataElement, PushMotCom)
00902 {
00903 RobonetDataElement robonetDataElement("int16_t", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor", RobonetDataElement::MotCom);
00904 RobonetDataElement::RawPair rawPair;
00905
00906 EXPECT_EQ(0, robonetDataElement.getValue<int16_t>());
00907 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00908 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00909
00910 rawPair = RobonetDataElement::RawPair(0x0EFF, 0);
00911 robonetDataElement.push(rawPair);
00912 EXPECT_EQ(0x0EFF, robonetDataElement.getRawPair().first);
00913 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00914 EXPECT_EQ(255, robonetDataElement.getValue<int16_t>());
00915
00916 rawPair = RobonetDataElement::RawPair(0x0FFF, 0);
00917 robonetDataElement.push(rawPair);
00918 EXPECT_EQ(0x0FFF, robonetDataElement.getRawPair().first);
00919 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00920 EXPECT_EQ(-255, robonetDataElement.getValue<int16_t>());
00921
00922 rawPair = RobonetDataElement::RawPair(0x0E40, 0);
00923 robonetDataElement.push(rawPair);
00924 EXPECT_EQ(0x0E40, robonetDataElement.getRawPair().first);
00925 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00926 EXPECT_EQ(64, robonetDataElement.getValue<int16_t>());
00927
00928 rawPair = RobonetDataElement::RawPair(0x0F30, 0);
00929 robonetDataElement.push(rawPair);
00930 EXPECT_EQ(0x0F30, robonetDataElement.getRawPair().first);
00931 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00932 EXPECT_EQ(-48, robonetDataElement.getValue<int16_t>());
00933 }
00934
00935 TEST(RobonetDataElement, PushTemperature)
00936 {
00937 RobonetDataElement robonetDataElement("float", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor", RobonetDataElement::Temperature);
00938 RobonetDataElement::RawPair rawPair;
00939
00940 EXPECT_EQ(0, robonetDataElement.getValue<float>());
00941 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00942 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00943
00944 rawPair = RobonetDataElement::RawPair(0xF86A, 0);
00945 robonetDataElement.push(rawPair);
00946 EXPECT_EQ(0xF86A, robonetDataElement.getRawPair().first);
00947 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00948 EXPECT_FLOAT_EQ(31797, robonetDataElement.getValue<float>());
00949
00950 rawPair = RobonetDataElement::RawPair(0xF86B, 0);
00951 robonetDataElement.push(rawPair);
00952 EXPECT_EQ(0xF86B, robonetDataElement.getRawPair().first);
00953 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00954 EXPECT_FLOAT_EQ(31797.5, robonetDataElement.getValue<float>());
00955 }
00956
00957 TEST(RobonetDataElement, PushBrakePwm)
00958 {
00959 RobonetDataElement robonetDataElement("uint16_t", DataElement::Read, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor", RobonetDataElement::BrakePwm);
00960 RobonetDataElement::RawPair rawPair;
00961
00962 EXPECT_EQ(0, robonetDataElement.getValue<uint16_t>());
00963 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00964 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00965
00966 rawPair = RobonetDataElement::RawPair(0xC000, 0);
00967 robonetDataElement.push(rawPair);
00968 EXPECT_EQ(0xC000, robonetDataElement.getRawPair().first);
00969 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00970 EXPECT_EQ(0, robonetDataElement.getValue<uint16_t>());
00971
00972 rawPair = RobonetDataElement::RawPair(0xC123, 0);
00973 robonetDataElement.push(rawPair);
00974 EXPECT_EQ(0xC123, robonetDataElement.getRawPair().first);
00975 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00976 EXPECT_EQ(0x123, robonetDataElement.getValue<uint16_t>());
00977 }
00978
00979 TEST(RobonetDataElement, PushFixedPointMilli)
00980 {
00981 RobonetDataElement robonetDataElement("float", DataElement::Read, "Power", "BMS", RobonetDataElement::OffsetPair("Current24VUpperLimit", ""), "Monitor", RobonetDataElement::FixedPointMilli);
00982 RobonetDataElement::RawPair rawPair;
00983
00984 EXPECT_EQ(0, robonetDataElement.getValue<float>());
00985 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
00986 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00987
00988 rawPair = RobonetDataElement::RawPair(0x8520, 0);
00989 robonetDataElement.push(rawPair);
00990 EXPECT_EQ(0x8520, robonetDataElement.getRawPair().first);
00991 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00992 EXPECT_FLOAT_EQ(-31.456, robonetDataElement.getValue<float>());
00993
00994 rawPair = RobonetDataElement::RawPair(0xFA52, 0);
00995 robonetDataElement.push(rawPair);
00996 EXPECT_EQ(0xFA52, robonetDataElement.getRawPair().first);
00997 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
00998 EXPECT_FLOAT_EQ(-1.454, robonetDataElement.getValue<float>());
00999
01000 rawPair = RobonetDataElement::RawPair(0x7AE0, 0);
01001 robonetDataElement.push(rawPair);
01002 EXPECT_EQ(0x7AE0, robonetDataElement.getRawPair().first);
01003 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01004 EXPECT_FLOAT_EQ(31.456, robonetDataElement.getValue<float>());
01005 }
01006
01007 TEST(RobonetDataElement, PushUnsignedFixedPointMilli)
01008 {
01009 RobonetDataElement robonetDataElement("float", DataElement::Read, "Power", "BMS", RobonetDataElement::OffsetPair("Current24VUpperLimit", ""), "Monitor", RobonetDataElement::UnsignedFixedPointMilli);
01010 RobonetDataElement::RawPair rawPair;
01011
01012 EXPECT_EQ(0, robonetDataElement.getValue<float>());
01013 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
01014 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01015
01016 rawPair = RobonetDataElement::RawPair(0x5AE, 0);
01017 robonetDataElement.push(rawPair);
01018 EXPECT_EQ(0x5AE, robonetDataElement.getRawPair().first);
01019 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01020 EXPECT_FLOAT_EQ(1.454, robonetDataElement.getValue<float>());
01021
01022 rawPair = RobonetDataElement::RawPair(0x7AE0, 0);
01023 robonetDataElement.push(rawPair);
01024 EXPECT_EQ(0x7AE0, robonetDataElement.getRawPair().first);
01025 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01026 EXPECT_FLOAT_EQ(31.456, robonetDataElement.getValue<float>());
01027
01028 rawPair = RobonetDataElement::RawPair(0xF91C, 0);
01029 robonetDataElement.push(rawPair);
01030 EXPECT_EQ(0xF91C, robonetDataElement.getRawPair().first);
01031 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01032 EXPECT_FLOAT_EQ(63.772, robonetDataElement.getValue<float>());
01033 }
01034
01035 TEST(RobonetDataElement, PushFixedPointCenti)
01036 {
01037 RobonetDataElement robonetDataElement("float", DataElement::Read, "Power", "BMS", RobonetDataElement::OffsetPair("Current24VUpperLimit", ""), "Monitor", RobonetDataElement::FixedPointCenti);
01038 RobonetDataElement::RawPair rawPair;
01039
01040 EXPECT_EQ(0, robonetDataElement.getValue<float>());
01041 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
01042 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01043
01044 rawPair = RobonetDataElement::RawPair(0x8520, 0);
01045 robonetDataElement.push(rawPair);
01046 EXPECT_EQ(0x8520, robonetDataElement.getRawPair().first);
01047 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01048 EXPECT_FLOAT_EQ(-314.56, robonetDataElement.getValue<float>());
01049
01050 rawPair = RobonetDataElement::RawPair(0xFA52, 0);
01051 robonetDataElement.push(rawPair);
01052 EXPECT_EQ(0xFA52, robonetDataElement.getRawPair().first);
01053 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01054 EXPECT_FLOAT_EQ(-14.54, robonetDataElement.getValue<float>());
01055
01056 rawPair = RobonetDataElement::RawPair(0x7AE0, 0);
01057 robonetDataElement.push(rawPair);
01058 EXPECT_EQ(0x7AE0, robonetDataElement.getRawPair().first);
01059 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01060 EXPECT_FLOAT_EQ(314.56, robonetDataElement.getValue<float>());
01061 }
01062
01063 TEST(RobonetDataElement, PushUnsignedFixedPointCenti)
01064 {
01065 RobonetDataElement robonetDataElement("float", DataElement::Read, "Power", "BMS", RobonetDataElement::OffsetPair("Current24VUpperLimit", ""), "Monitor", RobonetDataElement::UnsignedFixedPointCenti);
01066 RobonetDataElement::RawPair rawPair;
01067
01068 EXPECT_EQ(0, robonetDataElement.getValue<float>());
01069 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
01070 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01071
01072 rawPair = RobonetDataElement::RawPair(0x5AE, 0);
01073 robonetDataElement.push(rawPair);
01074 EXPECT_EQ(0x5AE, robonetDataElement.getRawPair().first);
01075 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01076 EXPECT_FLOAT_EQ(14.54, robonetDataElement.getValue<float>());
01077
01078 rawPair = RobonetDataElement::RawPair(0x7AE0, 0);
01079 robonetDataElement.push(rawPair);
01080 EXPECT_EQ(0x7AE0, robonetDataElement.getRawPair().first);
01081 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01082 EXPECT_FLOAT_EQ(314.56, robonetDataElement.getValue<float>());
01083
01084 rawPair = RobonetDataElement::RawPair(0xF91C, 0);
01085 robonetDataElement.push(rawPair);
01086 EXPECT_EQ(0xF91C, robonetDataElement.getRawPair().first);
01087 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01088 EXPECT_FLOAT_EQ(637.72, robonetDataElement.getValue<float>());
01089 }
01090
01091 TEST(RobonetDataElement, PushPowConTemperature)
01092 {
01093 RobonetDataElement robonetDataElement("float", DataElement::Read, "Power", "PowCon", RobonetDataElement::OffsetPair("Current24VUpperLimit", ""), "Monitor", RobonetDataElement::PowConTemperature);
01094 RobonetDataElement::RawPair rawPair;
01095
01096 EXPECT_EQ(0, robonetDataElement.getValue<float>());
01097 robonetDataElement.push(rawPair);
01098 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
01099 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01100 EXPECT_FLOAT_EQ(-50, robonetDataElement.getValue<float>());
01101
01102 rawPair = RobonetDataElement::RawPair(0x1A5, 0);
01103 robonetDataElement.push(rawPair);
01104 EXPECT_EQ(0x1A5, robonetDataElement.getRawPair().first);
01105 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01106 EXPECT_NEAR(1.40415, robonetDataElement.getValue<float>(), 0.00001);
01107
01108 rawPair = RobonetDataElement::RawPair(0xFF2, 0);
01109 robonetDataElement.push(rawPair);
01110 EXPECT_EQ(0xFF2, robonetDataElement.getRawPair().first);
01111 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01112 EXPECT_NEAR(448.5, robonetDataElement.getValue<float>(), 0.1);
01113
01114 rawPair = RobonetDataElement::RawPair(0xC45, 0);
01115 robonetDataElement.push(rawPair);
01116 EXPECT_EQ(0xC45, robonetDataElement.getRawPair().first);
01117 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01118 EXPECT_NEAR(333.555, robonetDataElement.getValue<float>(), 0.04);
01119 }
01120
01121 TEST(RobonetDataElement, PushPowConCurrentMany)
01122 {
01123 RobonetDataElement robonetDataElement("float", DataElement::Read, "Power", "PowCon", RobonetDataElement::OffsetPair("Current24VUpperLimit", ""), "Monitor", RobonetDataElement::PowConCurrentMany);
01124 RobonetDataElement::RawPair rawPair;
01125
01126 EXPECT_EQ(0, robonetDataElement.getValue<float>());
01127 robonetDataElement.push(rawPair);
01128 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
01129 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01130 EXPECT_FLOAT_EQ(-2.702702, robonetDataElement.getValue<float>());
01131
01132 rawPair = RobonetDataElement::RawPair(0x275, 0);
01133 robonetDataElement.push(rawPair);
01134 EXPECT_EQ(0x275, robonetDataElement.getRawPair().first);
01135 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01136 EXPECT_NEAR(1.44870, robonetDataElement.getValue<float>(), 0.00001);
01137
01138 rawPair = RobonetDataElement::RawPair(0xFCE, 0);
01139 robonetDataElement.push(rawPair);
01140 EXPECT_EQ(0xFCE, robonetDataElement.getRawPair().first);
01141 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01142 EXPECT_NEAR(24.001, robonetDataElement.getValue<float>(), 0.0001);
01143
01144 rawPair = RobonetDataElement::RawPair(0xA01, 0);
01145 robonetDataElement.push(rawPair);
01146 EXPECT_EQ(0xA01, robonetDataElement.getRawPair().first);
01147 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01148 EXPECT_NEAR(14.2, robonetDataElement.getValue<float>(), 0.0001);
01149 }
01150
01151 TEST(RobonetDataElement, PushPowConVoltageMany)
01152 {
01153 RobonetDataElement robonetDataElement("float", DataElement::Read, "Power", "PowCon", RobonetDataElement::OffsetPair("Current24VUpperLimit", ""), "Monitor", RobonetDataElement::PowConVoltageMany);
01154 RobonetDataElement::RawPair rawPair;
01155
01156 EXPECT_EQ(0, robonetDataElement.getValue<float>());
01157 robonetDataElement.push(rawPair);
01158 EXPECT_EQ(0, robonetDataElement.getRawPair().first);
01159 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01160 EXPECT_FLOAT_EQ(0, robonetDataElement.getValue<float>());
01161
01162 rawPair = RobonetDataElement::RawPair(0x4A6, 0);
01163 robonetDataElement.push(rawPair);
01164 EXPECT_EQ(0x4A6, robonetDataElement.getRawPair().first);
01165 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01166 EXPECT_NEAR(1.45299, robonetDataElement.getValue<float>(), 0.00001);
01167
01168 rawPair = RobonetDataElement::RawPair(0xFFD, 0);
01169 robonetDataElement.push(rawPair);
01170 EXPECT_EQ(0xFFD, robonetDataElement.getRawPair().first);
01171 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01172 EXPECT_NEAR(4.998, robonetDataElement.getValue<float>(), 0.001);
01173
01174 rawPair = RobonetDataElement::RawPair(0x459, 0);
01175 robonetDataElement.push(rawPair);
01176 EXPECT_EQ(0x459, robonetDataElement.getRawPair().first);
01177 EXPECT_EQ(0, robonetDataElement.getRawPair().second);
01178 EXPECT_NEAR(1.36, robonetDataElement.getValue<float>(), 0.01);
01179 }
01180
01181 TEST(RobonetDataElement, ToString)
01182 {
01183 RobonetDataElement robonetDataElement("bool", DataElement::Write, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", ""), "Monitor");
01184 string s;
01185
01186 s.append("RobonetDataElement:\n");
01187 s.append(" Value: 0\n");
01188 s.append(" Type: b\n");
01189 s.append(" Size: 8\n");
01190 s.append(" Read/Write: Write\n");
01191 s.append(" Raw Value 1: 0x0000 (0)\n");
01192 s.append(" Raw Value 2: 0x0000 (0)\n");
01193 s.append(" Channel: RightArm\n");
01194 s.append(" Node: J1\n");
01195 s.append(" Offset 1: OnOff\n");
01196 s.append(" Offset 2: \n");
01197 s.append(" Group: Monitor");
01198 EXPECT_EQ(s, robonetDataElement.toString());
01199
01200 RobonetDataElement robonetDataElement2("float", DataElement::Write, "RightArm", "J1", RobonetDataElement::OffsetPair("OnOff", "OnOff2"), "Monitor");
01201 robonetDataElement2.setValue<float>(3.14159);
01202 robonetDataElement2.pull();
01203 string t;
01204
01205 t.append("RobonetDataElement:\n");
01206 t.append(" Value: 3.14159\n");
01207 t.append(" Type: f\n");
01208 t.append(" Size: 32\n");
01209 t.append(" Read/Write: Write\n");
01210 t.append(" Raw Value 1: 0x0FD0 (4048)\n");
01211 t.append(" Raw Value 2: 0x4049 (16457)\n");
01212 t.append(" Channel: RightArm\n");
01213 t.append(" Node: J1\n");
01214 t.append(" Offset 1: OnOff\n");
01215 t.append(" Offset 2: OnOff2\n");
01216 t.append(" Group: Monitor");
01217 EXPECT_EQ(t, robonetDataElement2.toString());
01218 }
01219
01220 int main(int argc, char** argv)
01221 {
01222 testing::InitGoogleTest(&argc, argv);
01223 return RUN_ALL_TESTS();
01224 }