5#define BOOST_TEST_DYN_LINK
6#define BOOST_TEST_MODULE LMapBitRangePluginTest
7#include <boost/test/unit_test.hpp>
8using namespace boost::unit_test_framework;
14BOOST_AUTO_TEST_SUITE(LMapBitRangeTestSuite)
20 device.
open(
"(logicalNameMap?map=bitRangeReadPlugin.xlmap)");
28 accTarget.setAndWrite(0x1f0f);
34 BOOST_TEST(accRangedLo == 0x0f);
35 BOOST_TEST(accRangedHi == 0x1f);
36 BOOST_TEST(accRangedMid == 0xf0);
42 accTarget.setAndWrite(0);
44 BOOST_TEST(accRangedLo == 0);
45 BOOST_TEST(accRangedHi == 0);
47 accTarget.setAndWrite(0x5a1f);
49 BOOST_TEST(accRangedLo == 0x1f);
50 BOOST_TEST(accRangedHi == 0x5a);
55 device.
open(
"(logicalNameMap?map=bitRangeReadPlugin.xlmap)");
63 accTarget.setAndWrite(0x1f0f);
68 BOOST_TEST(accRangedMid == 0x60);
70 BOOST_TEST(accTarget == 0x760f);
75 group.addAccessor(accRangedLo);
76 group.addAccessor(accRangedHi);
84 BOOST_TEST(accTarget == 0x7580);
87 group.addAccessor(accRangedMid);
95 device.
open(
"(logicalNameMap?map=bitRangeReadPlugin.xlmap)");
102 accTarget.setAndWrite(0x1ff0);
104 BOOST_TEST(accMiddle == 127);
109 accTooLarge.setAndWrite(0xff1);
111 BOOST_CHECK(accTarget == std::numeric_limits<int16_t>::max());
115 accTarget.setAndWrite(0);
119 accMiddle2.setAndWrite(0x100);
121 BOOST_TEST(accTarget == 0x0ff0);
134 device.
open(
"(logicalNameMap?map=bitRangeReadPlugin.xlmap)");
137 accTarget.setAndWrite(0x1fff);
141 accClamped.setAndWrite(0x01);
144 BOOST_TEST(accTarget == 0x1f01);
148 accClamped.setAndWrite(55);
152 BOOST_TEST(accTarget == 0x1f05);
160 device.
open(
"(logicalNameMap?map=bitRangeReadPlugin.xlmap)");
163 accTarget.setAndWrite(0x5555);
179 BOOST_TEST(!accBit1);
181 BOOST_TEST(!accBit3);
185 accRangedHi.setAndWrite(0x11);
188 BOOST_TEST(accTarget == 0x1155);
196 BOOST_TEST(!accBit1);
198 BOOST_TEST(!accBit3);
201 accBit1.setAndWrite(
true);
202 accBit3.setAndWrite(
true);
206 BOOST_TEST(accTarget == 0x115F);
208 BOOST_TEST(accRangedHi == 0x11);
221 accTarget.setAndWrite(0x1234);
229 BOOST_TEST(accTarget == 0x12AB);
233 accTarget.setAndWrite(0x3FFF);
242 BOOST_TEST(accTarget == 0x1201);
247 accTarget.setAndWrite(0x7F23);
252 BOOST_TEST(accTarget == 0x3B01);
259 accTarget.setAndWrite(0x7F00);
265 BOOST_TEST(accTarget == 0x7F55);
272 device.
open(
"(logicalNameMap?map=bitRangeReadPlugin.xlmap)");
275 accTarget.setAndWrite(0x5555);
282 BOOST_TEST(accLo == 85);
283 BOOST_TEST(accLoSigned == 85);
285 accTarget.setAndWrite(0x5580);
290 BOOST_TEST(
int(accLo) == 128);
291 BOOST_TEST(
int(accLoSigned) == -128);
293 accTarget.setAndWrite(0x5555);
296 BOOST_TEST(accFixed == 5.3125);
301BOOST_AUTO_TEST_SUITE_END()
Wrapper Class to avoid vector<bool> problems.
Class allows to read/write registers from device.
void close()
Close the device.
ScalarRegisterAccessor< UserType > getScalarRegisterAccessor(const RegisterPath ®isterPathName, size_t wordOffsetInRegister=0, const AccessModeFlags &flags=AccessModeFlags({})) const
Get a ScalarRegisterObject object for the given register.
void open(std::string const &aliasName)
Open a device by the given alias name from the DMAP file.
Group multiple data accessors to efficiently trigger data transfers on the whole group.
void addAccessor(TransferElementAbstractor &accessor)
Add a register accessor to the group.
void read()
Trigger read transfer for all accessors in the group.
Exception thrown when a logic error has occured.
@ faulty
The data is considered valid.
BOOST_AUTO_TEST_CASE(testSimpleRead)