void TestMaster::testIntegrityPoll() { Master* master_p; DummyDb db; DummyTimer timer; int debugLevel = -1; DummyTx tx(&debugLevel, 'M', 'S'); int integrityPollInterval = 10; Master::MasterConfig masterConfig; Datalink::DatalinkConfig datalinkConfig; Station::StationConfig stationConfig; masterConfig.addr = 1; masterConfig.consecutiveTimeoutsForCommsFail = 3; masterConfig.integrityPollInterval_p = &integrityPollInterval; masterConfig.debugLevel_p = &debugLevel; stationConfig.addr = 2; stationConfig.debugLevel_p = &debugLevel; datalinkConfig.addr = masterConfig.addr; datalinkConfig.isMaster = 1; datalinkConfig.keepAliveInterval_ms = 10000; datalinkConfig.tx_p = &tx; datalinkConfig.debugLevel_p = &debugLevel; master_p = new Master (masterConfig, datalinkConfig, &stationConfig, 1, &db, &timer); // full resp to an integrity poll unsigned char r[] ={ 0x05, 0x64, 0x10, 0x44, 0x01, 0x00, 0x02, 0x00, 0x50, 0x8e, 0xc0, 0xc5, 0x81, 0x80, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0xff, 0xde, 0xa7 }; // first test the repsonse without sending the poll Bytes bytes1(r, r+sizeof(r)); master_p->rxData( &bytes1, 0); QVERIFY (master_p->getStat(2, TransportStats::RX_SEGMENT) == 1); QVERIFY (master_p->getStat(2, TransportStats::RX_FRAGMENT) == 1); QVERIFY (master_p->getStat(2, Station ::RX_UNEXP_RESPONSE) == 1); // send the poll master_p->poll( Master::INTEGRITY); QVERIFY (master_p->getStat(2, TransportStats::TX_SEGMENT) == 1); QVERIFY (master_p->getStat(2, TransportStats::TX_FRAGMENT) == 1); QVERIFY (master_p->getStat(2, Station ::TX_INTEGRITY_POLL) == 1); QVERIFY (master_p->getStat(2, Station ::TX_READ_REQUEST) == 1); // send a response to the poll Bytes bytes2(r, r+sizeof(r)); master_p->rxData( &bytes2, 0); QVERIFY (master_p->getStat(2, TransportStats::RX_SEGMENT) == 2); QVERIFY (master_p->getStat(2, TransportStats::RX_FRAGMENT) == 2); QVERIFY (master_p->getStat(2, Station ::RX_RESPONSE) == 1); }
TEST (uint256_union, big_endian_union_constructor) { boost::multiprecision::uint256_t value1 (1); rai::uint256_union bytes1 (value1); ASSERT_EQ (1, bytes1.bytes [31]); boost::multiprecision::uint512_t value2 (1); rai::uint512_union bytes2 (value2); ASSERT_EQ (1, bytes2.bytes [63]); }
TEST (uint256_union, big_endian_union_function) { rai::uint256_union bytes1 ("FEDCBA9876543210FEDCBA9876543210FEDCBA9876543210FEDCBA9876543210"); ASSERT_EQ (0xfe, bytes1.bytes [0x00]); ASSERT_EQ (0xdc, bytes1.bytes [0x01]); ASSERT_EQ (0xba, bytes1.bytes [0x02]); ASSERT_EQ (0x98, bytes1.bytes [0x03]); ASSERT_EQ (0x76, bytes1.bytes [0x04]); ASSERT_EQ (0x54, bytes1.bytes [0x05]); ASSERT_EQ (0x32, bytes1.bytes [0x06]); ASSERT_EQ (0x10, bytes1.bytes [0x07]); ASSERT_EQ (0xfe, bytes1.bytes [0x08]); ASSERT_EQ (0xdc, bytes1.bytes [0x09]); ASSERT_EQ (0xba, bytes1.bytes [0x0a]); ASSERT_EQ (0x98, bytes1.bytes [0x0b]); ASSERT_EQ (0x76, bytes1.bytes [0x0c]); ASSERT_EQ (0x54, bytes1.bytes [0x0d]); ASSERT_EQ (0x32, bytes1.bytes [0x0e]); ASSERT_EQ (0x10, bytes1.bytes [0x0f]); ASSERT_EQ (0xfe, bytes1.bytes [0x10]); ASSERT_EQ (0xdc, bytes1.bytes [0x11]); ASSERT_EQ (0xba, bytes1.bytes [0x12]); ASSERT_EQ (0x98, bytes1.bytes [0x13]); ASSERT_EQ (0x76, bytes1.bytes [0x14]); ASSERT_EQ (0x54, bytes1.bytes [0x15]); ASSERT_EQ (0x32, bytes1.bytes [0x16]); ASSERT_EQ (0x10, bytes1.bytes [0x17]); ASSERT_EQ (0xfe, bytes1.bytes [0x18]); ASSERT_EQ (0xdc, bytes1.bytes [0x19]); ASSERT_EQ (0xba, bytes1.bytes [0x1a]); ASSERT_EQ (0x98, bytes1.bytes [0x1b]); ASSERT_EQ (0x76, bytes1.bytes [0x1c]); ASSERT_EQ (0x54, bytes1.bytes [0x1d]); ASSERT_EQ (0x32, bytes1.bytes [0x1e]); ASSERT_EQ (0x10, bytes1.bytes [0x1f]); ASSERT_EQ ("FEDCBA9876543210FEDCBA9876543210FEDCBA9876543210FEDCBA9876543210", bytes1.to_string ()); ASSERT_EQ (rai::uint256_t ("0xFEDCBA9876543210FEDCBA9876543210FEDCBA9876543210FEDCBA9876543210"), bytes1.number ()); rai::uint512_union bytes2; bytes2.clear (); bytes2.bytes [63] = 1; ASSERT_EQ (rai::uint512_t (1), bytes2.number ()); }