diff --git a/test/Makefile.am b/test/Makefile.am
index 9540688..1fc2d92 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -23,7 +23,8 @@
 	flash_start_unittest \
 	flash_flashdata_unittest \
 	flash_flashfinish_unittest \
-	flash_hashstart_unittest
+	flash_hashstart_unittest \
+	flash_hashdata_unittest
 
 TESTS = $(check_PROGRAMS)
 
@@ -68,3 +69,6 @@
 
 flash_hashstart_unittest_SOURCES = flash_hashstart_unittest.cpp
 flash_hashstart_unittest_LDADD = $(top_builddir)/flash-ipmi.o $(SDBUSPLUS_LIBS)
+
+flash_hashdata_unittest_SOURCES = flash_hashdata_unittest.cpp
+flash_hashdata_unittest_LDADD = $(top_builddir)/flash-ipmi.o $(SDBUSPLUS_LIBS)
diff --git a/test/flash_hashdata_unittest.cpp b/test/flash_hashdata_unittest.cpp
new file mode 100644
index 0000000..f9a3ffa
--- /dev/null
+++ b/test/flash_hashdata_unittest.cpp
@@ -0,0 +1,83 @@
+#include "flash-ipmi.hpp"
+
+#include <cstdio>
+#include <cstring>
+#include <gtest/gtest.h>
+#include <string>
+#include <vector>
+
+#define THIRTYTWO_MIB 33554432
+
+class FlashIpmiHashDataTest : public ::testing::Test
+{
+  protected:
+    FlashIpmiHashDataTest() = default;
+
+    void SetUp() override
+    {
+        name = std::tmpnam(nullptr);
+        name2 = std::tmpnam(nullptr);
+    }
+    void TearDown() override
+    {
+        (void)std::remove(name.c_str());
+        (void)std::remove(name2.c_str());
+    }
+
+    std::string name;
+    std::string name2;
+};
+
+TEST_F(FlashIpmiHashDataTest, CalledOutOfSequenceFails)
+{
+    // Verify that if you try to write to the hash before starting, it'll fail.
+    // Presently, start() will open the hash file.
+
+    std::vector<uint8_t> bytes = {0xaa, 0x55};
+
+    FlashUpdate updater(name, name2);
+    EXPECT_FALSE(updater.hashData(0, bytes));
+}
+
+TEST_F(FlashIpmiHashDataTest, CalledWithDataSucceeds)
+{
+    // Verify the normal use case works.
+    std::vector<uint8_t> bytes = {0xaa, 0x55};
+
+    FlashUpdate updater(name, name2);
+    EXPECT_TRUE(updater.start(THIRTYTWO_MIB));
+    EXPECT_TRUE(updater.startHash(THIRTYTWO_MIB));
+    EXPECT_TRUE(updater.hashData(0, bytes));
+
+    auto file = std::fopen(name2.c_str(), "r");
+    EXPECT_TRUE(file);
+
+    uint8_t buffer[2];
+    auto read = std::fread(buffer, 1, bytes.size(), file);
+    EXPECT_EQ(read, bytes.size());
+    EXPECT_EQ(0, std::memcmp(buffer, bytes.data(), bytes.size()));
+    std::fclose(file);
+}
+
+TEST_F(FlashIpmiHashDataTest, CalledNonZeroOffsetSucceeds)
+{
+    // Skipping bytes in POSIX can create a sparse file.  In this case,
+    // let's allow the behavior.  If we'd rather, we can have writeBlock
+    // check that the offset is where we expect.
+
+    std::vector<uint8_t> bytes = {0xaa, 0x55};
+
+    FlashUpdate updater(name, name2);
+    EXPECT_TRUE(updater.start(THIRTYTWO_MIB));
+    EXPECT_TRUE(updater.startHash(THIRTYTWO_MIB));
+    EXPECT_TRUE(updater.hashData(2, bytes));
+
+    auto file = std::fopen(name2.c_str(), "r");
+    EXPECT_TRUE(file);
+
+    uint8_t buffer[4];
+    auto read = std::fread(buffer, 1, sizeof(buffer), file);
+    EXPECT_EQ(read, sizeof(buffer));
+    EXPECT_EQ(0, std::memcmp(&buffer[2], bytes.data(), bytes.size()));
+    std::fclose(file);
+}
