mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2026-02-19 14:46:28 +00:00
Feat/fix faulty string (#1406)
This commit is contained in:
committed by
GitHub
parent
44d54544b1
commit
97d150e98b
@@ -89,6 +89,7 @@ const char* const INVALID_ANCHOR = "invalid anchor";
|
||||
const char* const INVALID_ALIAS = "invalid alias";
|
||||
const char* const INVALID_TAG = "invalid tag";
|
||||
const char* const BAD_FILE = "bad file";
|
||||
const char* const UNEXPECTED_TOKEN_AFTER_DOC = "unexpected token after end of document";
|
||||
|
||||
template <typename T>
|
||||
inline const std::string KEY_NOT_FOUND_WITH_KEY(
|
||||
|
||||
@@ -41,8 +41,13 @@ void SingleDocParser::HandleDocument(EventHandler& eventHandler) {
|
||||
|
||||
eventHandler.OnDocumentEnd();
|
||||
|
||||
// check if any tokens left after the text
|
||||
if (!m_scanner.empty() && m_scanner.peek().type != Token::DOC_END
|
||||
&& m_scanner.peek().type != Token::DOC_START)
|
||||
throw ParserException(m_scanner.mark(), ErrorMsg::UNEXPECTED_TOKEN_AFTER_DOC);
|
||||
|
||||
// and finally eat any doc ends we see
|
||||
while (!m_scanner.empty() && m_scanner.peek().type == Token::DOC_END)
|
||||
if (!m_scanner.empty() && m_scanner.peek().type == Token::DOC_END)
|
||||
m_scanner.pop();
|
||||
}
|
||||
|
||||
|
||||
@@ -375,11 +375,21 @@ TEST(NodeTest, InfiniteLoopNodes) {
|
||||
EXPECT_THROW(LoadAll(R"(,)"), ParserException);
|
||||
}
|
||||
|
||||
TEST(NodeTest, MultipleDocuments) {
|
||||
TEST(NodeTest, MultipleDocumentsBeginning) {
|
||||
std::vector<Node> docs = LoadAll("\n---\n---\nA\n");
|
||||
EXPECT_EQ(docs.size(), 2);
|
||||
}
|
||||
|
||||
TEST(NodeTest, MultipleDocumentsEnds) {
|
||||
std::vector<Node> docs = LoadAll("\n...\nA\n...\n");
|
||||
EXPECT_EQ(docs.size(), 2);
|
||||
}
|
||||
|
||||
TEST(NodeTest, MultipleDocumentsEndsWithEmptyDocs) {
|
||||
std::vector<Node> docs = LoadAll("\n...\nA\n...\n...\nB\n...");
|
||||
EXPECT_EQ(docs.size(), 4);
|
||||
}
|
||||
|
||||
struct NewLineStringsTestCase {
|
||||
std::string input;
|
||||
std::string expected_content;
|
||||
@@ -451,6 +461,10 @@ TEST(LoadNodeTest, BlockCREncoded) {
|
||||
EXPECT_EQ(1, node["followup"].as<int>());
|
||||
}
|
||||
|
||||
TEST(LoadNodeTest, IncorrectSeqEnd) {
|
||||
EXPECT_THROW(Load("[foo]_bar"), ParserException);
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
||||
} // namespace YAML
|
||||
|
||||
Reference in New Issue
Block a user