Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / histogram / test / axis_variant_test.cpp
index 7512f79..016b592 100644 (file)
 #include <boost/histogram/axis/ostream.hpp>
 #include <boost/histogram/axis/regular.hpp>
 #include <boost/histogram/axis/variant.hpp>
-#include <boost/histogram/detail/cat.hpp>
 #include <boost/histogram/detail/type_name.hpp>
-#include <sstream>
 #include <string>
 #include <type_traits>
 #include <vector>
 #include "throw_exception.hpp"
 #include "utility_allocator.hpp"
 #include "utility_axis.hpp"
-
-using namespace boost::histogram;
-namespace tr = axis::transform;
+#include "utility_str.hpp"
 
 int main() {
-  { (void)axis::variant<>{}; }
+  using namespace boost::histogram;
+  namespace tr = axis::transform;
+
+  {
+    (void)axis::variant<>{};
+  }
 
   {
     using meta_type = std::vector<int>;
@@ -124,17 +125,15 @@ int main() {
     auto test = [](auto&& a, const char* ref) {
       using T = std::decay_t<decltype(a)>;
       axis::variant<T> axis(std::move(a));
-      std::ostringstream os;
-      os << axis;
-      BOOST_TEST_EQ(os.str(), std::string(ref));
+      BOOST_TEST_CSTR_EQ(str(axis).c_str(), ref);
     };
 
     test(axis::regular<>(2, -1, 1, "regular1"),
          "regular(2, -1, 1, metadata=\"regular1\", options=underflow | overflow)");
 
     struct user_defined {};
-    const auto ref = detail::cat(
-        "integer(-1, 1, metadata=", detail::type_name<user_defined>(), ", options=none)");
+    const auto ref = "integer(-1, 1, metadata=" + detail::type_name<user_defined>() +
+                     ", options=none)";
     test(axis::integer<int, user_defined, axis::option::none_t>(-1, 1), ref.c_str());
   }
 
@@ -143,9 +142,7 @@ int main() {
     auto test = [](auto&& a, const char* ref) {
       using T = std::decay_t<decltype(a)>;
       axis::variant<T> axis(std::move(a));
-      std::ostringstream os;
-      os << axis.bin(0);
-      BOOST_TEST_EQ(os.str(), std::string(ref));
+      BOOST_TEST_CSTR_EQ(str(axis.bin(0)).c_str(), ref);
     };
 
     test(axis::regular<>(2, 1, 2), "[1, 1.5)");
@@ -194,7 +191,7 @@ int main() {
     BOOST_TEST_EQ(axis.index(9), 1);
     BOOST_TEST_EQ(axis.size(), 2);
     BOOST_TEST_EQ(axis.metadata(), axis::null_type{});
-    BOOST_TEST_THROWS(std::ostringstream() << axis, std::runtime_error);
+    BOOST_TEST_CSTR_EQ(str(axis).c_str(), "<unstreamable>");
     BOOST_TEST_THROWS(axis.value(0), std::runtime_error);
 
     axis = axis::category<std::string>({"A", "B"}, "category");