How to Use the Fmt Library To Print Objects
Introduction
{fmt} is a useful library for printing objects with many default types formatted out of the box.
Usage
Simply use FmtApprovals::
For example, vectors are not ostream (<<)
printable by default.
However, they are with {fmt}. so :
std::vector<int> numbers = {1, 2, 3};
ApprovalTests::FmtApprovals::verify(numbers);
(See snippet source)
This will produce the following output:
{1, 2, 3}
(See snippet source)
note: it is important that we included fmt before approvaltests.
#include <fmt/ranges.h>
(See snippet source)
Installation
Bring your own
ApprovalTests assumes you will add the {fmt} library before
including ApprovalTests.hpp
. As such it makes no assumptions about
fmt. We suggest you read their
docs.
If you would like to see how we added fmt to our build, check out:
target_link_libraries(${PROJECT_NAME} fmt::fmt)
(See snippet source)
Set as default for Approvals
If you wish, you can set FmtApprovals to be the default Approvals with
the following line before including ApprovalTests.hpp
#define APPROVAL_TESTS_DEFAULT_STREAM_CONVERTER FmtToString
(See snippet source)