Added basic span reader test.

Might as well right better tests when writing sorting v2.  Backfilling
is needed here before we can build up further.

Change-Id: Ibe805cb031eba3eac4bb3d65dfa318c52e6487e2
diff --git a/aos/events/logging/logfile_utils_test.cc b/aos/events/logging/logfile_utils_test.cc
new file mode 100644
index 0000000..fec3186
--- /dev/null
+++ b/aos/events/logging/logfile_utils_test.cc
@@ -0,0 +1,49 @@
+#include "aos/events/logging/logfile_utils.h"
+
+#include "gtest/gtest.h"
+
+#include "aos/events/logging/test_message_generated.h"
+#include "aos/json_to_flatbuffer.h"
+#include "aos/testing/tmpdir.h"
+
+namespace aos {
+namespace logger {
+namespace testing {
+
+template <typename T>
+SizePrefixedFlatbufferDetachedBuffer<T> JsonToSizedFlatbuffer(
+    const std::string_view data) {
+  flatbuffers::FlatBufferBuilder fbb;
+  fbb.ForceDefaults(true);
+  fbb.FinishSizePrefixed(JsonToFlatbuffer<T>(data, &fbb));
+  return fbb.Release();
+}
+
+TEST(SpanReaderTest, ReadWrite) {
+  const std::string logfile = aos::testing::TestTmpDir() + "/log.bfbs";
+  unlink(logfile.c_str());
+
+  const aos::SizePrefixedFlatbufferDetachedBuffer<TestMessage> m1 =
+      JsonToSizedFlatbuffer<TestMessage>(
+          R"({ "value": 1 })");
+  const aos::SizePrefixedFlatbufferDetachedBuffer<TestMessage> m2 =
+      JsonToSizedFlatbuffer<TestMessage>(
+          R"({ "value": 2 })");
+
+  {
+    DetachedBufferWriter writer(logfile, std::make_unique<DummyEncoder>());
+    writer.QueueSpan(m1.full_span());
+    writer.QueueSpan(m2.full_span());
+  }
+
+  SpanReader reader(logfile);
+
+  EXPECT_EQ(reader.filename(), logfile);
+  EXPECT_EQ(reader.ReadMessage(), m1.full_span());
+  EXPECT_EQ(reader.ReadMessage(), m2.full_span());
+  EXPECT_EQ(reader.ReadMessage(), absl::Span<const uint8_t>());
+}
+
+}  // namespace testing
+}  // namespace logger
+}  // namespace aos