fd/fmt: Fix for compiled strings

This ensures that we can use the faster variants of complex formatting
strings via pre-compilation.

Change-Id: I6e6433edf1c96d717638555e0734657ae32e3dba
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/test/fd/fmt.cpp b/test/fd/fmt.cpp
index fe1fed4..55f6c5d 100644
--- a/test/fd/fmt.cpp
+++ b/test/fd/fmt.cpp
@@ -1,6 +1,7 @@
 #include <gtest/gtest.h>
 
 #include <filesystem>
+#include <fmt/compile.h>
 #include <memory>
 #include <stdplus/fd/fmt.hpp>
 #include <stdplus/fd/managed.hpp>
@@ -8,30 +9,37 @@
 #include <stdplus/util/cexec.hpp>
 #include <sys/mman.h>
 
+#include <string>
+#include <string_view>
+
 namespace stdplus
 {
 namespace fd
 {
 
+using fmt::operator""_cf;
+using std::literals::string_view_literals::operator""sv;
+
 TEST(FormatBuffer, Basic)
 {
     auto fd = ManagedFd(CHECK_ERRNO(memfd_create("test", 0), "memfd_create"));
     {
         FormatBuffer buf(fd, 4096);
         buf.append("hi\n");
+        buf.append("hi\n"sv);
         EXPECT_EQ(0, fd.lseek(0, Whence::Cur));
         buf.flush();
 
-        EXPECT_EQ(3, fd.lseek(0, Whence::Cur));
-        buf.append("{}", std::string(2050, 'a'));
-        EXPECT_EQ(3, fd.lseek(0, Whence::Cur));
-        buf.append("{}", std::string(2050, 'a'));
-        EXPECT_EQ(4103, fd.lseek(0, Whence::Cur));
+        EXPECT_EQ(6, fd.lseek(0, Whence::Cur));
+        buf.append(FMT_COMPILE("{}"), std::string(2050, 'a'));
+        EXPECT_EQ(6, fd.lseek(0, Whence::Cur));
+        buf.append("{}"_cf, std::string(2050, 'a'));
+        EXPECT_EQ(4106, fd.lseek(0, Whence::Cur));
 
-        buf.append("hi\n");
-        EXPECT_EQ(4103, fd.lseek(0, Whence::Cur));
+        buf.append(FMT_STRING("hi\n"));
+        EXPECT_EQ(4106, fd.lseek(0, Whence::Cur));
     }
-    EXPECT_EQ(4106, fd.lseek(0, Whence::Cur));
+    EXPECT_EQ(4109, fd.lseek(0, Whence::Cur));
 }
 
 class FormatToFileTest : public gtest::TestWithTmp
@@ -64,11 +72,14 @@
 TEST_F(FormatToFileTest, Basic)
 {
     file->append("hi\n");
+    file->append("hi\n"sv);
+    file->append(FMT_STRING("hi\n"));
+    file->append(FMT_COMPILE("hi\n"));
     EXPECT_EQ(0, std::filesystem::file_size(tmpname));
     auto filename = fmt::format("{}/out", CaseTmpDir());
     file->commit(filename);
     EXPECT_FALSE(std::filesystem::exists(tmpname));
-    EXPECT_EQ(3, std::filesystem::file_size(filename));
+    EXPECT_EQ(12, std::filesystem::file_size(filename));
 }
 
 } // namespace fd