You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include "yaml-cpp/yaml.h" // IWYU pragma: keep
#include "gtest/gtest.h"
#define EXPECT_THROW_EXCEPTION(exception_type, statement, message) \
ASSERT_THROW(statement, exception_type); \ try { \ statement; \ } catch (const exception_type& e) { \ EXPECT_EQ(e.msg, message); \ }
namespace YAML { namespace {
TEST(ErrorMessageTest, BadSubscriptErrorMessage) { const char *example_yaml = "first:\n" " second: 1\n" " third: 2\n";
Node doc = Load(example_yaml);
// Test that printable key is part of error message
EXPECT_THROW_EXCEPTION(YAML::BadSubscript, doc["first"]["second"]["fourth"], "operator[] call on a scalar (key: \"fourth\")"); EXPECT_THROW_EXCEPTION(YAML::BadSubscript, doc["first"]["second"][37], "operator[] call on a scalar (key: \"37\")");
// Non-printable key is not included in error message
EXPECT_THROW_EXCEPTION(YAML::BadSubscript, doc["first"]["second"][std::vector<int>()], "operator[] call on a scalar");
EXPECT_THROW_EXCEPTION(YAML::BadSubscript, doc["first"]["second"][Node()], "operator[] call on a scalar"); }
TEST(ErrorMessageTest, Ex9_1_InvalidNodeErrorMessage) { const char *example_yaml = "first:\n" " second: 1\n" " third: 2\n";
const Node doc = Load(example_yaml);
// Test that printable key is part of error message
EXPECT_THROW_EXCEPTION(YAML::InvalidNode, doc["first"]["fourth"].as<int>(), "invalid node; first invalid key: \"fourth\""); EXPECT_THROW_EXCEPTION(YAML::InvalidNode, doc["first"][37].as<int>(), "invalid node; first invalid key: \"37\""); // Non-printable key is not included in error message
EXPECT_THROW_EXCEPTION(YAML::InvalidNode, doc["first"][std::vector<int>()].as<int>(), "invalid node; this may result from using a map " "iterator as a sequence iterator, or vice-versa"); } } }
|