#include "handler_unittest.hpp" #include #include #include #include #include using ::testing::IsEmpty; namespace blobs { class SmbiosBlobHandlerReadWriteTest : public SmbiosBlobHandlerTest {}; TEST_F(SmbiosBlobHandlerReadWriteTest, InvalidSessionWriteIsRejected) { // Verify the handler checks for a valid session. std::vector data = {0x1, 0x2}; EXPECT_FALSE(handler.write(session, 0, data)); } TEST_F(SmbiosBlobHandlerReadWriteTest, NoWriteFlagRejected) { // Verify the handler checks the write flag; EXPECT_TRUE(handler.open(session, 0, expectedBlobId)); std::vector data = {0x1, 0x2}; EXPECT_FALSE(handler.write(session, 0, data)); } TEST_F(SmbiosBlobHandlerReadWriteTest, WritingTooMuchByOneByteFails) { int bytes = handlerMaxBufferSize + 1; std::vector data(bytes, 0x11); EXPECT_TRUE(handler.open(session, blobs::OpenFlags::write, expectedBlobId)); EXPECT_FALSE(handler.write(session, 0, data)); } TEST_F(SmbiosBlobHandlerReadWriteTest, WritingTooMuchByOffsetOfOne) { std::vector data(handlerMaxBufferSize, 0x11); EXPECT_TRUE(handler.open(session, blobs::OpenFlags::write, expectedBlobId)); EXPECT_FALSE(handler.write(session, 1, data)); } TEST_F(SmbiosBlobHandlerReadWriteTest, WritingOneByteBeyondEndFromOffsetFails) { std::vector data = {0x01, 0x02}; EXPECT_TRUE(handler.open(session, blobs::OpenFlags::write, expectedBlobId)); EXPECT_FALSE(handler.write(session, handlerMaxBufferSize - 1, data)); } TEST_F(SmbiosBlobHandlerReadWriteTest, WritingOneByteAtOffsetBeyondEndFails) { std::vector data = {0x01}; EXPECT_TRUE(handler.open(session, blobs::OpenFlags::write, expectedBlobId)); EXPECT_FALSE(handler.write(session, handlerMaxBufferSize, data)); } TEST_F(SmbiosBlobHandlerReadWriteTest, WritingFullBufferAtOffsetZeroSucceeds) { std::vector data(handlerMaxBufferSize, 0x01); EXPECT_TRUE(handler.open(session, blobs::OpenFlags::write, expectedBlobId)); EXPECT_TRUE(handler.write(session, 0, data)); } TEST_F(SmbiosBlobHandlerReadWriteTest, WritingOneByteToTheLastOffsetSucceeds) { std::vector data = {0x01}; EXPECT_TRUE(handler.open(session, blobs::OpenFlags::write, expectedBlobId)); EXPECT_TRUE(handler.write(session, handlerMaxBufferSize - 1, data)); } TEST_F(SmbiosBlobHandlerReadWriteTest, ReadAlwaysReturnsEmpty) { const uint32_t testOffset = 0; const std::vector testData = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; EXPECT_TRUE(handler.open(session, blobs::OpenFlags::write, expectedBlobId)); EXPECT_TRUE(handler.write(session, testOffset, testData)); EXPECT_THAT(handler.read(session, testOffset, testData.size()), IsEmpty()); for (size_t i = 0; i < testData.size(); ++i) { EXPECT_THAT(handler.read(session, i, 1), IsEmpty()); } } } // namespace blobs