mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-07 12:01:16 +00:00
Small readability improvements in Parser
Also add a test for a parser with no data
This commit is contained in:

committed by
Jesse Beder

parent
72f699f5ce
commit
5b3e30bfe9
@@ -18,7 +18,7 @@ Parser::Parser(std::istream& in) : Parser() { Load(in); }
|
||||
Parser::~Parser() = default;
|
||||
|
||||
Parser::operator bool() const {
|
||||
return m_pScanner.get() && !m_pScanner->empty();
|
||||
return m_pScanner && !m_pScanner->empty();
|
||||
}
|
||||
|
||||
void Parser::Load(std::istream& in) {
|
||||
@@ -27,7 +27,7 @@ void Parser::Load(std::istream& in) {
|
||||
}
|
||||
|
||||
bool Parser::HandleNextDocument(EventHandler& eventHandler) {
|
||||
if (!m_pScanner.get())
|
||||
if (!m_pScanner)
|
||||
return false;
|
||||
|
||||
ParseDirectives();
|
||||
@@ -43,11 +43,7 @@ bool Parser::HandleNextDocument(EventHandler& eventHandler) {
|
||||
void Parser::ParseDirectives() {
|
||||
bool readDirective = false;
|
||||
|
||||
while (1) {
|
||||
if (m_pScanner->empty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
while (!m_pScanner->empty()) {
|
||||
Token& token = m_pScanner->peek();
|
||||
if (token.type != Token::DIRECTIVE) {
|
||||
break;
|
||||
@@ -113,15 +109,11 @@ void Parser::HandleTagDirective(const Token& token) {
|
||||
}
|
||||
|
||||
void Parser::PrintTokens(std::ostream& out) {
|
||||
if (!m_pScanner.get()) {
|
||||
if (!m_pScanner) {
|
||||
return;
|
||||
}
|
||||
|
||||
while (1) {
|
||||
if (m_pScanner->empty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
while (!m_pScanner->empty()) {
|
||||
out << m_pScanner->peek() << "\n";
|
||||
m_pScanner->pop();
|
||||
}
|
||||
|
@@ -1,8 +1,11 @@
|
||||
#include "yaml-cpp/emitterstyle.h"
|
||||
#include "yaml-cpp/eventhandler.h"
|
||||
#include "yaml-cpp/mark.h"
|
||||
|
||||
#include "gmock/gmock.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace YAML {
|
||||
|
||||
class MockEventHandler : public EventHandler {
|
||||
|
16
test/parser_test.cpp
Normal file
16
test/parser_test.cpp
Normal file
@@ -0,0 +1,16 @@
|
||||
#include "yaml-cpp/parser.h"
|
||||
#include "mock_event_handler.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
using YAML::Parser;
|
||||
using YAML::MockEventHandler;
|
||||
using ::testing::StrictMock;
|
||||
|
||||
TEST(ParserTest, Empty) {
|
||||
Parser parser;
|
||||
|
||||
EXPECT_FALSE(parser);
|
||||
|
||||
StrictMock<MockEventHandler> handler;
|
||||
EXPECT_FALSE(parser.HandleNextDocument(handler));
|
||||
}
|
Reference in New Issue
Block a user