Disk: Predictable behavior for zero length reads

This commit is contained in:
Paul Hollinsky
2022-02-28 01:54:21 -05:00
parent f8a46b7196
commit 4ef8fe8794
4 changed files with 26 additions and 0 deletions
+9
View File
@@ -11,6 +11,15 @@ TEST_F(DiskDriverTest, Read) {
EXPECT_EQ(driver->readCalls, 1u);
}
TEST_F(DiskDriverTest, ReadZero) {
uint8_t b = 0xCDu;
const auto amountRead = readLogicalDisk(0, &b, 0);
EXPECT_TRUE(amountRead.has_value());
EXPECT_EQ(amountRead, 0u);
EXPECT_EQ(b, 0xCDu);
EXPECT_EQ(driver->readCalls, 0u);
}
TEST_F(DiskDriverTest, ReadUnaligned) {
std::array<uint8_t, 120> buf;
buf.fill(0u);
+11
View File
@@ -12,6 +12,17 @@ TEST_F(DiskDriverTest, Write) {
EXPECT_EQ(driver->writeCalls, 1u);
}
TEST_F(DiskDriverTest, WriteZero) {
uint8_t b = 0xCDu;
const auto amountWritten = writeLogicalDisk(0, &b, 0);
EXPECT_TRUE(amountWritten.has_value());
EXPECT_EQ(amountWritten, 0u);
EXPECT_EQ(driver->mockDisk[0], TEST_STRING[0]);
EXPECT_EQ(driver->atomicityChecks, 0u);
EXPECT_EQ(driver->readCalls, 0u);
EXPECT_EQ(driver->writeCalls, 0u);
}
TEST_F(DiskDriverTest, WriteNoAtomicityCheck) {
driver->supportsAtomic = false;
expectedErrors.push({ APIEvent::Type::AtomicOperationCompletedNonatomically, APIEvent::Severity::EventInfo });