Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
yaml-cpp
Commits
eca9cfd6
Commit
eca9cfd6
authored
Mar 12, 2019
by
caryoscelus
Committed by
Jesse Beder
Mar 12, 2019
Browse files
Add optional OnAnchor method to EventHandler (#530)
ref #110
parent
a2a113c6
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
729 additions
and
516 deletions
+729
-516
include/yaml-cpp/eventhandler.h
include/yaml-cpp/eventhandler.h
+6
-1
src/singledocparser.cpp
src/singledocparser.cpp
+12
-5
src/singledocparser.h
src/singledocparser.h
+4
-3
test/create-emitter-tests.py
test/create-emitter-tests.py
+16
-4
test/integration/gen_emitter_test.cpp
test/integration/gen_emitter_test.cpp
+677
-500
test/integration/handler_spec_test.cpp
test/integration/handler_spec_test.cpp
+12
-2
test/mock_event_handler.h
test/mock_event_handler.h
+2
-1
No files found.
include/yaml-cpp/eventhandler.h
View file @
eca9cfd6
...
@@ -34,7 +34,12 @@ class EventHandler {
...
@@ -34,7 +34,12 @@ class EventHandler {
virtual
void
OnMapStart
(
const
Mark
&
mark
,
const
std
::
string
&
tag
,
virtual
void
OnMapStart
(
const
Mark
&
mark
,
const
std
::
string
&
tag
,
anchor_t
anchor
,
EmitterStyle
::
value
style
)
=
0
;
anchor_t
anchor
,
EmitterStyle
::
value
style
)
=
0
;
virtual
void
OnMapEnd
()
=
0
;
virtual
void
OnMapEnd
()
=
0
;
virtual
void
OnAnchor
(
const
Mark
&
/*mark*/
,
const
std
::
string
&
/*anchor_name*/
)
{
// empty default implementation for compatibility
}
};
};
}
}
// namespace YAML
#endif // EVENTHANDLER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#endif // EVENTHANDLER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
src/singledocparser.cpp
View file @
eca9cfd6
...
@@ -71,8 +71,12 @@ void SingleDocParser::HandleNode(EventHandler& eventHandler) {
...
@@ -71,8 +71,12 @@ void SingleDocParser::HandleNode(EventHandler& eventHandler) {
}
}
std
::
string
tag
;
std
::
string
tag
;
std
::
string
anchor_name
;
anchor_t
anchor
;
anchor_t
anchor
;
ParseProperties
(
tag
,
anchor
);
ParseProperties
(
tag
,
anchor
,
anchor_name
);
if
(
!
anchor_name
.
empty
())
eventHandler
.
OnAnchor
(
mark
,
anchor_name
);
const
Token
&
token
=
m_scanner
.
peek
();
const
Token
&
token
=
m_scanner
.
peek
();
...
@@ -356,8 +360,10 @@ void SingleDocParser::HandleCompactMapWithNoKey(EventHandler& eventHandler) {
...
@@ -356,8 +360,10 @@ void SingleDocParser::HandleCompactMapWithNoKey(EventHandler& eventHandler) {
// ParseProperties
// ParseProperties
// . Grabs any tag or anchor tokens and deals with them.
// . Grabs any tag or anchor tokens and deals with them.
void
SingleDocParser
::
ParseProperties
(
std
::
string
&
tag
,
anchor_t
&
anchor
)
{
void
SingleDocParser
::
ParseProperties
(
std
::
string
&
tag
,
anchor_t
&
anchor
,
std
::
string
&
anchor_name
)
{
tag
.
clear
();
tag
.
clear
();
anchor_name
.
clear
();
anchor
=
NullAnchor
;
anchor
=
NullAnchor
;
while
(
1
)
{
while
(
1
)
{
...
@@ -369,7 +375,7 @@ void SingleDocParser::ParseProperties(std::string& tag, anchor_t& anchor) {
...
@@ -369,7 +375,7 @@ void SingleDocParser::ParseProperties(std::string& tag, anchor_t& anchor) {
ParseTag
(
tag
);
ParseTag
(
tag
);
break
;
break
;
case
Token
::
ANCHOR
:
case
Token
::
ANCHOR
:
ParseAnchor
(
anchor
);
ParseAnchor
(
anchor
,
anchor_name
);
break
;
break
;
default:
default:
return
;
return
;
...
@@ -387,11 +393,12 @@ void SingleDocParser::ParseTag(std::string& tag) {
...
@@ -387,11 +393,12 @@ void SingleDocParser::ParseTag(std::string& tag) {
m_scanner
.
pop
();
m_scanner
.
pop
();
}
}
void
SingleDocParser
::
ParseAnchor
(
anchor_t
&
anchor
)
{
void
SingleDocParser
::
ParseAnchor
(
anchor_t
&
anchor
,
std
::
string
&
anchor_name
)
{
Token
&
token
=
m_scanner
.
peek
();
Token
&
token
=
m_scanner
.
peek
();
if
(
anchor
)
if
(
anchor
)
throw
ParserException
(
token
.
mark
,
ErrorMsg
::
MULTIPLE_ANCHORS
);
throw
ParserException
(
token
.
mark
,
ErrorMsg
::
MULTIPLE_ANCHORS
);
anchor_name
=
token
.
value
;
anchor
=
RegisterAnchor
(
token
.
value
);
anchor
=
RegisterAnchor
(
token
.
value
);
m_scanner
.
pop
();
m_scanner
.
pop
();
}
}
...
@@ -411,4 +418,4 @@ anchor_t SingleDocParser::LookupAnchor(const Mark& mark,
...
@@ -411,4 +418,4 @@ anchor_t SingleDocParser::LookupAnchor(const Mark& mark,
return
it
->
second
;
return
it
->
second
;
}
}
}
}
// namespace YAML
src/singledocparser.h
View file @
eca9cfd6
...
@@ -43,9 +43,10 @@ class SingleDocParser : private noncopyable {
...
@@ -43,9 +43,10 @@ class SingleDocParser : private noncopyable {
void
HandleCompactMap
(
EventHandler
&
eventHandler
);
void
HandleCompactMap
(
EventHandler
&
eventHandler
);
void
HandleCompactMapWithNoKey
(
EventHandler
&
eventHandler
);
void
HandleCompactMapWithNoKey
(
EventHandler
&
eventHandler
);
void
ParseProperties
(
std
::
string
&
tag
,
anchor_t
&
anchor
);
void
ParseProperties
(
std
::
string
&
tag
,
anchor_t
&
anchor
,
std
::
string
&
anchor_name
);
void
ParseTag
(
std
::
string
&
tag
);
void
ParseTag
(
std
::
string
&
tag
);
void
ParseAnchor
(
anchor_t
&
anchor
);
void
ParseAnchor
(
anchor_t
&
anchor
,
std
::
string
&
anchor_name
);
anchor_t
RegisterAnchor
(
const
std
::
string
&
name
);
anchor_t
RegisterAnchor
(
const
std
::
string
&
name
);
anchor_t
LookupAnchor
(
const
Mark
&
mark
,
const
std
::
string
&
name
)
const
;
anchor_t
LookupAnchor
(
const
Mark
&
mark
,
const
std
::
string
&
name
)
const
;
...
@@ -60,6 +61,6 @@ class SingleDocParser : private noncopyable {
...
@@ -60,6 +61,6 @@ class SingleDocParser : private noncopyable {
anchor_t
m_curAnchor
;
anchor_t
m_curAnchor
;
};
};
}
}
// namespace YAML
#endif // SINGLEDOCPARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#endif // SINGLEDOCPARSER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
test/create-emitter-tests.py
View file @
eca9cfd6
...
@@ -35,10 +35,12 @@ def doc_end(implicit=False):
...
@@ -35,10 +35,12 @@ def doc_end(implicit=False):
def
scalar
(
value
,
tag
=
''
,
anchor
=
''
,
anchor_id
=
0
):
def
scalar
(
value
,
tag
=
''
,
anchor
=
''
,
anchor_id
=
0
):
emit
=
[]
emit
=
[]
handle
=
[]
if
tag
:
if
tag
:
emit
+=
[
'VerbatimTag("%s")'
%
encode
(
tag
)]
emit
+=
[
'VerbatimTag("%s")'
%
encode
(
tag
)]
if
anchor
:
if
anchor
:
emit
+=
[
'Anchor("%s")'
%
encode
(
anchor
)]
emit
+=
[
'Anchor("%s")'
%
encode
(
anchor
)]
handle
+=
[
'OnAnchor(_, "%s")'
%
encode
(
anchor
)]
if
tag
:
if
tag
:
out_tag
=
encode
(
tag
)
out_tag
=
encode
(
tag
)
else
:
else
:
...
@@ -47,39 +49,46 @@ def scalar(value, tag='', anchor='', anchor_id=0):
...
@@ -47,39 +49,46 @@ def scalar(value, tag='', anchor='', anchor_id=0):
else
:
else
:
out_tag
=
'!'
out_tag
=
'!'
emit
+=
[
'"%s"'
%
encode
(
value
)]
emit
+=
[
'"%s"'
%
encode
(
value
)]
return
{
'emit'
:
emit
,
'handle'
:
'OnScalar(_, "%s", %s, "%s")'
%
(
out_tag
,
anchor_id
,
encode
(
value
))}
handle
+=
[
'OnScalar(_, "%s", %s, "%s")'
%
(
out_tag
,
anchor_id
,
encode
(
value
))]
return
{
'emit'
:
emit
,
'handle'
:
handle
}
def
comment
(
value
):
def
comment
(
value
):
return
{
'emit'
:
'Comment("%s")'
%
value
,
'handle'
:
''
}
return
{
'emit'
:
'Comment("%s")'
%
value
,
'handle'
:
''
}
def
seq_start
(
tag
=
''
,
anchor
=
''
,
anchor_id
=
0
,
style
=
'_'
):
def
seq_start
(
tag
=
''
,
anchor
=
''
,
anchor_id
=
0
,
style
=
'_'
):
emit
=
[]
emit
=
[]
handle
=
[]
if
tag
:
if
tag
:
emit
+=
[
'VerbatimTag("%s")'
%
encode
(
tag
)]
emit
+=
[
'VerbatimTag("%s")'
%
encode
(
tag
)]
if
anchor
:
if
anchor
:
emit
+=
[
'Anchor("%s")'
%
encode
(
anchor
)]
emit
+=
[
'Anchor("%s")'
%
encode
(
anchor
)]
handle
+=
[
'OnAnchor(_, "%s")'
%
encode
(
anchor
)]
if
tag
:
if
tag
:
out_tag
=
encode
(
tag
)
out_tag
=
encode
(
tag
)
else
:
else
:
out_tag
=
'?'
out_tag
=
'?'
emit
+=
[
'BeginSeq'
]
emit
+=
[
'BeginSeq'
]
return
{
'emit'
:
emit
,
'handle'
:
'OnSequenceStart(_, "%s", %s, %s)'
%
(
out_tag
,
anchor_id
,
style
)}
handle
+=
[
'OnSequenceStart(_, "%s", %s, %s)'
%
(
out_tag
,
anchor_id
,
style
)]
return
{
'emit'
:
emit
,
'handle'
:
handle
}
def
seq_end
():
def
seq_end
():
return
{
'emit'
:
'EndSeq'
,
'handle'
:
'OnSequenceEnd()'
}
return
{
'emit'
:
'EndSeq'
,
'handle'
:
'OnSequenceEnd()'
}
def
map_start
(
tag
=
''
,
anchor
=
''
,
anchor_id
=
0
,
style
=
'_'
):
def
map_start
(
tag
=
''
,
anchor
=
''
,
anchor_id
=
0
,
style
=
'_'
):
emit
=
[]
emit
=
[]
handle
=
[]
if
tag
:
if
tag
:
emit
+=
[
'VerbatimTag("%s")'
%
encode
(
tag
)]
emit
+=
[
'VerbatimTag("%s")'
%
encode
(
tag
)]
if
anchor
:
if
anchor
:
emit
+=
[
'Anchor("%s")'
%
encode
(
anchor
)]
emit
+=
[
'Anchor("%s")'
%
encode
(
anchor
)]
handle
+=
[
'OnAnchor(_, "%s")'
%
encode
(
anchor
)]
if
tag
:
if
tag
:
out_tag
=
encode
(
tag
)
out_tag
=
encode
(
tag
)
else
:
else
:
out_tag
=
'?'
out_tag
=
'?'
emit
+=
[
'BeginMap'
]
emit
+=
[
'BeginMap'
]
return
{
'emit'
:
emit
,
'handle'
:
'OnMapStart(_, "%s", %s, %s)'
%
(
out_tag
,
anchor_id
,
style
)}
handle
+=
[
'OnMapStart(_, "%s", %s, %s)'
%
(
out_tag
,
anchor_id
,
style
)]
return
{
'emit'
:
emit
,
'handle'
:
handle
}
def
map_end
():
def
map_end
():
return
{
'emit'
:
'EndMap'
,
'handle'
:
'OnMapEnd()'
}
return
{
'emit'
:
'EndMap'
,
'handle'
:
'OnMapEnd()'
}
...
@@ -202,7 +211,10 @@ def create_emitter_tests(out):
...
@@ -202,7 +211,10 @@ def create_emitter_tests(out):
out
.
writeln
(
''
)
out
.
writeln
(
''
)
for
event
in
test
[
'events'
]:
for
event
in
test
[
'events'
]:
handle
=
event
[
'handle'
]
handle
=
event
[
'handle'
]
if
handle
:
if
isinstance
(
handle
,
list
):
for
e
in
handle
:
out
.
writeln
(
'EXPECT_CALL(handler, %s);'
%
e
)
elif
handle
:
out
.
writeln
(
'EXPECT_CALL(handler, %s);'
%
handle
)
out
.
writeln
(
'EXPECT_CALL(handler, %s);'
%
handle
)
out
.
writeln
(
'Parse(out.c_str());'
)
out
.
writeln
(
'Parse(out.c_str());'
)
out
.
writeln
(
''
)
out
.
writeln
(
''
)
...
...
test/integration/gen_emitter_test.cpp
View file @
eca9cfd6
This diff is collapsed.
Click to expand it.
test/integration/handler_spec_test.cpp
View file @
eca9cfd6
...
@@ -199,6 +199,7 @@ TEST_F(HandlerSpecTest, Ex2_10_SimpleAnchor) {
...
@@ -199,6 +199,7 @@ TEST_F(HandlerSpecTest, Ex2_10_SimpleAnchor) {
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"hr"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"hr"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Mark McGwire"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Mark McGwire"
));
EXPECT_CALL
(
handler
,
OnAnchor
(
_
,
"SS"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
1
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
1
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"rbi"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"rbi"
));
...
@@ -376,6 +377,7 @@ TEST_F(HandlerSpecTest, Ex2_24_GlobalTags) {
...
@@ -376,6 +377,7 @@ TEST_F(HandlerSpecTest, Ex2_24_GlobalTags) {
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"tag:clarkevans.com,2002:circle"
,
0
,
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"tag:clarkevans.com,2002:circle"
,
0
,
EmitterStyle
::
Block
));
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"center"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"center"
));
EXPECT_CALL
(
handler
,
OnAnchor
(
_
,
"ORIGIN"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
1
,
EmitterStyle
::
Flow
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
1
,
EmitterStyle
::
Flow
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"x"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"x"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"73"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"73"
));
...
@@ -456,6 +458,7 @@ TEST_F(HandlerSpecTest, Ex2_27_Invoice) {
...
@@ -456,6 +458,7 @@ TEST_F(HandlerSpecTest, Ex2_27_Invoice) {
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"date"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"date"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"2001-01-23"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"2001-01-23"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"bill-to"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"bill-to"
));
EXPECT_CALL
(
handler
,
OnAnchor
(
_
,
"id001"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
1
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
1
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"given"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"given"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Chris"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Chris"
));
...
@@ -616,6 +619,7 @@ TEST_F(HandlerSpecTest, Ex5_6_NodePropertyIndicators) {
...
@@ -616,6 +619,7 @@ TEST_F(HandlerSpecTest, Ex5_6_NodePropertyIndicators) {
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"anchored"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"anchored"
));
EXPECT_CALL
(
handler
,
OnAnchor
(
_
,
"anchor"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!local"
,
1
,
"value"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!local"
,
1
,
"value"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"alias"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"alias"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
...
@@ -909,8 +913,10 @@ TEST_F(HandlerSpecTest, Ex6_22_GlobalTagPrefix) {
...
@@ -909,8 +913,10 @@ TEST_F(HandlerSpecTest, Ex6_22_GlobalTagPrefix) {
TEST_F
(
HandlerSpecTest
,
Ex6_23_NodeProperties
)
{
TEST_F
(
HandlerSpecTest
,
Ex6_23_NodeProperties
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnAnchor
(
_
,
"a1"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
1
,
"foo"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
1
,
"foo"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
"bar"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
"bar"
));
EXPECT_CALL
(
handler
,
OnAnchor
(
_
,
"a2"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
2
,
"baz"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
2
,
"baz"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
...
@@ -972,6 +978,7 @@ TEST_F(HandlerSpecTest, Ex6_29_NodeAnchors) {
...
@@ -972,6 +978,7 @@ TEST_F(HandlerSpecTest, Ex6_29_NodeAnchors) {
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"First occurrence"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"First occurrence"
));
EXPECT_CALL
(
handler
,
OnAnchor
(
_
,
"anchor"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
1
,
"Value"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
1
,
"Value"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Second occurrence"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Second occurrence"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
...
@@ -984,10 +991,12 @@ TEST_F(HandlerSpecTest, Ex7_1_AliasNodes) {
...
@@ -984,10 +991,12 @@ TEST_F(HandlerSpecTest, Ex7_1_AliasNodes) {
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"First occurrence"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"First occurrence"
));
EXPECT_CALL
(
handler
,
OnAnchor
(
_
,
"anchor"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
1
,
"Foo"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
1
,
"Foo"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Second occurrence"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Second occurrence"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Override anchor"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Override anchor"
));
EXPECT_CALL
(
handler
,
OnAnchor
(
_
,
"anchor"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
2
,
"Bar"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
2
,
"Bar"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Reuse anchor"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Reuse anchor"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
2
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
2
));
...
@@ -1307,6 +1316,7 @@ TEST_F(HandlerSpecTest, Ex7_24_FlowNodes) {
...
@@ -1307,6 +1316,7 @@ TEST_F(HandlerSpecTest, Ex7_24_FlowNodes) {
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
,
EmitterStyle
::
Block
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
"a"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
"a"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"b"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"b"
));
EXPECT_CALL
(
handler
,
OnAnchor
(
_
,
"anchor"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
1
,
"c"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
1
,
"c"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
""
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
""
));
...
@@ -1607,5 +1617,5 @@ TEST_F(HandlerSpecTest, Ex8_22_BlockCollectionNodes) {
...
@@ -1607,5 +1617,5 @@ TEST_F(HandlerSpecTest, Ex8_22_BlockCollectionNodes) {
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_22
);
Parse
(
ex8_22
);
}
}
}
}
// namespace
}
}
// namespace YAML
test/mock_event_handler.h
View file @
eca9cfd6
...
@@ -22,5 +22,6 @@ class MockEventHandler : public EventHandler {
...
@@ -22,5 +22,6 @@ class MockEventHandler : public EventHandler {
MOCK_METHOD4
(
OnMapStart
,
void
(
const
Mark
&
,
const
std
::
string
&
,
anchor_t
,
MOCK_METHOD4
(
OnMapStart
,
void
(
const
Mark
&
,
const
std
::
string
&
,
anchor_t
,
EmitterStyle
::
value
));
EmitterStyle
::
value
));
MOCK_METHOD0
(
OnMapEnd
,
void
());
MOCK_METHOD0
(
OnMapEnd
,
void
());
MOCK_METHOD2
(
OnAnchor
,
void
(
const
Mark
&
,
const
std
::
string
&
));
};
};
}
}
// namespace YAML
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment