From e05975ebc52dd6811ecdb94b139fba37bddbe77d Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Thu, 21 Mar 2024 22:29:30 -0400 Subject: [PATCH] cpp-common/bt2c: add `format_as()` functions for `Uuid` and `UuidView` Change-Id: I6530144e78d6aa10dedb320b90a4c208aa572e9d Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/12138 Reviewed-by: Philippe Proulx Tested-by: jenkins --- src/cpp-common/bt2c/fmt.hpp | 10 ++++++++++ tests/Makefile.am | 13 ++++++++++++- tests/cpp-common/test-uuid.cpp | 35 ++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 tests/cpp-common/test-uuid.cpp diff --git a/src/cpp-common/bt2c/fmt.hpp b/src/cpp-common/bt2c/fmt.hpp index 8db4b1b6..8af3d71e 100644 --- a/src/cpp-common/bt2c/fmt.hpp +++ b/src/cpp-common/bt2c/fmt.hpp @@ -6,6 +6,7 @@ #include "common/common.h" #include "cpp-common/bt2/message.hpp" +#include "cpp-common/bt2c/uuid.hpp" #include "cpp-common/vendor/fmt/format.h" /* IWYU pragma: keep */ namespace bt2 { @@ -16,3 +17,12 @@ inline const char *format_as(const MessageType type) } } /* namespace bt2 */ + +namespace bt2c { + +inline std::string format_as(const UuidView uuid) +{ + return uuid.str(); +} + +} /* namespace bt2c */ diff --git a/tests/Makefile.am b/tests/Makefile.am index 88c385e0..6136c771 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -100,8 +100,19 @@ cpp_common_test_c_string_view_SOURCES = \ cpp_common_test_c_string_view_LDADD = \ $(COMMON_TEST_LDADD) +noinst_PROGRAMS += \ + cpp-common/test-uuid + +cpp_common_test_uuid_SOURCES = \ + cpp-common/test-uuid.cpp + +cpp_common_test_uuid_LDADD = \ + $(COMMON_TEST_LDADD) \ + $(top_builddir)/src/cpp-common/vendor/fmt/libfmt.la + TESTS_CPP_COMMON = \ - cpp-common/test-c-string-view + cpp-common/test-c-string-view \ + cpp-common/test-uuid TESTS_LIB = \ lib/test-bt-uuid \ diff --git a/tests/cpp-common/test-uuid.cpp b/tests/cpp-common/test-uuid.cpp new file mode 100644 index 00000000..a84ed382 --- /dev/null +++ b/tests/cpp-common/test-uuid.cpp @@ -0,0 +1,35 @@ +/* + * SPDX-License-Identifier: GPL-2.0-only + * + * Copyright (C) 2024 EfficiOS, Inc. + */ + +#include "cpp-common/bt2c/fmt.hpp" +#include "cpp-common/bt2c/uuid.hpp" +#include "cpp-common/vendor/fmt/format.h" + +#include "tap/tap.h" + +namespace { + +constexpr auto uuidStr = "c2281e4a-699b-4b78-903f-2f8407fe2b77"; +const bt2c::Uuid uuid {uuidStr}; +const bt2c::UuidView uuidView {uuid}; + +void testFormatAs() +{ + const auto resUuid = fmt::to_string(uuid); + const auto resUuidView = fmt::to_string(uuidView); + + ok(resUuid == uuidStr, "result of format_as() for `Uuid` is expected"); + ok(resUuidView == uuidStr, "result of format_as() for `UuidView` is expected"); +} + +} /* namespace */ + +int main() +{ + plan_tests(2); + testFormatAs(); + return exit_status(); +} -- 2.34.1