/** * Test getting / setting IOVec work. */ void IOQueueTest::testIOVec() { uint8_t data1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; m_buffer->Write(data1, sizeof(data1)); OLA_ASSERT_EQ(9u, m_buffer->Size()); OLA_ASSERT_FALSE(m_buffer->Empty()); int iocnt; const struct IOVec *vector = m_buffer->AsIOVec(&iocnt); OLA_ASSERT_EQ(9u, SumLengthOfIOVec(vector, iocnt)); OLA_ASSERT_EQ(1, iocnt); m_buffer->FreeIOVec(vector); // try a smaller block size MemoryBlockPool pool(4); IOQueue queue(&pool); m_buffer.reset(new IOQueue(&pool)); queue.Write(data1, sizeof(data1)); OLA_ASSERT_EQ(9u, queue.Size()); vector = queue.AsIOVec(&iocnt); OLA_ASSERT_EQ(3, iocnt); OLA_ASSERT_EQ(9u, SumLengthOfIOVec(vector, iocnt)); queue.FreeIOVec(vector); }