summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/json/test/error.cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
commite6918187568dbd01842d8d1d2c808ce16a894239 (patch)
tree64f88b554b444a49f656b6c656111a145cbbaa28 /src/boost/libs/json/test/error.cpp
parentInitial commit. (diff)
downloadceph-upstream/18.2.2.tar.xz
ceph-upstream/18.2.2.zip
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/json/test/error.cpp')
-rw-r--r--src/boost/libs/json/test/error.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/boost/libs/json/test/error.cpp b/src/boost/libs/json/test/error.cpp
new file mode 100644
index 000000000..dc267159c
--- /dev/null
+++ b/src/boost/libs/json/test/error.cpp
@@ -0,0 +1,88 @@
+//
+// Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// Official repository: https://github.com/boostorg/json
+//
+
+// Test that header file is self-contained.
+#include <boost/json/error.hpp>
+
+#include <memory>
+
+#include "test_suite.hpp"
+
+BOOST_JSON_NS_BEGIN
+
+class error_test
+{
+public:
+ void check(error e)
+ {
+ auto const ec = make_error_code(e);
+ BOOST_TEST(ec.category().name() != nullptr);
+ BOOST_TEST(! ec.message().empty());
+ BOOST_TEST(ec.category().default_error_condition(
+ static_cast<int>(e)).category() == ec.category());
+ }
+
+ void check(condition c, error e)
+ {
+ {
+ auto const ec = make_error_code(e);
+ BOOST_TEST(ec.category().name() != nullptr);
+ BOOST_TEST(! ec.message().empty());
+ BOOST_TEST(ec == c);
+ }
+ {
+ auto ec = make_error_condition(c);
+ BOOST_TEST(ec.category().name() != nullptr);
+ BOOST_TEST(! ec.message().empty());
+ BOOST_TEST(ec == c);
+ }
+ }
+
+ void
+ run()
+ {
+ check(condition::parse_error, error::syntax);
+ check(condition::parse_error, error::extra_data);
+ check(condition::parse_error, error::incomplete);
+ check(condition::parse_error, error::exponent_overflow);
+ check(condition::parse_error, error::too_deep);
+ check(condition::parse_error, error::illegal_leading_surrogate);
+ check(condition::parse_error, error::illegal_trailing_surrogate);
+ check(condition::parse_error, error::expected_hex_digit);
+ check(condition::parse_error, error::expected_utf16_escape);
+ check(condition::parse_error, error::object_too_large);
+ check(condition::parse_error, error::array_too_large);
+ check(condition::parse_error, error::key_too_large);
+ check(condition::parse_error, error::string_too_large);
+ check(condition::parse_error, error::exception);
+
+ check(condition::assign_error, error::not_number);
+ check(condition::assign_error, error::not_exact);
+
+ check(condition::pointer_parse_error, error::missing_slash);
+ check(condition::pointer_parse_error, error::invalid_escape);
+
+ check(condition::pointer_use_error, error::token_not_number);
+ check(condition::pointer_use_error, error::value_is_scalar);
+ check(condition::pointer_use_error, error::not_found);
+ check(condition::pointer_use_error, error::token_overflow);
+ check(condition::pointer_use_error, error::past_the_end);
+
+ check(error::test_failure);
+
+ // check std interop
+ std::error_code const ec = error::syntax;
+ BOOST_TEST(ec == error::syntax);
+ BOOST_TEST(ec == condition::parse_error);
+ }
+};
+
+TEST_SUITE(error_test, "boost.json.error");
+
+BOOST_JSON_NS_END