This is an automated email from the ASF dual-hosted git repository.

paleolimbot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-nanoarrow.git


The following commit(s) were added to refs/heads/main by this push:
     new c1f0f376 refactor: Use ArrowStringView C++ literal in tests (#528)
c1f0f376 is described below

commit c1f0f376da5e3b058f5d22915c7d57a69a4d6eeb
Author: Dewey Dunnington <[email protected]>
AuthorDate: Fri Jun 21 14:26:07 2024 +0000

    refactor: Use ArrowStringView C++ literal in tests (#528)
    
    In https://github.com/apache/arrow-nanoarrow/pull/404, the `_v` literal
    was added, making it much more compact to define an `ArrowStringView`
    and compare its equality to something else.
    
    This PR refactors tests that used `EXPECT/ASSERT_EQ()` to be more
    compact, and replaces `ArrowCharView()` with the string literal.
    
    From reading
    https://en.cppreference.com/w/cpp/string/basic_string_view/operator%22%22sv
    and https://json.nlohmann.me/api/macros/json_use_global_udls/#notes it
    seems like constraining the user-defined literal to a namespace is the
    "modern" way to do this...I am not sure that `"_sv"` is the best choice
    (maybe too close to `"sv"`?), but it did seem more descriptive than
    `"_v` for those reading the tests without knowing that these literals
    are defined.
---
 src/nanoarrow/array_test.cc                  | 49 ++++++++--------
 src/nanoarrow/buffer_test.cc                 |  6 +-
 src/nanoarrow/nanoarrow.hpp                  | 30 ++++++----
 src/nanoarrow/nanoarrow_device_cuda_test.cc  |  8 ++-
 src/nanoarrow/nanoarrow_device_metal_test.cc |  6 +-
 src/nanoarrow/nanoarrow_device_test.cc       |  8 ++-
 src/nanoarrow/nanoarrow_hpp_test.cc          |  9 ++-
 src/nanoarrow/nanoarrow_testing_test.cc      | 76 +++++++++++--------------
 src/nanoarrow/schema_test.cc                 | 83 ++++++++++++----------------
 src/nanoarrow/utils_test.cc                  | 32 ++++++-----
 10 files changed, 153 insertions(+), 154 deletions(-)

diff --git a/src/nanoarrow/array_test.cc b/src/nanoarrow/array_test.cc
index 024aca8d..7b6d37e5 100644
--- a/src/nanoarrow/array_test.cc
+++ b/src/nanoarrow/array_test.cc
@@ -39,6 +39,7 @@
 #include "nanoarrow/nanoarrow.hpp"
 
 using namespace arrow;
+using namespace nanoarrow::literals;
 using nanoarrow::NA;
 using testing::ElementsAre;
 
@@ -256,8 +257,8 @@ TEST(ArrayTest, ArrayTestExplicitValidationLevel) {
 
   ASSERT_EQ(ArrowArrayInitFromType(&array, NANOARROW_TYPE_STRING), 
NANOARROW_OK);
   EXPECT_EQ(ArrowArrayStartAppending(&array), NANOARROW_OK);
-  EXPECT_EQ(ArrowArrayAppendString(&array, ArrowCharView("1234")), 
NANOARROW_OK);
-  EXPECT_EQ(ArrowArrayAppendString(&array, ArrowCharView("5678")), 
NANOARROW_OK);
+  EXPECT_EQ(ArrowArrayAppendString(&array, "1234"_asv), NANOARROW_OK);
+  EXPECT_EQ(ArrowArrayAppendString(&array, "5678"_asv), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayFinishBuilding(&array, NANOARROW_VALIDATION_LEVEL_NONE, 
&error),
             NANOARROW_OK);
 
@@ -312,8 +313,8 @@ TEST(ArrayTest, ArrayTestValidateMinimalBufferAccess) {
 
   ASSERT_EQ(ArrowArrayInitFromType(&array, NANOARROW_TYPE_STRING), 
NANOARROW_OK);
   EXPECT_EQ(ArrowArrayStartAppending(&array), NANOARROW_OK);
-  EXPECT_EQ(ArrowArrayAppendString(&array, ArrowCharView("1234")), 
NANOARROW_OK);
-  EXPECT_EQ(ArrowArrayAppendString(&array, ArrowCharView("5678")), 
NANOARROW_OK);
+  EXPECT_EQ(ArrowArrayAppendString(&array, "1234"_asv), NANOARROW_OK);
+  EXPECT_EQ(ArrowArrayAppendString(&array, "5678"_asv), NANOARROW_OK);
 
   // Temporarily make it so that referencing the offsets buffer will crash
   // but make sure it has the correct size_bytes and passes minimal validation
@@ -395,7 +396,7 @@ TEST(ArrayTest, ArrayTestAppendToNullArray) {
   buffer_view.data.data = nullptr;
   buffer_view.size_bytes = 0;
   EXPECT_EQ(ArrowArrayAppendBytes(&array, buffer_view), EINVAL);
-  EXPECT_EQ(ArrowArrayAppendString(&array, ArrowCharView("")), EINVAL);
+  EXPECT_EQ(ArrowArrayAppendString(&array, ""_asv), EINVAL);
   ArrowArrayRelease(&array);
 }
 
@@ -523,9 +524,9 @@ TEST(ArrayTest, ArrayTestAppendToStringArray) {
   ASSERT_EQ(ArrowArrayReserve(&array, 5), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayBuffer(&array, 1)->capacity_bytes, (5 + 1) * 
sizeof(int32_t));
 
-  EXPECT_EQ(ArrowArrayAppendString(&array, ArrowCharView("1234")), 
NANOARROW_OK);
+  EXPECT_EQ(ArrowArrayAppendString(&array, "1234"_asv), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayAppendNull(&array, 2), NANOARROW_OK);
-  EXPECT_EQ(ArrowArrayAppendString(&array, ArrowCharView("56789")), 
NANOARROW_OK);
+  EXPECT_EQ(ArrowArrayAppendString(&array, "56789"_asv), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayAppendEmpty(&array, 1), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayFinishBuildingDefault(&array, nullptr), NANOARROW_OK);
 
@@ -559,7 +560,7 @@ TEST(ArrayTest, ArrayTestAppendEmptyToString) {
   struct ArrowArray array;
   ASSERT_EQ(ArrowArrayInitFromType(&array, NANOARROW_TYPE_STRING), 
NANOARROW_OK);
   ASSERT_EQ(ArrowArrayStartAppending(&array), NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(&array, ArrowCharView("")), NANOARROW_OK);
+  ASSERT_EQ(ArrowArrayAppendString(&array, ""_asv), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayFinishBuildingDefault(&array, nullptr), NANOARROW_OK);
   EXPECT_NE(array.buffers[2], nullptr);
   ArrowArrayRelease(&array);
@@ -859,9 +860,9 @@ TEST(ArrayTest, ArrayTestAppendToLargeStringArray) {
   ASSERT_EQ(ArrowArrayReserve(&array, 5), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayBuffer(&array, 1)->capacity_bytes, (5 + 1) * 
sizeof(int64_t));
 
-  EXPECT_EQ(ArrowArrayAppendString(&array, ArrowCharView("1234")), 
NANOARROW_OK);
+  EXPECT_EQ(ArrowArrayAppendString(&array, "1234"_asv), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayAppendNull(&array, 2), NANOARROW_OK);
-  EXPECT_EQ(ArrowArrayAppendString(&array, ArrowCharView("56789")), 
NANOARROW_OK);
+  EXPECT_EQ(ArrowArrayAppendString(&array, "56789"_asv), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayAppendEmpty(&array, 1), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayFinishBuildingDefault(&array, nullptr), NANOARROW_OK);
 
@@ -879,7 +880,7 @@ TEST(ArrayTest, ArrayTestAppendToLargeStringArray) {
   EXPECT_EQ(memcmp(data_buffer, "123456789", 9), 0);
 
   EXPECT_THAT(nanoarrow::ViewArrayAsBytes<64>(&array),
-              ElementsAre("1234"_v, NA, NA, "56789"_v, ""_v));
+              ElementsAre("1234"_asv, NA, NA, "56789"_asv, ""_asv));
   ArrowArrayRelease(&array);
 }
 
@@ -915,7 +916,7 @@ TEST(ArrayTest, ArrayTestAppendToFixedSizeBinaryArray) {
   EXPECT_EQ(memcmp(data_buffer, expected_data, 25), 0);
 
   EXPECT_THAT(nanoarrow::ViewArrayAsFixedSizeBytes(&array, 5),
-              ElementsAre("12345"_v, NA, NA, "67890"_v, "\0\0\0\0\0"_v));
+              ElementsAre("12345"_asv, NA, NA, "67890"_asv, "\0\0\0\0\0"_asv));
   ArrowArrayRelease(&array);
   ArrowSchemaRelease(&schema);
 }
@@ -1264,9 +1265,8 @@ TEST(ArrayTest, ArrayTestAppendToMapArray) {
   ASSERT_EQ(ArrowArrayReserve(&array, 5), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayBuffer(array.children[0], 1)->capacity_bytes, 0);
 
-  struct ArrowStringView string_value = ArrowCharView("foobar");
   ASSERT_EQ(ArrowArrayAppendInt(array.children[0]->children[0], 123), 
NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(array.children[0]->children[1], 
string_value),
+  ASSERT_EQ(ArrowArrayAppendString(array.children[0]->children[1], 
"foobar"_asv),
             NANOARROW_OK);
   EXPECT_EQ(ArrowArrayFinishElement(array.children[0]), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayFinishElement(&array), NANOARROW_OK);
@@ -1653,7 +1653,7 @@ TEST(ArrayTest, ArrayTestAppendToDenseUnionArray) {
   ASSERT_EQ(ArrowArrayAppendInt(array.children[0], 123), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayFinishUnionElement(&array, 0), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayAppendNull(&array, 2), NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(array.children[1], ArrowCharView("one 
twenty four")),
+  ASSERT_EQ(ArrowArrayAppendString(array.children[1], "one twenty four"_asv),
             NANOARROW_OK);
   EXPECT_EQ(ArrowArrayFinishUnionElement(&array, 1), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayAppendEmpty(&array, 1), NANOARROW_OK);
@@ -1699,7 +1699,7 @@ TEST(ArrayTest, ArrayTestAppendToSparseUnionArray) {
   ASSERT_EQ(ArrowArrayAppendInt(array.children[0], 123), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayFinishUnionElement(&array, 0), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayAppendNull(&array, 2), NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(array.children[1], ArrowCharView("one 
twenty four")),
+  ASSERT_EQ(ArrowArrayAppendString(array.children[1], "one twenty four"_asv),
             NANOARROW_OK);
   EXPECT_EQ(ArrowArrayFinishUnionElement(&array, 1), NANOARROW_OK);
   EXPECT_EQ(ArrowArrayAppendEmpty(&array, 1), NANOARROW_OK);
@@ -2345,8 +2345,8 @@ TEST(ArrayTest, ArrayViewTestDictionary) {
   struct ArrowArray array;
   ASSERT_EQ(ArrowArrayInitFromSchema(&array, &schema, nullptr), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayStartAppending(&array), NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(array.dictionary, ArrowCharView("abc")), 
NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(array.dictionary, ArrowCharView("def")), 
NANOARROW_OK);
+  ASSERT_EQ(ArrowArrayAppendString(array.dictionary, "abc"_asv), NANOARROW_OK);
+  ASSERT_EQ(ArrowArrayAppendString(array.dictionary, "def"_asv), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayAppendInt(&array, 0), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayAppendInt(&array, 1), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishBuildingDefault(&array, nullptr), NANOARROW_OK);
@@ -2361,11 +2361,8 @@ TEST(ArrayTest, ArrayViewTestDictionary) {
   EXPECT_EQ(ArrowArrayViewGetIntUnsafe(&array_view, 0), 0);
   EXPECT_EQ(ArrowArrayViewGetIntUnsafe(&array_view, 1), 1);
 
-  struct ArrowStringView item;
-  item = ArrowArrayViewGetStringUnsafe(array_view.dictionary, 0);
-  EXPECT_EQ(std::string(item.data, item.size_bytes), "abc");
-  item = ArrowArrayViewGetStringUnsafe(array_view.dictionary, 1);
-  EXPECT_EQ(std::string(item.data, item.size_bytes), "def");
+  EXPECT_EQ(ArrowArrayViewGetStringUnsafe(array_view.dictionary, 0), 
"abc"_asv);
+  EXPECT_EQ(ArrowArrayViewGetStringUnsafe(array_view.dictionary, 1), 
"def"_asv);
 
   ArrowArrayRelease(&array);
 
@@ -2405,7 +2402,7 @@ TEST(ArrayTest, ArrayViewTestUnionChildIndices) {
   ASSERT_EQ(ArrowArrayStartAppending(&array), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayAppendInt(array.children[0], 123), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishUnionElement(&array, 0), NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(array.children[1], ArrowCharView("one 
twenty four")),
+  ASSERT_EQ(ArrowArrayAppendString(array.children[1], "one twenty four"_asv),
             NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishUnionElement(&array, 1), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishBuildingDefault(&array, nullptr), NANOARROW_OK);
@@ -2513,7 +2510,7 @@ TEST(ArrayTest, ArrayViewTestDenseUnionGet) {
   ASSERT_EQ(ArrowArrayStartAppending(&array), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayAppendInt(array.children[0], 123), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishUnionElement(&array, 0), NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(array.children[1], ArrowCharView("one 
twenty four")),
+  ASSERT_EQ(ArrowArrayAppendString(array.children[1], "one twenty four"_asv),
             NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishUnionElement(&array, 1), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayAppendNull(&array, 1), NANOARROW_OK);
@@ -2559,7 +2556,7 @@ TEST(ArrayTest, ArrayViewTestSparseUnionGet) {
   ASSERT_EQ(ArrowArrayStartAppending(&array), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayAppendInt(array.children[0], 123), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishUnionElement(&array, 0), NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(array.children[1], ArrowCharView("one 
twenty four")),
+  ASSERT_EQ(ArrowArrayAppendString(array.children[1], "one twenty four"_asv),
             NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishUnionElement(&array, 1), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayAppendNull(&array, 1), NANOARROW_OK);
diff --git a/src/nanoarrow/buffer_test.cc b/src/nanoarrow/buffer_test.cc
index 053debf8..5287e76c 100644
--- a/src/nanoarrow/buffer_test.cc
+++ b/src/nanoarrow/buffer_test.cc
@@ -21,7 +21,7 @@
 
 #include <gtest/gtest.h>
 
-#include "nanoarrow/nanoarrow.h"
+#include "nanoarrow/nanoarrow.hpp"
 
 // This test allocator guarantees that allocator->reallocate will return
 // a new pointer so that we can test when reallocations happen whilst
@@ -194,6 +194,8 @@ TEST(BufferTest, BufferTestError) {
 }
 
 TEST(BufferTest, BufferTestAppendHelpers) {
+  using namespace nanoarrow::literals;
+
   struct ArrowBuffer buffer;
   ArrowBufferInit(&buffer);
 
@@ -237,7 +239,7 @@ TEST(BufferTest, BufferTestAppendHelpers) {
   EXPECT_EQ(reinterpret_cast<float*>(buffer.data)[0], 123);
   ArrowBufferReset(&buffer);
 
-  EXPECT_EQ(ArrowBufferAppendStringView(&buffer, ArrowCharView("a")), 
NANOARROW_OK);
+  EXPECT_EQ(ArrowBufferAppendStringView(&buffer, "a"_asv), NANOARROW_OK);
   EXPECT_EQ(reinterpret_cast<char*>(buffer.data)[0], 'a');
   EXPECT_EQ(buffer.size_bytes, 1);
   ArrowBufferReset(&buffer);
diff --git a/src/nanoarrow/nanoarrow.hpp b/src/nanoarrow/nanoarrow.hpp
index a5d44f9a..f51db74c 100644
--- a/src/nanoarrow/nanoarrow.hpp
+++ b/src/nanoarrow/nanoarrow.hpp
@@ -82,6 +82,23 @@ class Exception : public std::exception {
 
 /// @}
 
+namespace literals {
+
+/// \defgroup nanoarrow_hpp-string_view_helpers ArrowStringView helpers
+///
+/// Factories and equality comparison for ArrowStringView.
+///
+/// @{
+
+/// \brief User literal operator allowing ArrowStringView construction like 
"str"_asv
+inline ArrowStringView operator"" _asv(const char* data, std::size_t 
size_bytes) {
+  return {data, static_cast<int64_t>(size_bytes)};
+}
+
+// @}
+
+}  // namespace literals
+
 namespace internal {
 
 /// \defgroup nanoarrow_hpp-unique_base Base classes for Unique wrappers
@@ -893,22 +910,11 @@ class ViewArrayStream {
 
 }  // namespace nanoarrow
 
-/// \defgroup nanoarrow_hpp-string_view_helpers ArrowStringView helpers
-///
-/// Factories and equality comparison for ArrowStringView.
-///
-/// @{
-
 /// \brief Equality comparison operator between ArrowStringView
+/// \ingroup nanoarrow_hpp-string_view_helpers
 inline bool operator==(ArrowStringView l, ArrowStringView r) {
   if (l.size_bytes != r.size_bytes) return false;
   return memcmp(l.data, r.data, l.size_bytes) == 0;
 }
 
-/// \brief User literal operator allowing ArrowStringView construction like 
"str"_sv
-inline ArrowStringView operator"" _v(const char* data, std::size_t size_bytes) 
{
-  return {data, static_cast<int64_t>(size_bytes)};
-}
-/// @}
-
 #endif
diff --git a/src/nanoarrow/nanoarrow_device_cuda_test.cc 
b/src/nanoarrow/nanoarrow_device_cuda_test.cc
index 0a861443..5ee06396 100644
--- a/src/nanoarrow/nanoarrow_device_cuda_test.cc
+++ b/src/nanoarrow/nanoarrow_device_cuda_test.cc
@@ -197,6 +197,8 @@ std::tuple<ArrowDeviceType, enum ArrowType, bool> 
TestParams(ArrowDeviceType dev
 }
 
 TEST_P(StringTypeParameterizedTestFixture, ArrowDeviceCudaArrayViewString) {
+  using namespace nanoarrow::literals;
+
   struct ArrowDevice* cpu = ArrowDeviceCpu();
   struct ArrowDevice* gpu = ArrowDeviceCuda(std::get<0>(GetParam()), 0);
   struct ArrowArray array;
@@ -208,13 +210,13 @@ TEST_P(StringTypeParameterizedTestFixture, 
ArrowDeviceCudaArrayViewString) {
 
   ASSERT_EQ(ArrowArrayInitFromType(&array, string_type), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayStartAppending(&array), NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(&array, ArrowCharView("abc")), 
NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(&array, ArrowCharView("defg")), 
NANOARROW_OK);
+  ASSERT_EQ(ArrowArrayAppendString(&array, "abc"_asv), NANOARROW_OK);
+  ASSERT_EQ(ArrowArrayAppendString(&array, "defg"_asv), NANOARROW_OK);
   if (include_null) {
     ASSERT_EQ(ArrowArrayAppendNull(&array, 1), NANOARROW_OK);
     expected_data_size = 7;
   } else {
-    ASSERT_EQ(ArrowArrayAppendString(&array, ArrowCharView("hjk")), 
NANOARROW_OK);
+    ASSERT_EQ(ArrowArrayAppendString(&array, "hjk"_asv), NANOARROW_OK);
     expected_data_size = 10;
   }
   ASSERT_EQ(ArrowArrayFinishBuildingDefault(&array, nullptr), NANOARROW_OK);
diff --git a/src/nanoarrow/nanoarrow_device_metal_test.cc 
b/src/nanoarrow/nanoarrow_device_metal_test.cc
index 10a9e83f..679d655b 100644
--- a/src/nanoarrow/nanoarrow_device_metal_test.cc
+++ b/src/nanoarrow/nanoarrow_device_metal_test.cc
@@ -222,6 +222,8 @@ class StringTypeParameterizedTestFixture
 };
 
 TEST_P(StringTypeParameterizedTestFixture, ArrowDeviceMetalArrayViewString) {
+  using namespace nanoarrow::literals;
+
   struct ArrowDevice* metal = ArrowDeviceMetalDefaultDevice();
   struct ArrowDevice* cpu = ArrowDeviceCpu();
   struct ArrowArray array;
@@ -231,8 +233,8 @@ TEST_P(StringTypeParameterizedTestFixture, 
ArrowDeviceMetalArrayViewString) {
 
   ASSERT_EQ(ArrowArrayInitFromType(&array, string_type), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayStartAppending(&array), NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(&array, ArrowCharView("abc")), 
NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(&array, ArrowCharView("defg")), 
NANOARROW_OK);
+  ASSERT_EQ(ArrowArrayAppendString(&array, "abc"_asv), NANOARROW_OK);
+  ASSERT_EQ(ArrowArrayAppendString(&array, "defg"_asv), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayAppendNull(&array, 1), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishBuildingDefault(&array, nullptr), NANOARROW_OK);
 
diff --git a/src/nanoarrow/nanoarrow_device_test.cc 
b/src/nanoarrow/nanoarrow_device_test.cc
index ad2ed9c8..6765baed 100644
--- a/src/nanoarrow/nanoarrow_device_test.cc
+++ b/src/nanoarrow/nanoarrow_device_test.cc
@@ -19,7 +19,7 @@
 
 #include <gtest/gtest.h>
 
-#include "nanoarrow/nanoarrow_device.h"
+#include "nanoarrow/nanoarrow_device.hpp"
 
 TEST(NanoarrowDevice, CheckRuntime) {
   EXPECT_EQ(ArrowDeviceCheckRuntime(nullptr), NANOARROW_OK);
@@ -68,6 +68,8 @@ class StringTypeParameterizedTestFixture
 };
 
 TEST_P(StringTypeParameterizedTestFixture, ArrowDeviceCpuArrayViewString) {
+  using namespace nanoarrow::literals;
+
   struct ArrowDevice* cpu = ArrowDeviceCpu();
   struct ArrowArray array;
   struct ArrowDeviceArray device_array;
@@ -76,8 +78,8 @@ TEST_P(StringTypeParameterizedTestFixture, 
ArrowDeviceCpuArrayViewString) {
 
   ASSERT_EQ(ArrowArrayInitFromType(&array, string_type), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayStartAppending(&array), NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(&array, ArrowCharView("abc")), 
NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(&array, ArrowCharView("defg")), 
NANOARROW_OK);
+  ASSERT_EQ(ArrowArrayAppendString(&array, "abc"_asv), NANOARROW_OK);
+  ASSERT_EQ(ArrowArrayAppendString(&array, "defg"_asv), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayAppendNull(&array, 1), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishBuildingDefault(&array, nullptr), NANOARROW_OK);
 
diff --git a/src/nanoarrow/nanoarrow_hpp_test.cc 
b/src/nanoarrow/nanoarrow_hpp_test.cc
index 05b6b8de..31250f6c 100644
--- a/src/nanoarrow/nanoarrow_hpp_test.cc
+++ b/src/nanoarrow/nanoarrow_hpp_test.cc
@@ -288,6 +288,8 @@ TEST(NanoarrowHppTest, NanoarrowHppViewArrayAsTest) {
 }
 
 TEST(NanoarrowHppTest, NanoarrowHppViewArrayAsBytesTest) {
+  using namespace nanoarrow::literals;
+
   nanoarrow::UniqueBuffer is_valid, offsets, data;
   nanoarrow::BufferInitSequence(is_valid.get(), std::vector<uint8_t>{0xFF});
   ArrowBitClear(is_valid->data, 2);
@@ -304,7 +306,8 @@ TEST(NanoarrowHppTest, NanoarrowHppViewArrayAsBytesTest) {
   array.buffers = buffers;
 
   int i = 0;
-  ArrowStringView expected[] = {"a"_v, "b"_v, "c"_v, "d"_v, "e"_v, "f"_v, 
"g"_v};
+  ArrowStringView expected[] = {"a"_asv, "b"_asv, "c"_asv, "d"_asv,
+                                "e"_asv, "f"_asv, "g"_asv};
   for (auto slot : nanoarrow::ViewArrayAsBytes<32>(&array)) {
     if (i == 2 || i == 5) {
       EXPECT_EQ(slot, nanoarrow::NA);
@@ -316,6 +319,8 @@ TEST(NanoarrowHppTest, NanoarrowHppViewArrayAsBytesTest) {
 }
 
 TEST(NanoarrowHppTest, NanoarrowHppViewArrayAsFixedSizeBytesTest) {
+  using namespace nanoarrow::literals;
+
   nanoarrow::UniqueBuffer is_valid, data;
   nanoarrow::BufferInitSequence(is_valid.get(), std::vector<uint8_t>{0xFF});
   ArrowBitClear(is_valid->data, 2);
@@ -335,7 +340,7 @@ TEST(NanoarrowHppTest, 
NanoarrowHppViewArrayAsFixedSizeBytesTest) {
     if (i == 2 || i == 5) {
       EXPECT_EQ(slot, nanoarrow::NA);
     } else {
-      EXPECT_EQ(slot, i % 2 == 0 ? "foo"_v : "bar"_v);
+      EXPECT_EQ(slot, i % 2 == 0 ? "foo"_asv : "bar"_asv);
     }
     ++i;
   }
diff --git a/src/nanoarrow/nanoarrow_testing_test.cc 
b/src/nanoarrow/nanoarrow_testing_test.cc
index ebd1853a..90abef8a 100644
--- a/src/nanoarrow/nanoarrow_testing_test.cc
+++ b/src/nanoarrow/nanoarrow_testing_test.cc
@@ -25,6 +25,7 @@
 using nanoarrow::testing::TestingJSONComparison;
 using nanoarrow::testing::TestingJSONReader;
 using nanoarrow::testing::TestingJSONWriter;
+using namespace nanoarrow::literals;
 
 ArrowErrorCode WriteBatchJSON(std::ostream& out, TestingJSONWriter& writer,
                               const ArrowSchema* schema, ArrowArrayView* 
array_view) {
@@ -209,8 +210,8 @@ TEST(NanoarrowTestingTest, 
NanoarrowTestingTestColumnString) {
       },
       [](ArrowArray* array) {
         NANOARROW_RETURN_NOT_OK(ArrowArrayAppendNull(array, 1));
-        NANOARROW_RETURN_NOT_OK(ArrowArrayAppendString(array, 
ArrowCharView("abc")));
-        NANOARROW_RETURN_NOT_OK(ArrowArrayAppendString(array, 
ArrowCharView("def")));
+        NANOARROW_RETURN_NOT_OK(ArrowArrayAppendString(array, "abc"_asv));
+        NANOARROW_RETURN_NOT_OK(ArrowArrayAppendString(array, "def"_asv));
         return NANOARROW_OK;
       },
       &WriteColumnJSON,
@@ -236,7 +237,7 @@ TEST(NanoarrowTestingTest, 
NanoarrowTestingTestColumnString) {
         return ArrowSchemaInitFromType(schema, NANOARROW_TYPE_STRING);
       },
       [](ArrowArray* array) {
-        NANOARROW_RETURN_NOT_OK(ArrowArrayAppendString(array, 
ArrowCharView("\u0001")));
+        NANOARROW_RETURN_NOT_OK(ArrowArrayAppendString(array, "\u0001"_asv));
         return NANOARROW_OK;
       },
       &WriteColumnJSON,
@@ -251,8 +252,8 @@ TEST(NanoarrowTestingTest, 
NanoarrowTestingTestColumnLargeString) {
       },
       [](ArrowArray* array) {
         NANOARROW_RETURN_NOT_OK(ArrowArrayAppendNull(array, 1));
-        NANOARROW_RETURN_NOT_OK(ArrowArrayAppendString(array, 
ArrowCharView("abc")));
-        NANOARROW_RETURN_NOT_OK(ArrowArrayAppendString(array, 
ArrowCharView("def")));
+        NANOARROW_RETURN_NOT_OK(ArrowArrayAppendString(array, "abc"_asv));
+        NANOARROW_RETURN_NOT_OK(ArrowArrayAppendString(array, "def"_asv));
         return NANOARROW_OK;
       },
       &WriteColumnJSON,
@@ -272,7 +273,7 @@ TEST(NanoarrowTestingTest, 
NanoarrowTestingTestColumnBinary) {
         value_view.size_bytes = sizeof(value);
 
         NANOARROW_RETURN_NOT_OK(ArrowArrayAppendNull(array, 1));
-        NANOARROW_RETURN_NOT_OK(ArrowArrayAppendString(array, 
ArrowCharView("abc")));
+        NANOARROW_RETURN_NOT_OK(ArrowArrayAppendString(array, "abc"_asv));
         NANOARROW_RETURN_NOT_OK(ArrowArrayAppendBytes(array, value_view));
         return NANOARROW_OK;
       },
@@ -449,10 +450,10 @@ TEST(NanoarrowTestingTest, 
NanoarrowTestingTestFieldMetadata) {
       [](ArrowSchema* schema) {
         nanoarrow::UniqueBuffer buffer;
         NANOARROW_RETURN_NOT_OK(ArrowMetadataBuilderInit(buffer.get(), 
nullptr));
-        NANOARROW_RETURN_NOT_OK(ArrowMetadataBuilderAppend(
-            buffer.get(), ArrowCharView("k1"), ArrowCharView("v1")));
-        NANOARROW_RETURN_NOT_OK(ArrowMetadataBuilderAppend(
-            buffer.get(), ArrowCharView("k2"), ArrowCharView("v2")));
+        NANOARROW_RETURN_NOT_OK(
+            ArrowMetadataBuilderAppend(buffer.get(), "k1"_asv, "v1"_asv));
+        NANOARROW_RETURN_NOT_OK(
+            ArrowMetadataBuilderAppend(buffer.get(), "k2"_asv, "v2"_asv));
 
         NANOARROW_RETURN_NOT_OK(ArrowSchemaInitFromType(schema, 
NANOARROW_TYPE_NA));
         NANOARROW_RETURN_NOT_OK(
@@ -723,8 +724,8 @@ TEST(NanoarrowTestingTest, NanoarrowTestingTestReadSchema) {
   ArrowStringView key;
   ArrowStringView value;
   ASSERT_EQ(ArrowMetadataReaderRead(&metadata_reader, &key, &value), 
NANOARROW_OK);
-  ASSERT_EQ(std::string(key.data, key.size_bytes), "k1");
-  ASSERT_EQ(std::string(value.data, value.size_bytes), "v1");
+  ASSERT_EQ(key, "k1"_asv);
+  ASSERT_EQ(value, "v1"_asv);
 
   // Check invalid JSON
   EXPECT_EQ(reader.ReadSchema(R"({)", schema.get()), EINVAL);
@@ -799,12 +800,12 @@ TEST(NanoarrowTestingTest, 
NanoarrowTestingTestReadFieldMetadata) {
   ASSERT_EQ(metadata.remaining_keys, 2);
 
   ASSERT_EQ(ArrowMetadataReaderRead(&metadata, &key, &value), NANOARROW_OK);
-  ASSERT_EQ(std::string(key.data, key.size_bytes), "k1");
-  ASSERT_EQ(std::string(value.data, value.size_bytes), "v1");
+  ASSERT_EQ(key, "k1"_asv);
+  ASSERT_EQ(value, "v1"_asv);
 
   ASSERT_EQ(ArrowMetadataReaderRead(&metadata, &key, &value), NANOARROW_OK);
-  ASSERT_EQ(std::string(key.data, key.size_bytes), "k2");
-  ASSERT_EQ(std::string(value.data, value.size_bytes), "v2");
+  ASSERT_EQ(key, "k2"_asv);
+  ASSERT_EQ(value, "v2"_asv);
 }
 
 TEST(NanoarrowTestingTest, NanoarrowTestingTestReadFieldNested) {
@@ -1398,11 +1399,9 @@ TEST(NanoarrowTestingTest, 
NanoarrowTestingTestSchemaComparison) {
   // With different top-level metadata
   nanoarrow::UniqueBuffer buf;
   ASSERT_EQ(ArrowMetadataBuilderInit(buf.get(), nullptr), NANOARROW_OK);
-  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), ArrowCharView("key1"),
-                                       ArrowCharView("value1")),
+  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), "key1"_asv, "value1"_asv),
             NANOARROW_OK);
-  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), ArrowCharView("key2"),
-                                       ArrowCharView("value2")),
+  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), "key2"_asv, "value2"_asv),
             NANOARROW_OK);
   ASSERT_EQ(ArrowSchemaSetMetadata(actual.get(), 
reinterpret_cast<char*>(buf->data)),
             NANOARROW_OK);
@@ -1490,22 +1489,18 @@ TEST(NanoarrowTestingTest, 
NanoarrowTestingTestMetadataComparison) {
   // With different top-level metadata that are not equivalent because of order
   buf.reset();
   ASSERT_EQ(ArrowMetadataBuilderInit(buf.get(), nullptr), NANOARROW_OK);
-  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), ArrowCharView("key1"),
-                                       ArrowCharView("value1")),
+  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), "key1"_asv, "value1"_asv),
             NANOARROW_OK);
-  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), ArrowCharView("key2"),
-                                       ArrowCharView("value2")),
+  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), "key2"_asv, "value2"_asv),
             NANOARROW_OK);
   ASSERT_EQ(ArrowSchemaSetMetadata(actual.get(), 
reinterpret_cast<char*>(buf->data)),
             NANOARROW_OK);
 
   buf.reset();
   ASSERT_EQ(ArrowMetadataBuilderInit(buf.get(), nullptr), NANOARROW_OK);
-  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), ArrowCharView("key2"),
-                                       ArrowCharView("value2")),
+  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), "key2"_asv, "value2"_asv),
             NANOARROW_OK);
-  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), ArrowCharView("key1"),
-                                       ArrowCharView("value1")),
+  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), "key1"_asv, "value1"_asv),
             NANOARROW_OK);
   ASSERT_EQ(ArrowSchemaSetMetadata(expected.get(), 
reinterpret_cast<char*>(buf->data)),
             NANOARROW_OK);
@@ -1560,11 +1555,9 @@ TEST(NanoarrowTestingTest, 
NanoarrowTestingTestMetadataComparison) {
   // With different top-level metadata that are not equivalent because of item 
content
   buf.reset();
   ASSERT_EQ(ArrowMetadataBuilderInit(buf.get(), nullptr), NANOARROW_OK);
-  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), ArrowCharView("key2"),
-                                       ArrowCharView("value2")),
+  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), "key2"_asv, "value2"_asv),
             NANOARROW_OK);
-  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), ArrowCharView("key1"),
-                                       ArrowCharView("gazornenplat")),
+  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), "key1"_asv, 
"gazornenplat"_asv),
             NANOARROW_OK);
   ASSERT_EQ(ArrowSchemaSetMetadata(actual.get(), 
reinterpret_cast<char*>(buf->data)),
             NANOARROW_OK);
@@ -1597,11 +1590,9 @@ TEST(NanoarrowTestingTest, 
NanoarrowTestingTestMetadataComparison) {
   // With different top-level metadata that are not equivalent because of item 
keys
   buf.reset();
   ASSERT_EQ(ArrowMetadataBuilderInit(buf.get(), nullptr), NANOARROW_OK);
-  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), ArrowCharView("key2"),
-                                       ArrowCharView("value2")),
+  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), "key2"_asv, "value2"_asv),
             NANOARROW_OK);
-  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), ArrowCharView("key3"),
-                                       ArrowCharView("value1")),
+  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), "key3"_asv, "value1"_asv),
             NANOARROW_OK);
   ASSERT_EQ(ArrowSchemaSetMetadata(actual.get(), 
reinterpret_cast<char*>(buf->data)),
             NANOARROW_OK);
@@ -1634,11 +1625,9 @@ TEST(NanoarrowTestingTest, 
NanoarrowTestingTestMetadataComparison) {
   // Metadata that are not equal and contain duplicate keys
   buf.reset();
   ASSERT_EQ(ArrowMetadataBuilderInit(buf.get(), nullptr), NANOARROW_OK);
-  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), ArrowCharView("key2"),
-                                       ArrowCharView("value2")),
+  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), "key2"_asv, "value2"_asv),
             NANOARROW_OK);
-  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), ArrowCharView("key2"),
-                                       ArrowCharView("value2 again")),
+  ASSERT_EQ(ArrowMetadataBuilderAppend(buf.get(), "key2"_asv, "value2 
again"_asv),
             NANOARROW_OK);
   ASSERT_EQ(ArrowSchemaSetMetadata(actual.get(), 
reinterpret_cast<char*>(buf->data)),
             NANOARROW_OK);
@@ -1774,9 +1763,8 @@ TEST(NanoarrowTestingTest, 
NanoarrowTestingTestArrayWithDictionaryComparison) {
             NANOARROW_OK);
   ASSERT_EQ(ArrowArrayStartAppending(expected.get()), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayAppendInt(expected->children[0], 0), NANOARROW_OK);
-  ASSERT_EQ(
-      ArrowArrayAppendString(expected->children[0]->dictionary, 
ArrowCharView("abc")),
-      NANOARROW_OK);
+  ASSERT_EQ(ArrowArrayAppendString(expected->children[0]->dictionary, 
"abc"_asv),
+            NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishElement(expected.get()), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishBuildingDefault(expected.get(), nullptr), 
NANOARROW_OK);
 
@@ -1784,7 +1772,7 @@ TEST(NanoarrowTestingTest, 
NanoarrowTestingTestArrayWithDictionaryComparison) {
   ASSERT_EQ(ArrowArrayInitFromSchema(actual.get(), schema.get(), nullptr), 
NANOARROW_OK);
   ASSERT_EQ(ArrowArrayStartAppending(actual.get()), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayAppendInt(actual->children[0], 0), NANOARROW_OK);
-  ASSERT_EQ(ArrowArrayAppendString(actual->children[0]->dictionary, 
ArrowCharView("def")),
+  ASSERT_EQ(ArrowArrayAppendString(actual->children[0]->dictionary, "def"_asv),
             NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishElement(actual.get()), NANOARROW_OK);
   ASSERT_EQ(ArrowArrayFinishBuildingDefault(actual.get(), nullptr), 
NANOARROW_OK);
diff --git a/src/nanoarrow/schema_test.cc b/src/nanoarrow/schema_test.cc
index 8c23e606..175ea993 100644
--- a/src/nanoarrow/schema_test.cc
+++ b/src/nanoarrow/schema_test.cc
@@ -22,7 +22,7 @@
 #include <arrow/testing/gtest_util.h>
 #include <arrow/util/key_value_metadata.h>
 
-#include "nanoarrow/nanoarrow.h"
+#include "nanoarrow/nanoarrow.hpp"
 
 using namespace arrow;
 
@@ -1495,6 +1495,8 @@ TEST(SchemaViewTest, SchemaViewInitDictionaryErrors) {
 }
 
 TEST(SchemaViewTest, SchemaViewInitExtension) {
+  using namespace nanoarrow::literals;
+
   struct ArrowSchema schema;
   struct ArrowSchemaView schema_view;
   struct ArrowError error;
@@ -1506,18 +1508,16 @@ TEST(SchemaViewTest, SchemaViewInitExtension) {
   auto int_field = field("field_name", int32(), arrow_meta);
   ARROW_EXPECT_OK(ExportField(*int_field, &schema));
   EXPECT_EQ(ArrowSchemaViewInit(&schema_view, &schema, &error), NANOARROW_OK);
-  EXPECT_EQ(
-      std::string(schema_view.extension_name.data, 
schema_view.extension_name.size_bytes),
-      "arrow.test.ext_name");
-  EXPECT_EQ(std::string(schema_view.extension_metadata.data,
-                        schema_view.extension_metadata.size_bytes),
-            "test metadata");
+  EXPECT_EQ(schema_view.extension_name, "arrow.test.ext_name"_asv);
+  EXPECT_EQ(schema_view.extension_metadata, "test metadata"_asv);
   EXPECT_EQ(ArrowSchemaToStdString(&schema), "arrow.test.ext_name{int32}");
 
   ArrowSchemaRelease(&schema);
 }
 
 TEST(SchemaViewTest, SchemaViewInitExtensionDictionary) {
+  using namespace nanoarrow::literals;
+
   struct ArrowSchema schema;
   struct ArrowSchemaView schema_view;
   struct ArrowError error;
@@ -1531,12 +1531,8 @@ TEST(SchemaViewTest, SchemaViewInitExtensionDictionary) {
   EXPECT_EQ(ArrowSchemaViewInit(&schema_view, &schema, &error), NANOARROW_OK);
   EXPECT_EQ(schema_view.type, NANOARROW_TYPE_DICTIONARY);
   EXPECT_EQ(schema_view.storage_type, NANOARROW_TYPE_INT32);
-  EXPECT_EQ(
-      std::string(schema_view.extension_name.data, 
schema_view.extension_name.size_bytes),
-      "arrow.test.ext_name");
-  EXPECT_EQ(std::string(schema_view.extension_metadata.data,
-                        schema_view.extension_metadata.size_bytes),
-            "test metadata");
+  EXPECT_EQ(schema_view.extension_name, "arrow.test.ext_name"_asv);
+  EXPECT_EQ(schema_view.extension_metadata, "test metadata"_asv);
   EXPECT_EQ(ArrowSchemaToStdString(&schema),
             "arrow.test.ext_name{dictionary(int32)<string>}");
 
@@ -1576,6 +1572,8 @@ TEST(SchemaViewTest, SchemaFormatInvalid) {
 }
 
 TEST(MetadataTest, Metadata) {
+  using namespace nanoarrow::literals;
+
   // Encoded metadata string for "key": "value"
   std::string simple_metadata = SimpleMetadata();
 
@@ -1583,22 +1581,23 @@ TEST(MetadataTest, Metadata) {
   EXPECT_EQ(ArrowMetadataSizeOf(simple_metadata.data()),
             static_cast<int64_t>(simple_metadata.size()));
 
-  EXPECT_EQ(ArrowMetadataHasKey(simple_metadata.data(), ArrowCharView("key")), 
1);
-  EXPECT_EQ(ArrowMetadataHasKey(simple_metadata.data(), 
ArrowCharView("not_a_key")), 0);
+  EXPECT_EQ(ArrowMetadataHasKey(simple_metadata.data(), "key"_asv), 1);
+  EXPECT_EQ(ArrowMetadataHasKey(simple_metadata.data(), "not_a_key"_asv), 0);
 
-  struct ArrowStringView value = ArrowCharView("default_val");
-  EXPECT_EQ(ArrowMetadataGetValue(simple_metadata.data(), 
ArrowCharView("key"), &value),
+  struct ArrowStringView value = "default_val"_asv;
+  EXPECT_EQ(ArrowMetadataGetValue(simple_metadata.data(), "key"_asv, &value),
             NANOARROW_OK);
-  EXPECT_EQ(std::string(value.data, value.size_bytes), "value");
+  EXPECT_EQ(value, "value"_asv);
 
-  value = ArrowCharView("default_val");
-  EXPECT_EQ(
-      ArrowMetadataGetValue(simple_metadata.data(), 
ArrowCharView("not_a_key"), &value),
-      NANOARROW_OK);
-  EXPECT_EQ(std::string(value.data, value.size_bytes), "default_val");
+  value = "default_val"_asv;
+  EXPECT_EQ(ArrowMetadataGetValue(simple_metadata.data(), "not_a_key"_asv, 
&value),
+            NANOARROW_OK);
+  EXPECT_EQ(value, "default_val"_asv);
 }
 
 TEST(MetadataTest, MetadataBuild) {
+  using namespace nanoarrow::literals;
+
   // Encoded metadata string for "key": "value"
   std::string simple_metadata = SimpleMetadata();
 
@@ -1618,59 +1617,49 @@ TEST(MetadataTest, MetadataBuild) {
   EXPECT_EQ(metadata_builder.data, nullptr);
 
   // Recreate simple_metadata
-  ASSERT_EQ(ArrowMetadataBuilderAppend(&metadata_builder, ArrowCharView("key"),
-                                       ArrowCharView("value")),
+  ASSERT_EQ(ArrowMetadataBuilderAppend(&metadata_builder, "key"_asv, 
"value"_asv),
             NANOARROW_OK);
   ASSERT_EQ(metadata_builder.size_bytes, simple_metadata.size());
   EXPECT_EQ(memcmp(metadata_builder.data, simple_metadata.data(), 
simple_metadata.size()),
             0);
 
   // Remove a key that doesn't exist
-  ASSERT_EQ(ArrowMetadataBuilderRemove(&metadata_builder, 
ArrowCharView("key2")),
-            NANOARROW_OK);
+  ASSERT_EQ(ArrowMetadataBuilderRemove(&metadata_builder, "key2"_asv), 
NANOARROW_OK);
   ASSERT_EQ(metadata_builder.size_bytes, simple_metadata.size());
   EXPECT_EQ(
       memcmp(metadata_builder.data, simple_metadata.data(), 
metadata_builder.size_bytes),
       0);
 
   // Add a new key
-  ASSERT_EQ(ArrowMetadataBuilderSet(&metadata_builder, ArrowCharView("key2"),
-                                    ArrowCharView("value2")),
+  ASSERT_EQ(ArrowMetadataBuilderSet(&metadata_builder, "key2"_asv, 
"value2"_asv),
             NANOARROW_OK);
   EXPECT_EQ(metadata_builder.size_bytes,
             simple_metadata.size() + sizeof(int32_t) + 4 + sizeof(int32_t) + 
6);
 
   struct ArrowStringView value = ArrowCharView(nullptr);
-  ASSERT_EQ(ArrowMetadataGetValue((const char*)metadata_builder.data,
-                                  ArrowCharView("key2"), &value),
+  ASSERT_EQ(ArrowMetadataGetValue((const char*)metadata_builder.data, 
"key2"_asv, &value),
             NANOARROW_OK);
-  EXPECT_EQ(std::string(value.data, value.size_bytes), "value2");
+  EXPECT_EQ(value, "value2"_asv);
 
   // Set an existing key
-  ASSERT_EQ(ArrowMetadataBuilderSet(&metadata_builder, ArrowCharView("key"),
-                                    ArrowCharView("value3")),
+  ASSERT_EQ(ArrowMetadataBuilderSet(&metadata_builder, "key"_asv, 
"value3"_asv),
             NANOARROW_OK);
   value = ArrowCharView(nullptr);
-  ASSERT_EQ(ArrowMetadataGetValue((const char*)metadata_builder.data,
-                                  ArrowCharView("key"), &value),
+  ASSERT_EQ(ArrowMetadataGetValue((const char*)metadata_builder.data, 
"key"_asv, &value),
             NANOARROW_OK);
-  EXPECT_EQ(std::string(value.data, value.size_bytes), "value3");
+  EXPECT_EQ(value, "value3"_asv);
   value = ArrowCharView(nullptr);
-  ASSERT_EQ(ArrowMetadataGetValue((const char*)metadata_builder.data,
-                                  ArrowCharView("key2"), &value),
+  ASSERT_EQ(ArrowMetadataGetValue((const char*)metadata_builder.data, 
"key2"_asv, &value),
             NANOARROW_OK);
-  EXPECT_EQ(std::string(value.data, value.size_bytes), "value2");
+  EXPECT_EQ(value, "value2"_asv);
 
   // Remove a key that does exist
-  ASSERT_EQ(ArrowMetadataBuilderRemove(&metadata_builder, 
ArrowCharView("key")),
-            NANOARROW_OK);
-  EXPECT_EQ(ArrowMetadataHasKey((const char*)metadata_builder.data, 
ArrowCharView("key")),
-            false);
+  ASSERT_EQ(ArrowMetadataBuilderRemove(&metadata_builder, "key"_asv), 
NANOARROW_OK);
+  EXPECT_EQ(ArrowMetadataHasKey((const char*)metadata_builder.data, 
"key"_asv), false);
   value = ArrowCharView(nullptr);
-  ASSERT_EQ(ArrowMetadataGetValue((const char*)metadata_builder.data,
-                                  ArrowCharView("key2"), &value),
+  ASSERT_EQ(ArrowMetadataGetValue((const char*)metadata_builder.data, 
"key2"_asv, &value),
             NANOARROW_OK);
-  EXPECT_EQ(std::string(value.data, value.size_bytes), "value2");
+  EXPECT_EQ(value, "value2"_asv);
 
   ArrowBufferReset(&metadata_builder);
 }
diff --git a/src/nanoarrow/utils_test.cc b/src/nanoarrow/utils_test.cc
index 3a63df4d..6a753da0 100644
--- a/src/nanoarrow/utils_test.cc
+++ b/src/nanoarrow/utils_test.cc
@@ -286,6 +286,8 @@ TEST(DecimalTest, Decimal128Test) {
 }
 
 TEST(DecimalTest, DecimalNegateTest) {
+  using namespace nanoarrow::literals;
+
   struct ArrowDecimal decimal;
   struct ArrowBuffer buffer;
   ArrowBufferInit(&buffer);
@@ -312,9 +314,9 @@ TEST(DecimalTest, DecimalNegateTest) {
               std::numeric_limits<uint64_t>::max());
 
     // Check with a large value that fits in the 128 bit size
-    ASSERT_EQ(ArrowDecimalSetDigits(
-                  &decimal, 
ArrowCharView("123456789012345678901234567890123456789")),
-              NANOARROW_OK);
+    ASSERT_EQ(
+        ArrowDecimalSetDigits(&decimal, 
"123456789012345678901234567890123456789"_asv),
+        NANOARROW_OK);
     ArrowDecimalNegate(&decimal);
 
     buffer.size_bytes = 0;
@@ -341,6 +343,8 @@ TEST(DecimalTest, DecimalNegateTest) {
 }
 
 TEST(DecimalTest, Decimal256Test) {
+  using namespace nanoarrow::literals;
+
   struct ArrowDecimal decimal;
   ArrowDecimalInit(&decimal, 256, 10, 3);
 
@@ -378,6 +382,8 @@ TEST(DecimalTest, Decimal256Test) {
 }
 
 TEST(DecimalTest, DecimalStringTestBasic) {
+  using namespace nanoarrow::literals;
+
   struct ArrowDecimal decimal;
   ArrowDecimalInit(&decimal, 128, 39, 0);
 
@@ -385,7 +391,7 @@ TEST(DecimalTest, DecimalStringTestBasic) {
   ArrowBufferInit(&buffer);
 
   // Only spans one 32-bit word
-  ASSERT_EQ(ArrowDecimalSetDigits(&decimal, ArrowCharView("123456")), 
NANOARROW_OK);
+  ASSERT_EQ(ArrowDecimalSetDigits(&decimal, "123456"_asv), NANOARROW_OK);
   EXPECT_EQ(ArrowDecimalGetIntUnsafe(&decimal), 123456);
 
   // Check roundtrip to string
@@ -395,7 +401,7 @@ TEST(DecimalTest, DecimalStringTestBasic) {
             "123456");
 
   // Negative value
-  ASSERT_EQ(ArrowDecimalSetDigits(&decimal, ArrowCharView("-123456")), 
NANOARROW_OK);
+  ASSERT_EQ(ArrowDecimalSetDigits(&decimal, "-123456"_asv), NANOARROW_OK);
   EXPECT_EQ(ArrowDecimalGetIntUnsafe(&decimal), -123456);
 
   // Check roundtrip to string
@@ -405,7 +411,7 @@ TEST(DecimalTest, DecimalStringTestBasic) {
             "-123456");
 
   // Spans >1 32-bit word
-  ASSERT_EQ(ArrowDecimalSetDigits(&decimal, ArrowCharView("1234567899")), 
NANOARROW_OK);
+  ASSERT_EQ(ArrowDecimalSetDigits(&decimal, "1234567899"_asv), NANOARROW_OK);
   EXPECT_EQ(ArrowDecimalGetIntUnsafe(&decimal), 1234567899L);
 
   // Check roundtrip to string
@@ -415,8 +421,7 @@ TEST(DecimalTest, DecimalStringTestBasic) {
             "1234567899");
 
   // Check maximum value of a 64-bit integer
-  ASSERT_EQ(ArrowDecimalSetDigits(&decimal, 
ArrowCharView("18446744073709551615")),
-            NANOARROW_OK);
+  ASSERT_EQ(ArrowDecimalSetDigits(&decimal, "18446744073709551615"_asv), 
NANOARROW_OK);
   EXPECT_EQ(decimal.words[decimal.low_word_index], 
std::numeric_limits<uint64_t>::max());
   EXPECT_EQ(decimal.words[decimal.high_word_index], 0);
 
@@ -427,9 +432,9 @@ TEST(DecimalTest, DecimalStringTestBasic) {
             "18446744073709551615");
 
   // Check with the maximum value of a signed 128-bit integer
-  ASSERT_EQ(ArrowDecimalSetDigits(
-                &decimal, 
ArrowCharView("170141183460469231731687303715884105727")),
-            NANOARROW_OK);
+  ASSERT_EQ(
+      ArrowDecimalSetDigits(&decimal, 
"170141183460469231731687303715884105727"_asv),
+      NANOARROW_OK);
   EXPECT_EQ(decimal.words[decimal.low_word_index], 
std::numeric_limits<uint64_t>::max());
   EXPECT_EQ(decimal.words[decimal.high_word_index], 
std::numeric_limits<int64_t>::max());
 
@@ -457,10 +462,11 @@ TEST(DecimalTest, DecimalStringTestBasic) {
 }
 
 TEST(DecimalTest, DecimalStringTestInvalid) {
+  using namespace nanoarrow::literals;
+
   struct ArrowDecimal decimal;
   ArrowDecimalInit(&decimal, 128, 39, 0);
-  EXPECT_EQ(ArrowDecimalSetDigits(&decimal, ArrowCharView("this is not an 
integer")),
-            EINVAL);
+  EXPECT_EQ(ArrowDecimalSetDigits(&decimal, "this is not an integer"_asv), 
EINVAL);
 }
 
 TEST(DecimalTest, DecimalRoundtripPowerOfTenTest) {


Reply via email to