/** * Check that writing an Root PDU to an output stream works */ void RootPDUTest::testSimpleRootPDUToOutputStream() { CID cid = CID::Generate(); RootPDU pdu1(TEST_VECTOR, cid, NULL); OLA_ASSERT(cid == pdu1.Cid()); OLA_ASSERT_EQ(16u, pdu1.HeaderSize()); OLA_ASSERT_EQ(4u, pdu1.VectorSize()); OLA_ASSERT_EQ(0u, pdu1.DataSize()); OLA_ASSERT_EQ(22u, pdu1.Size()); IOQueue output; OutputStream stream(&output); pdu1.Write(&stream); OLA_ASSERT_EQ(22u, output.Size()); uint8_t *raw_pdu = new uint8_t[output.Size()]; unsigned int raw_pdu_size = output.Peek(raw_pdu, output.Size()); OLA_ASSERT_EQ(output.Size(), raw_pdu_size); uint8_t EXPECTED[] = { 0x70, 22, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; cid.Pack(EXPECTED + 6); ASSERT_DATA_EQUALS(__LINE__, EXPECTED, sizeof(EXPECTED), raw_pdu, raw_pdu_size); output.Pop(output.Size()); delete[] raw_pdu; }
/* * Test that packing a RootPDU with nested data works */ void RootPDUTest::testNestedRootPDUToOutputStream() { FakePDU pdu1(1); FakePDU pdu2(42); PDUBlock<PDU> block; block.AddPDU(&pdu1); block.AddPDU(&pdu2); CID cid = CID::Generate(); RootPDU pdu(TEST_VECTOR, cid, &block); OLA_ASSERT(cid == pdu.Cid()); OLA_ASSERT_EQ(30u, pdu.Size()); IOQueue output; OutputStream stream(&output); pdu.Write(&stream); OLA_ASSERT_EQ(30u, output.Size()); uint8_t *raw_pdu = new uint8_t[output.Size()]; unsigned int raw_pdu_size = output.Peek(raw_pdu, output.Size()); OLA_ASSERT_EQ(output.Size(), raw_pdu_size); uint8_t EXPECTED[] = { 0x70, 30, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 42 }; cid.Pack(EXPECTED + 6); ASSERT_DATA_EQUALS(__LINE__, EXPECTED, sizeof(EXPECTED), raw_pdu, raw_pdu_size); output.Pop(output.Size()); delete[] raw_pdu; }
void CIDTest::testSetPack() { uint8_t buffer[CID::CID_LENGTH]; CID cid = CID::FromData(TEST_DATA); cid.Pack(buffer); OLA_ASSERT_FALSE(memcmp(TEST_DATA, buffer, CID::CID_LENGTH)); }