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
ace9c49e
Commit
ace9c49e
authored
Mar 23, 2014
by
Jesse Beder
Browse files
Convert spec tests to gtest with gmock
parent
e3f120b9
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
1752 additions
and
2447 deletions
+1752
-2447
test/core/spectests.cpp
test/core/spectests.cpp
+0
-1859
test/integration/handler_spec_test.cpp
test/integration/handler_spec_test.cpp
+1751
-0
test/specexamples.h
test/specexamples.h
+1
-3
test/spectests.cpp
test/spectests.cpp
+0
-229
test/spectests.h
test/spectests.h
+0
-352
test/tests.cpp
test/tests.cpp
+0
-4
No files found.
test/core/spectests.cpp
deleted
100644 → 0
View file @
e3f120b9
#include <cassert>
#include "handlermacros.h"
#include "specexamples.h" // IWYU pragma: keep
#include "spectests.h" // IWYU pragma: keep
#include "yaml-cpp/yaml.h" // IWYU pragma: keep
namespace
Test
{
namespace
Spec
{
// 2.1
TEST
SeqScalars
()
{
HANDLE
(
ex2_1
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Mark McGwire"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Sammy Sosa"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Ken Griffey"
);
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.2
TEST
MappingScalarsToScalars
()
{
HANDLE
(
ex2_2
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"hr"
);
EXPECT_SCALAR
(
"?"
,
0
,
"65"
);
EXPECT_SCALAR
(
"?"
,
0
,
"avg"
);
EXPECT_SCALAR
(
"?"
,
0
,
"0.278"
);
EXPECT_SCALAR
(
"?"
,
0
,
"rbi"
);
EXPECT_SCALAR
(
"?"
,
0
,
"147"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.3
TEST
MappingScalarsToSequences
()
{
HANDLE
(
ex2_3
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"american"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Boston Red Sox"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Detroit Tigers"
);
EXPECT_SCALAR
(
"?"
,
0
,
"New York Yankees"
);
EXPECT_SEQ_END
();
EXPECT_SCALAR
(
"?"
,
0
,
"national"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"New York Mets"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Chicago Cubs"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Atlanta Braves"
);
EXPECT_SEQ_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.4
TEST
SequenceOfMappings
()
{
HANDLE
(
ex2_4
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"name"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Mark McGwire"
);
EXPECT_SCALAR
(
"?"
,
0
,
"hr"
);
EXPECT_SCALAR
(
"?"
,
0
,
"65"
);
EXPECT_SCALAR
(
"?"
,
0
,
"avg"
);
EXPECT_SCALAR
(
"?"
,
0
,
"0.278"
);
EXPECT_MAP_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"name"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Sammy Sosa"
);
EXPECT_SCALAR
(
"?"
,
0
,
"hr"
);
EXPECT_SCALAR
(
"?"
,
0
,
"63"
);
EXPECT_SCALAR
(
"?"
,
0
,
"avg"
);
EXPECT_SCALAR
(
"?"
,
0
,
"0.288"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.5
TEST
SequenceOfSequences
()
{
HANDLE
(
ex2_5
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"name"
);
EXPECT_SCALAR
(
"?"
,
0
,
"hr"
);
EXPECT_SCALAR
(
"?"
,
0
,
"avg"
);
EXPECT_SEQ_END
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Mark McGwire"
);
EXPECT_SCALAR
(
"?"
,
0
,
"65"
);
EXPECT_SCALAR
(
"?"
,
0
,
"0.278"
);
EXPECT_SEQ_END
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Sammy Sosa"
);
EXPECT_SCALAR
(
"?"
,
0
,
"63"
);
EXPECT_SCALAR
(
"?"
,
0
,
"0.288"
);
EXPECT_SEQ_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.6
TEST
MappingOfMappings
()
{
HANDLE
(
ex2_6
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Mark McGwire"
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"hr"
);
EXPECT_SCALAR
(
"?"
,
0
,
"65"
);
EXPECT_SCALAR
(
"?"
,
0
,
"avg"
);
EXPECT_SCALAR
(
"?"
,
0
,
"0.278"
);
EXPECT_MAP_END
();
EXPECT_SCALAR
(
"?"
,
0
,
"Sammy Sosa"
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"hr"
);
EXPECT_SCALAR
(
"?"
,
0
,
"63"
);
EXPECT_SCALAR
(
"?"
,
0
,
"avg"
);
EXPECT_SCALAR
(
"?"
,
0
,
"0.288"
);
EXPECT_MAP_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.7
TEST
TwoDocumentsInAStream
()
{
HANDLE
(
ex2_7
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Mark McGwire"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Sammy Sosa"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Ken Griffey"
);
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Chicago Cubs"
);
EXPECT_SCALAR
(
"?"
,
0
,
"St Louis Cardinals"
);
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.8
TEST
PlayByPlayFeed
()
{
HANDLE
(
ex2_8
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"time"
);
EXPECT_SCALAR
(
"?"
,
0
,
"20:03:20"
);
EXPECT_SCALAR
(
"?"
,
0
,
"player"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Sammy Sosa"
);
EXPECT_SCALAR
(
"?"
,
0
,
"action"
);
EXPECT_SCALAR
(
"?"
,
0
,
"strike (miss)"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"time"
);
EXPECT_SCALAR
(
"?"
,
0
,
"20:03:47"
);
EXPECT_SCALAR
(
"?"
,
0
,
"player"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Sammy Sosa"
);
EXPECT_SCALAR
(
"?"
,
0
,
"action"
);
EXPECT_SCALAR
(
"?"
,
0
,
"grand slam"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.9
TEST
SingleDocumentWithTwoComments
()
{
HANDLE
(
ex2_9
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"hr"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Mark McGwire"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Sammy Sosa"
);
EXPECT_SEQ_END
();
EXPECT_SCALAR
(
"?"
,
0
,
"rbi"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Sammy Sosa"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Ken Griffey"
);
EXPECT_SEQ_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.10
TEST
SimpleAnchor
()
{
HANDLE
(
ex2_10
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"hr"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Mark McGwire"
);
EXPECT_SCALAR
(
"?"
,
1
,
"Sammy Sosa"
);
EXPECT_SEQ_END
();
EXPECT_SCALAR
(
"?"
,
0
,
"rbi"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_ALIAS
(
1
);
EXPECT_SCALAR
(
"?"
,
0
,
"Ken Griffey"
);
EXPECT_SEQ_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.11
TEST
MappingBetweenSequences
()
{
HANDLE
(
ex2_11
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Detroit Tigers"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Chicago cubs"
);
EXPECT_SEQ_END
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"2001-07-23"
);
EXPECT_SEQ_END
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"New York Yankees"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Atlanta Braves"
);
EXPECT_SEQ_END
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"2001-07-02"
);
EXPECT_SCALAR
(
"?"
,
0
,
"2001-08-12"
);
EXPECT_SCALAR
(
"?"
,
0
,
"2001-08-14"
);
EXPECT_SEQ_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.12
TEST
CompactNestedMapping
()
{
HANDLE
(
ex2_12
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"item"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Super Hoop"
);
EXPECT_SCALAR
(
"?"
,
0
,
"quantity"
);
EXPECT_SCALAR
(
"?"
,
0
,
"1"
);
EXPECT_MAP_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"item"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Basketball"
);
EXPECT_SCALAR
(
"?"
,
0
,
"quantity"
);
EXPECT_SCALAR
(
"?"
,
0
,
"4"
);
EXPECT_MAP_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"item"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Big Shoes"
);
EXPECT_SCALAR
(
"?"
,
0
,
"quantity"
);
EXPECT_SCALAR
(
"?"
,
0
,
"1"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.13
TEST
InLiteralsNewlinesArePreserved
()
{
HANDLE
(
ex2_13
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"
\\
//||
\\
/||
\n
"
"// || ||__"
);
EXPECT_DOC_END
();
DONE
();
}
// 2.14
TEST
InFoldedScalarsNewlinesBecomeSpaces
()
{
HANDLE
(
ex2_14
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"Mark McGwire's year was crippled by a knee injury."
);
EXPECT_DOC_END
();
DONE
();
}
// 2.15
TEST
FoldedNewlinesArePreservedForMoreIndentedAndBlankLines
()
{
HANDLE
(
ex2_15
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"Sammy Sosa completed another fine season with great stats.
\n
"
"
\n
"
" 63 Home Runs
\n
"
" 0.288 Batting Average
\n
"
"
\n
"
"What a year!"
);
EXPECT_DOC_END
();
DONE
();
}
// 2.16
TEST
IndentationDeterminesScope
()
{
HANDLE
(
ex2_16
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"name"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Mark McGwire"
);
EXPECT_SCALAR
(
"?"
,
0
,
"accomplishment"
);
EXPECT_SCALAR
(
"!"
,
0
,
"Mark set a major league home run record in 1998.
\n
"
);
EXPECT_SCALAR
(
"?"
,
0
,
"stats"
);
EXPECT_SCALAR
(
"!"
,
0
,
"65 Home Runs
\n
"
"0.278 Batting Average
\n
"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.17
TEST
QuotedScalars
()
{
HANDLE
(
ex2_17
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"unicode"
);
EXPECT_SCALAR
(
"!"
,
0
,
"Sosa did fine.\u263A"
);
EXPECT_SCALAR
(
"?"
,
0
,
"control"
);
EXPECT_SCALAR
(
"!"
,
0
,
"
\b
1998
\t
1999
\t
2000
\n
"
);
EXPECT_SCALAR
(
"?"
,
0
,
"hex esc"
);
EXPECT_SCALAR
(
"!"
,
0
,
"
\x0d\x0a
is
\r\n
"
);
EXPECT_SCALAR
(
"?"
,
0
,
"single"
);
EXPECT_SCALAR
(
"!"
,
0
,
"
\"
Howdy!
\"
he cried."
);
EXPECT_SCALAR
(
"?"
,
0
,
"quoted"
);
EXPECT_SCALAR
(
"!"
,
0
,
" # Not a 'comment'."
);
EXPECT_SCALAR
(
"?"
,
0
,
"tie-fighter"
);
EXPECT_SCALAR
(
"!"
,
0
,
"|
\\
-*-/|"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.18
TEST
MultiLineFlowScalars
()
{
HANDLE
(
ex2_18
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"plain"
);
EXPECT_SCALAR
(
"?"
,
0
,
"This unquoted scalar spans many lines."
);
EXPECT_SCALAR
(
"?"
,
0
,
"quoted"
);
EXPECT_SCALAR
(
"!"
,
0
,
"So does this quoted scalar.
\n
"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// TODO: 2.19 - 2.22 schema tags
// 2.23
TEST
VariousExplicitTags
()
{
HANDLE
(
ex2_23
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"not-date"
);
EXPECT_SCALAR
(
"tag:yaml.org,2002:str"
,
0
,
"2002-04-28"
);
EXPECT_SCALAR
(
"?"
,
0
,
"picture"
);
EXPECT_SCALAR
(
"tag:yaml.org,2002:binary"
,
0
,
"R0lGODlhDAAMAIQAAP//9/X
\n
"
"17unp5WZmZgAAAOfn515eXv
\n
"
"Pz7Y6OjuDg4J+fn5OTk6enp
\n
"
"56enmleECcgggoBADs=
\n
"
);
EXPECT_SCALAR
(
"?"
,
0
,
"application specific tag"
);
EXPECT_SCALAR
(
"!something"
,
0
,
"The semantics of the tag
\n
"
"above may be different for
\n
"
"different documents."
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.24
TEST
GlobalTags
()
{
HANDLE
(
ex2_24
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"tag:clarkevans.com,2002:shape"
,
0
);
EXPECT_MAP_START
(
"tag:clarkevans.com,2002:circle"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"center"
);
EXPECT_MAP_START
(
"?"
,
1
);
EXPECT_SCALAR
(
"?"
,
0
,
"x"
);
EXPECT_SCALAR
(
"?"
,
0
,
"73"
);
EXPECT_SCALAR
(
"?"
,
0
,
"y"
);
EXPECT_SCALAR
(
"?"
,
0
,
"129"
);
EXPECT_MAP_END
();
EXPECT_SCALAR
(
"?"
,
0
,
"radius"
);
EXPECT_SCALAR
(
"?"
,
0
,
"7"
);
EXPECT_MAP_END
();
EXPECT_MAP_START
(
"tag:clarkevans.com,2002:line"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"start"
);
EXPECT_ALIAS
(
1
);
EXPECT_SCALAR
(
"?"
,
0
,
"finish"
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"x"
);
EXPECT_SCALAR
(
"?"
,
0
,
"89"
);
EXPECT_SCALAR
(
"?"
,
0
,
"y"
);
EXPECT_SCALAR
(
"?"
,
0
,
"102"
);
EXPECT_MAP_END
();
EXPECT_MAP_END
();
EXPECT_MAP_START
(
"tag:clarkevans.com,2002:label"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"start"
);
EXPECT_ALIAS
(
1
);
EXPECT_SCALAR
(
"?"
,
0
,
"color"
);
EXPECT_SCALAR
(
"?"
,
0
,
"0xFFEEBB"
);
EXPECT_SCALAR
(
"?"
,
0
,
"text"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Pretty vector drawing."
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.25
TEST
UnorderedSets
()
{
HANDLE
(
ex2_25
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"tag:yaml.org,2002:set"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Mark McGwire"
);
EXPECT_NULL
(
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Sammy Sosa"
);
EXPECT_NULL
(
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Ken Griffey"
);
EXPECT_NULL
(
0
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.26
TEST
OrderedMappings
()
{
HANDLE
(
ex2_26
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"tag:yaml.org,2002:omap"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Mark McGwire"
);
EXPECT_SCALAR
(
"?"
,
0
,
"65"
);
EXPECT_MAP_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Sammy Sosa"
);
EXPECT_SCALAR
(
"?"
,
0
,
"63"
);
EXPECT_MAP_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Ken Griffey"
);
EXPECT_SCALAR
(
"?"
,
0
,
"58"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.27
TEST
Invoice
()
{
HANDLE
(
ex2_27
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"tag:clarkevans.com,2002:invoice"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"invoice"
);
EXPECT_SCALAR
(
"?"
,
0
,
"34843"
);
EXPECT_SCALAR
(
"?"
,
0
,
"date"
);
EXPECT_SCALAR
(
"?"
,
0
,
"2001-01-23"
);
EXPECT_SCALAR
(
"?"
,
0
,
"bill-to"
);
EXPECT_MAP_START
(
"?"
,
1
);
EXPECT_SCALAR
(
"?"
,
0
,
"given"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Chris"
);
EXPECT_SCALAR
(
"?"
,
0
,
"family"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Dumars"
);
EXPECT_SCALAR
(
"?"
,
0
,
"address"
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"lines"
);
EXPECT_SCALAR
(
"!"
,
0
,
"458 Walkman Dr.
\n
"
"Suite #292
\n
"
);
EXPECT_SCALAR
(
"?"
,
0
,
"city"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Royal Oak"
);
EXPECT_SCALAR
(
"?"
,
0
,
"state"
);
EXPECT_SCALAR
(
"?"
,
0
,
"MI"
);
EXPECT_SCALAR
(
"?"
,
0
,
"postal"
);
EXPECT_SCALAR
(
"?"
,
0
,
"48046"
);
EXPECT_MAP_END
();
EXPECT_MAP_END
();
EXPECT_SCALAR
(
"?"
,
0
,
"ship-to"
);
EXPECT_ALIAS
(
1
);
EXPECT_SCALAR
(
"?"
,
0
,
"product"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"sku"
);
EXPECT_SCALAR
(
"?"
,
0
,
"BL394D"
);
EXPECT_SCALAR
(
"?"
,
0
,
"quantity"
);
EXPECT_SCALAR
(
"?"
,
0
,
"4"
);
EXPECT_SCALAR
(
"?"
,
0
,
"description"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Basketball"
);
EXPECT_SCALAR
(
"?"
,
0
,
"price"
);
EXPECT_SCALAR
(
"?"
,
0
,
"450.00"
);
EXPECT_MAP_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"sku"
);
EXPECT_SCALAR
(
"?"
,
0
,
"BL4438H"
);
EXPECT_SCALAR
(
"?"
,
0
,
"quantity"
);
EXPECT_SCALAR
(
"?"
,
0
,
"1"
);
EXPECT_SCALAR
(
"?"
,
0
,
"description"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Super Hoop"
);
EXPECT_SCALAR
(
"?"
,
0
,
"price"
);
EXPECT_SCALAR
(
"?"
,
0
,
"2392.00"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_SCALAR
(
"?"
,
0
,
"tax"
);
EXPECT_SCALAR
(
"?"
,
0
,
"251.42"
);
EXPECT_SCALAR
(
"?"
,
0
,
"total"
);
EXPECT_SCALAR
(
"?"
,
0
,
"4443.52"
);
EXPECT_SCALAR
(
"?"
,
0
,
"comments"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338."
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 2.28
TEST
LogFile
()
{
HANDLE
(
ex2_28
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Time"
);
EXPECT_SCALAR
(
"?"
,
0
,
"2001-11-23 15:01:42 -5"
);
EXPECT_SCALAR
(
"?"
,
0
,
"User"
);
EXPECT_SCALAR
(
"?"
,
0
,
"ed"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Warning"
);
EXPECT_SCALAR
(
"?"
,
0
,
"This is an error message for the log file"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Time"
);
EXPECT_SCALAR
(
"?"
,
0
,
"2001-11-23 15:02:31 -5"
);
EXPECT_SCALAR
(
"?"
,
0
,
"User"
);
EXPECT_SCALAR
(
"?"
,
0
,
"ed"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Warning"
);
EXPECT_SCALAR
(
"?"
,
0
,
"A slightly different error message."
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Date"
);
EXPECT_SCALAR
(
"?"
,
0
,
"2001-11-23 15:03:17 -5"
);
EXPECT_SCALAR
(
"?"
,
0
,
"User"
);
EXPECT_SCALAR
(
"?"
,
0
,
"ed"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Fatal"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Unknown variable
\"
bar
\"
"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Stack"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"file"
);
EXPECT_SCALAR
(
"?"
,
0
,
"TopClass.py"
);
EXPECT_SCALAR
(
"?"
,
0
,
"line"
);
EXPECT_SCALAR
(
"?"
,
0
,
"23"
);
EXPECT_SCALAR
(
"?"
,
0
,
"code"
);
EXPECT_SCALAR
(
"!"
,
0
,
"x = MoreObject(
\"
345
\\
n
\"
)
\n
"
);
EXPECT_MAP_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"file"
);
EXPECT_SCALAR
(
"?"
,
0
,
"MoreClass.py"
);
EXPECT_SCALAR
(
"?"
,
0
,
"line"
);
EXPECT_SCALAR
(
"?"
,
0
,
"58"
);
EXPECT_SCALAR
(
"?"
,
0
,
"code"
);
EXPECT_SCALAR
(
"!"
,
0
,
"foo = bar"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// TODO: 5.1 - 5.2 BOM
// 5.3
TEST
BlockStructureIndicators
()
{
HANDLE
(
ex5_3
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"sequence"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"one"
);
EXPECT_SCALAR
(
"?"
,
0
,
"two"
);
EXPECT_SEQ_END
();
EXPECT_SCALAR
(
"?"
,
0
,
"mapping"
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"sky"
);
EXPECT_SCALAR
(
"?"
,
0
,
"blue"
);
EXPECT_SCALAR
(
"?"
,
0
,
"sea"
);
EXPECT_SCALAR
(
"?"
,
0
,
"green"
);
EXPECT_MAP_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 5.4
TEST
FlowStructureIndicators
()
{
HANDLE
(
ex5_4
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"sequence"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"one"
);
EXPECT_SCALAR
(
"?"
,
0
,
"two"
);
EXPECT_SEQ_END
();
EXPECT_SCALAR
(
"?"
,
0
,
"mapping"
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"sky"
);
EXPECT_SCALAR
(
"?"
,
0
,
"blue"
);
EXPECT_SCALAR
(
"?"
,
0
,
"sea"
);
EXPECT_SCALAR
(
"?"
,
0
,
"green"
);
EXPECT_MAP_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 5.5
TEST
CommentIndicator
()
{
HANDLE
(
ex5_5
);
DONE
();
}
// 5.6
TEST
NodePropertyIndicators
()
{
HANDLE
(
ex5_6
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"anchored"
);
EXPECT_SCALAR
(
"!local"
,
1
,
"value"
);
EXPECT_SCALAR
(
"?"
,
0
,
"alias"
);
EXPECT_ALIAS
(
1
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 5.7
TEST
BlockScalarIndicators
()
{
HANDLE
(
ex5_7
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"literal"
);
EXPECT_SCALAR
(
"!"
,
0
,
"some
\n
text
\n
"
);
EXPECT_SCALAR
(
"?"
,
0
,
"folded"
);
EXPECT_SCALAR
(
"!"
,
0
,
"some text
\n
"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 5.8
TEST
QuotedScalarIndicators
()
{
HANDLE
(
ex5_8
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"single"
);
EXPECT_SCALAR
(
"!"
,
0
,
"text"
);
EXPECT_SCALAR
(
"?"
,
0
,
"double"
);
EXPECT_SCALAR
(
"!"
,
0
,
"text"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// TODO: 5.9 directive
// TODO: 5.10 reserved indicator
// 5.11
TEST
LineBreakCharacters
()
{
HANDLE
(
ex5_11
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"Line break (no glyph)
\n
"
"Line break (glyphed)
\n
"
);
EXPECT_DOC_END
();
DONE
();
}
// 5.12
TEST
TabsAndSpaces
()
{
HANDLE
(
ex5_12
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"quoted"
);
EXPECT_SCALAR
(
"!"
,
0
,
"Quoted
\t
"
);
EXPECT_SCALAR
(
"?"
,
0
,
"block"
);
EXPECT_SCALAR
(
"!"
,
0
,
"void main() {
\n
"
"
\t
printf(
\"
Hello, world!
\\
n
\"
);
\n
"
"}"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 5.13
TEST
EscapedCharacters
()
{
HANDLE
(
ex5_13
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"Fun with
\x5C
\x22
\x07
\x08
\x1B
\x0C
\x0A
\x0D
\x09
\x0B
"
+
std
::
string
(
"
\x00
"
,
1
)
+
"
\x20
\xA0
\x85
\xe2\x80\xa8
\xe2\x80\xa9
A A A"
);
EXPECT_DOC_END
();
DONE
();
}
// 5.14
TEST
InvalidEscapedCharacters
()
{
try
{
HANDLE
(
ex5_14
);
}
catch
(
const
YAML
::
ParserException
&
e
)
{
YAML_ASSERT
(
e
.
msg
==
std
::
string
(
YAML
::
ErrorMsg
::
INVALID_ESCAPE
)
+
"c"
);
return
true
;
}
return
" no exception caught"
;
}
// 6.1
TEST
IndentationSpaces
()
{
HANDLE
(
ex6_1
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Not indented"
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"By one space"
);
EXPECT_SCALAR
(
"!"
,
0
,
"By four
\n
spaces
\n
"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Flow style"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"By two"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Also by two"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Still by two"
);
EXPECT_SEQ_END
();
EXPECT_MAP_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 6.2
TEST
IndentationIndicators
()
{
HANDLE
(
ex6_2
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"a"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"b"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"c"
);
EXPECT_SCALAR
(
"?"
,
0
,
"d"
);
EXPECT_SEQ_END
();
EXPECT_SEQ_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 6.3
TEST
SeparationSpaces
()
{
HANDLE
(
ex6_3
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"foo"
);
EXPECT_SCALAR
(
"?"
,
0
,
"bar"
);
EXPECT_MAP_END
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"baz"
);
EXPECT_SCALAR
(
"?"
,
0
,
"baz"
);
EXPECT_SEQ_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 6.4
TEST
LinePrefixes
()
{
HANDLE
(
ex6_4
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"plain"
);
EXPECT_SCALAR
(
"?"
,
0
,
"text lines"
);
EXPECT_SCALAR
(
"?"
,
0
,
"quoted"
);
EXPECT_SCALAR
(
"!"
,
0
,
"text lines"
);
EXPECT_SCALAR
(
"?"
,
0
,
"block"
);
EXPECT_SCALAR
(
"!"
,
0
,
"text
\n
\t
lines
\n
"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 6.5
TEST
EmptyLines
()
{
HANDLE
(
ex6_5
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"Folding"
);
EXPECT_SCALAR
(
"!"
,
0
,
"Empty line
\n
as a line feed"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Chomping"
);
EXPECT_SCALAR
(
"!"
,
0
,
"Clipped empty lines
\n
"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 6.6
TEST
LineFolding
()
{
HANDLE
(
ex6_6
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"trimmed
\n\n\n
as space"
);
EXPECT_DOC_END
();
DONE
();
}
// 6.7
TEST
BlockFolding
()
{
HANDLE
(
ex6_7
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"foo
\n\n\t
bar
\n\n
baz
\n
"
);
EXPECT_DOC_END
();
DONE
();
}
// 6.8
TEST
FlowFolding
()
{
HANDLE
(
ex6_8
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
" foo
\n
bar
\n
baz "
);
EXPECT_DOC_END
();
DONE
();
}
// 6.9
TEST
SeparatedComment
()
{
HANDLE
(
ex6_9
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"key"
);
EXPECT_SCALAR
(
"?"
,
0
,
"value"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 6.10
TEST
CommentLines
()
{
HANDLE
(
ex6_10
);
DONE
();
}
// 6.11
TEST
MultiLineComments
()
{
HANDLE
(
ex6_11
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"key"
);
EXPECT_SCALAR
(
"?"
,
0
,
"value"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 6.12
TEST
SeparationSpacesII
()
{
HANDLE
(
ex6_12
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"first"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Sammy"
);
EXPECT_SCALAR
(
"?"
,
0
,
"last"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Sosa"
);
EXPECT_MAP_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"hr"
);
EXPECT_SCALAR
(
"?"
,
0
,
"65"
);
EXPECT_SCALAR
(
"?"
,
0
,
"avg"
);
EXPECT_SCALAR
(
"?"
,
0
,
"0.278"
);
EXPECT_MAP_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 6.13
TEST
ReservedDirectives
()
{
HANDLE
(
ex6_13
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"foo"
);
EXPECT_DOC_END
();
DONE
();
}
// 6.14
TEST
YAMLDirective
()
{
HANDLE
(
ex6_14
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"foo"
);
EXPECT_DOC_END
();
DONE
();
}
// 6.15
TEST
InvalidRepeatedYAMLDirective
()
{
try
{
HANDLE
(
ex6_15
);
}
catch
(
const
YAML
::
ParserException
&
e
)
{
if
(
e
.
msg
==
YAML
::
ErrorMsg
::
REPEATED_YAML_DIRECTIVE
)
return
true
;
throw
;
}
return
" No exception was thrown"
;
}
// 6.16
TEST
TagDirective
()
{
HANDLE
(
ex6_16
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"tag:yaml.org,2002:str"
,
0
,
"foo"
);
EXPECT_DOC_END
();
DONE
();
}
// 6.17
TEST
InvalidRepeatedTagDirective
()
{
try
{
HANDLE
(
ex6_17
);
}
catch
(
const
YAML
::
ParserException
&
e
)
{
if
(
e
.
msg
==
YAML
::
ErrorMsg
::
REPEATED_TAG_DIRECTIVE
)
return
true
;
throw
;
}
return
" No exception was thrown"
;
}
// 6.18
TEST
PrimaryTagHandle
()
{
HANDLE
(
ex6_18
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!foo"
,
0
,
"bar"
);
EXPECT_DOC_END
();
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"tag:example.com,2000:app/foo"
,
0
,
"bar"
);
EXPECT_DOC_END
();
DONE
();
}
// 6.19
TEST
SecondaryTagHandle
()
{
HANDLE
(
ex6_19
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"tag:example.com,2000:app/int"
,
0
,
"1 - 3"
);
EXPECT_DOC_END
();
DONE
();
}
// 6.20
TEST
TagHandles
()
{
HANDLE
(
ex6_20
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"tag:example.com,2000:app/foo"
,
0
,
"bar"
);
EXPECT_DOC_END
();
DONE
();
}
// 6.21
TEST
LocalTagPrefix
()
{
HANDLE
(
ex6_21
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!my-light"
,
0
,
"fluorescent"
);
EXPECT_DOC_END
();
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!my-light"
,
0
,
"green"
);
EXPECT_DOC_END
();
DONE
();
}
// 6.22
TEST
GlobalTagPrefix
()
{
HANDLE
(
ex6_22
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"tag:example.com,2000:app/foo"
,
0
,
"bar"
);
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 6.23
TEST
NodeProperties
()
{
HANDLE
(
ex6_23
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"tag:yaml.org,2002:str"
,
1
,
"foo"
);
EXPECT_SCALAR
(
"tag:yaml.org,2002:str"
,
0
,
"bar"
);
EXPECT_SCALAR
(
"?"
,
2
,
"baz"
);
EXPECT_ALIAS
(
1
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 6.24
TEST
VerbatimTags
()
{
HANDLE
(
ex6_24
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"tag:yaml.org,2002:str"
,
0
,
"foo"
);
EXPECT_SCALAR
(
"!bar"
,
0
,
"baz"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 6.25
TEST
InvalidVerbatimTags
()
{
HANDLE
(
ex6_25
);
return
" not implemented yet"
;
}
// 6.26
TEST
TagShorthands
()
{
HANDLE
(
ex6_26
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"!local"
,
0
,
"foo"
);
EXPECT_SCALAR
(
"tag:yaml.org,2002:str"
,
0
,
"bar"
);
EXPECT_SCALAR
(
"tag:example.com,2000:app/tag%21"
,
0
,
"baz"
);
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 6.27
TEST
InvalidTagShorthands
()
{
bool
threw
=
false
;
try
{
HANDLE
(
ex6_27a
);
}
catch
(
const
YAML
::
ParserException
&
e
)
{
threw
=
true
;
if
(
e
.
msg
!=
YAML
::
ErrorMsg
::
TAG_WITH_NO_SUFFIX
)
throw
;
}
if
(
!
threw
)
return
" No exception was thrown for a tag with no suffix"
;
HANDLE
(
ex6_27b
);
// TODO: should we reject this one (since !h! is not declared)?
return
" not implemented yet"
;
}
// 6.28
TEST
NonSpecificTags
()
{
HANDLE
(
ex6_28
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"!"
,
0
,
"12"
);
EXPECT_SCALAR
(
"?"
,
0
,
"12"
);
EXPECT_SCALAR
(
"!"
,
0
,
"12"
);
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 6.29
TEST
NodeAnchors
()
{
HANDLE
(
ex6_29
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"First occurrence"
);
EXPECT_SCALAR
(
"?"
,
1
,
"Value"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Second occurrence"
);
EXPECT_ALIAS
(
1
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.1
TEST
AliasNodes
()
{
HANDLE
(
ex7_1
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"First occurrence"
);
EXPECT_SCALAR
(
"?"
,
1
,
"Foo"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Second occurrence"
);
EXPECT_ALIAS
(
1
);
EXPECT_SCALAR
(
"?"
,
0
,
"Override anchor"
);
EXPECT_SCALAR
(
"?"
,
2
,
"Bar"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Reuse anchor"
);
EXPECT_ALIAS
(
2
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.2
TEST
EmptyNodes
()
{
HANDLE
(
ex7_2
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"foo"
);
EXPECT_SCALAR
(
"tag:yaml.org,2002:str"
,
0
,
""
);
EXPECT_SCALAR
(
"tag:yaml.org,2002:str"
,
0
,
""
);
EXPECT_SCALAR
(
"?"
,
0
,
"bar"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.3
TEST
CompletelyEmptyNodes
()
{
HANDLE
(
ex7_3
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"foo"
);
EXPECT_NULL
(
0
);
EXPECT_NULL
(
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"bar"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.4
TEST
DoubleQuotedImplicitKeys
()
{
HANDLE
(
ex7_4
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"!"
,
0
,
"implicit block key"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"!"
,
0
,
"implicit flow key"
);
EXPECT_SCALAR
(
"?"
,
0
,
"value"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.5
TEST
DoubleQuotedLineBreaks
()
{
HANDLE
(
ex7_5
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"folded to a space,
\n
to a line feed, or
\t
\t
non-content"
);
EXPECT_DOC_END
();
DONE
();
}
// 7.6
TEST
DoubleQuotedLines
()
{
HANDLE
(
ex7_6
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
" 1st non-empty
\n
2nd non-empty 3rd non-empty "
);
EXPECT_DOC_END
();
DONE
();
}
// 7.7
TEST
SingleQuotedCharacters
()
{
HANDLE
(
ex7_7
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"here's to
\"
quotes
\"
"
);
EXPECT_DOC_END
();
DONE
();
}
// 7.8
TEST
SingleQuotedImplicitKeys
()
{
HANDLE
(
ex7_8
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"!"
,
0
,
"implicit block key"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"!"
,
0
,
"implicit flow key"
);
EXPECT_SCALAR
(
"?"
,
0
,
"value"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.9
TEST
SingleQuotedLines
()
{
HANDLE
(
ex7_9
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
" 1st non-empty
\n
2nd non-empty 3rd non-empty "
);
EXPECT_DOC_END
();
DONE
();
}
// 7.10
TEST
PlainCharacters
()
{
HANDLE
(
ex7_10
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"::vector"
);
EXPECT_SCALAR
(
"!"
,
0
,
": - ()"
);
EXPECT_SCALAR
(
"?"
,
0
,
"Up, up, and away!"
);
EXPECT_SCALAR
(
"?"
,
0
,
"-123"
);
EXPECT_SCALAR
(
"?"
,
0
,
"http://example.com/foo#bar"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"::vector"
);
EXPECT_SCALAR
(
"!"
,
0
,
": - ()"
);
EXPECT_SCALAR
(
"!"
,
0
,
"Up, up, and away!"
);
EXPECT_SCALAR
(
"?"
,
0
,
"-123"
);
EXPECT_SCALAR
(
"?"
,
0
,
"http://example.com/foo#bar"
);
EXPECT_SEQ_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.11
TEST
PlainImplicitKeys
()
{
HANDLE
(
ex7_11
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"implicit block key"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"implicit flow key"
);
EXPECT_SCALAR
(
"?"
,
0
,
"value"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.12
TEST
PlainLines
()
{
HANDLE
(
ex7_12
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"?"
,
0
,
"1st non-empty
\n
2nd non-empty 3rd non-empty"
);
EXPECT_DOC_END
();
DONE
();
}
// 7.13
TEST
FlowSequence
()
{
HANDLE
(
ex7_13
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"one"
);
EXPECT_SCALAR
(
"?"
,
0
,
"two"
);
EXPECT_SEQ_END
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"three"
);
EXPECT_SCALAR
(
"?"
,
0
,
"four"
);
EXPECT_SEQ_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.14
TEST
FlowSequenceEntries
()
{
HANDLE
(
ex7_14
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"!"
,
0
,
"double quoted"
);
EXPECT_SCALAR
(
"!"
,
0
,
"single quoted"
);
EXPECT_SCALAR
(
"?"
,
0
,
"plain text"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"nested"
);
EXPECT_SEQ_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"single"
);
EXPECT_SCALAR
(
"?"
,
0
,
"pair"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.15
TEST
FlowMappings
()
{
HANDLE
(
ex7_15
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"one"
);
EXPECT_SCALAR
(
"?"
,
0
,
"two"
);
EXPECT_SCALAR
(
"?"
,
0
,
"three"
);
EXPECT_SCALAR
(
"?"
,
0
,
"four"
);
EXPECT_MAP_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"five"
);
EXPECT_SCALAR
(
"?"
,
0
,
"six"
);
EXPECT_SCALAR
(
"?"
,
0
,
"seven"
);
EXPECT_SCALAR
(
"?"
,
0
,
"eight"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.16
TEST
FlowMappingEntries
()
{
HANDLE
(
ex7_16
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"explicit"
);
EXPECT_SCALAR
(
"?"
,
0
,
"entry"
);
EXPECT_SCALAR
(
"?"
,
0
,
"implicit"
);
EXPECT_SCALAR
(
"?"
,
0
,
"entry"
);
EXPECT_NULL
(
0
);
EXPECT_NULL
(
0
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.17
TEST
FlowMappingSeparateValues
()
{
HANDLE
(
ex7_17
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"unquoted"
);
EXPECT_SCALAR
(
"!"
,
0
,
"separate"
);
EXPECT_SCALAR
(
"?"
,
0
,
"http://foo.com"
);
EXPECT_NULL
(
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"omitted value"
);
EXPECT_NULL
(
0
);
EXPECT_NULL
(
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"omitted key"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.18
TEST
FlowMappingAdjacentValues
()
{
HANDLE
(
ex7_18
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"!"
,
0
,
"adjacent"
);
EXPECT_SCALAR
(
"?"
,
0
,
"value"
);
EXPECT_SCALAR
(
"!"
,
0
,
"readable"
);
EXPECT_SCALAR
(
"?"
,
0
,
"value"
);
EXPECT_SCALAR
(
"!"
,
0
,
"empty"
);
EXPECT_NULL
(
0
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.19
TEST
SinglePairFlowMappings
()
{
HANDLE
(
ex7_19
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"foo"
);
EXPECT_SCALAR
(
"?"
,
0
,
"bar"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.20
TEST
SinglePairExplicitEntry
()
{
HANDLE
(
ex7_20
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"foo bar"
);
EXPECT_SCALAR
(
"?"
,
0
,
"baz"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.21
TEST
SinglePairImplicitEntries
()
{
HANDLE
(
ex7_21
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"YAML"
);
EXPECT_SCALAR
(
"?"
,
0
,
"separate"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_NULL
(
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"empty key entry"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"JSON"
);
EXPECT_SCALAR
(
"?"
,
0
,
"like"
);
EXPECT_MAP_END
();
EXPECT_SCALAR
(
"?"
,
0
,
"adjacent"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.22
TEST
InvalidImplicitKeys
()
{
try
{
HANDLE
(
ex7_22
);
}
catch
(
const
YAML
::
Exception
&
e
)
{
if
(
e
.
msg
==
YAML
::
ErrorMsg
::
END_OF_SEQ_FLOW
)
return
true
;
throw
;
}
return
" no exception thrown"
;
}
// 7.23
TEST
FlowContent
()
{
HANDLE
(
ex7_23
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"a"
);
EXPECT_SCALAR
(
"?"
,
0
,
"b"
);
EXPECT_SEQ_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"a"
);
EXPECT_SCALAR
(
"?"
,
0
,
"b"
);
EXPECT_MAP_END
();
EXPECT_SCALAR
(
"!"
,
0
,
"a"
);
EXPECT_SCALAR
(
"!"
,
0
,
"b"
);
EXPECT_SCALAR
(
"?"
,
0
,
"c"
);
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 7.24
TEST
FlowNodes
()
{
HANDLE
(
ex7_24
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"tag:yaml.org,2002:str"
,
0
,
"a"
);
EXPECT_SCALAR
(
"!"
,
0
,
"b"
);
EXPECT_SCALAR
(
"!"
,
1
,
"c"
);
EXPECT_ALIAS
(
1
);
EXPECT_SCALAR
(
"tag:yaml.org,2002:str"
,
0
,
""
);
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.1
TEST
BlockScalarHeader
()
{
HANDLE
(
ex8_1
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"!"
,
0
,
"literal
\n
"
);
EXPECT_SCALAR
(
"!"
,
0
,
" folded
\n
"
);
EXPECT_SCALAR
(
"!"
,
0
,
"keep
\n\n
"
);
EXPECT_SCALAR
(
"!"
,
0
,
" strip"
);
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.2
TEST
BlockIndentationHeader
()
{
HANDLE
(
ex8_2
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"!"
,
0
,
"detected
\n
"
);
EXPECT_SCALAR
(
"!"
,
0
,
"
\n\n
# detected
\n
"
);
EXPECT_SCALAR
(
"!"
,
0
,
" explicit
\n
"
);
EXPECT_SCALAR
(
"!"
,
0
,
"
\t\n
detected
\n
"
);
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.3
TEST
InvalidBlockScalarIndentationIndicators
()
{
{
bool
threw
=
false
;
try
{
HANDLE
(
ex8_3a
);
}
catch
(
const
YAML
::
Exception
&
e
)
{
if
(
e
.
msg
!=
YAML
::
ErrorMsg
::
END_OF_SEQ
)
throw
;
threw
=
true
;
}
if
(
!
threw
)
return
" no exception thrown for less indented auto-detecting "
"indentation for a literal block scalar"
;
}
{
bool
threw
=
false
;
try
{
HANDLE
(
ex8_3b
);
}
catch
(
const
YAML
::
Exception
&
e
)
{
if
(
e
.
msg
!=
YAML
::
ErrorMsg
::
END_OF_SEQ
)
throw
;
threw
=
true
;
}
if
(
!
threw
)
return
" no exception thrown for less indented auto-detecting "
"indentation for a folded block scalar"
;
}
{
bool
threw
=
false
;
try
{
HANDLE
(
ex8_3c
);
}
catch
(
const
YAML
::
Exception
&
e
)
{
if
(
e
.
msg
!=
YAML
::
ErrorMsg
::
END_OF_SEQ
)
throw
;
threw
=
true
;
}
if
(
!
threw
)
return
" no exception thrown for less indented explicit indentation for "
"a literal block scalar"
;
}
return
true
;
}
// 8.4
TEST
ChompingFinalLineBreak
()
{
HANDLE
(
ex8_4
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"strip"
);
EXPECT_SCALAR
(
"!"
,
0
,
"text"
);
EXPECT_SCALAR
(
"?"
,
0
,
"clip"
);
EXPECT_SCALAR
(
"!"
,
0
,
"text
\n
"
);
EXPECT_SCALAR
(
"?"
,
0
,
"keep"
);
EXPECT_SCALAR
(
"!"
,
0
,
"text
\n
"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.5
TEST
ChompingTrailingLines
()
{
HANDLE
(
ex8_5
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"strip"
);
EXPECT_SCALAR
(
"!"
,
0
,
"# text"
);
EXPECT_SCALAR
(
"?"
,
0
,
"clip"
);
EXPECT_SCALAR
(
"!"
,
0
,
"# text
\n
"
);
EXPECT_SCALAR
(
"?"
,
0
,
"keep"
);
EXPECT_SCALAR
(
"!"
,
0
,
"# text
\n
"
);
// Note: I believe this is a bug in the
// YAML spec - it should be "# text\n\n"
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.6
TEST
EmptyScalarChomping
()
{
HANDLE
(
ex8_6
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"strip"
);
EXPECT_SCALAR
(
"!"
,
0
,
""
);
EXPECT_SCALAR
(
"?"
,
0
,
"clip"
);
EXPECT_SCALAR
(
"!"
,
0
,
""
);
EXPECT_SCALAR
(
"?"
,
0
,
"keep"
);
EXPECT_SCALAR
(
"!"
,
0
,
"
\n
"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.7
TEST
LiteralScalar
()
{
HANDLE
(
ex8_7
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"literal
\n\t
text
\n
"
);
EXPECT_DOC_END
();
DONE
();
}
// 8.8
TEST
LiteralContent
()
{
HANDLE
(
ex8_8
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"
\n\n
literal
\n
\n\n
text
\n
"
);
EXPECT_DOC_END
();
DONE
();
}
// 8.9
TEST
FoldedScalar
()
{
HANDLE
(
ex8_9
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"folded text
\n
"
);
EXPECT_DOC_END
();
DONE
();
}
// 8.10
TEST
FoldedLines
()
{
HANDLE
(
ex8_10
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"
\n
folded line
\n
next line
\n
* bullet
\n\n
* list
\n
* "
"lines
\n\n
last line
\n
"
);
EXPECT_DOC_END
();
DONE
();
}
// 8.11
TEST
MoreIndentedLines
()
{
HANDLE
(
ex8_11
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"
\n
folded line
\n
next line
\n
* bullet
\n\n
* list
\n
* "
"lines
\n\n
last line
\n
"
);
EXPECT_DOC_END
();
DONE
();
}
// 8.12
TEST
EmptySeparationLines
()
{
HANDLE
(
ex8_12
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"
\n
folded line
\n
next line
\n
* bullet
\n\n
* list
\n
* "
"lines
\n\n
last line
\n
"
);
EXPECT_DOC_END
();
DONE
();
}
// 8.13
TEST
FinalEmptyLines
()
{
HANDLE
(
ex8_13
);
EXPECT_DOC_START
();
EXPECT_SCALAR
(
"!"
,
0
,
"
\n
folded line
\n
next line
\n
* bullet
\n\n
* list
\n
* "
"lines
\n\n
last line
\n
"
);
EXPECT_DOC_END
();
DONE
();
}
// 8.14
TEST
BlockSequence
()
{
HANDLE
(
ex8_14
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"block sequence"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"one"
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"two"
);
EXPECT_SCALAR
(
"?"
,
0
,
"three"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.15
TEST
BlockSequenceEntryTypes
()
{
HANDLE
(
ex8_15
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_NULL
(
0
);
EXPECT_SCALAR
(
"!"
,
0
,
"block node
\n
"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"one"
);
EXPECT_SCALAR
(
"?"
,
0
,
"two"
);
EXPECT_SEQ_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"one"
);
EXPECT_SCALAR
(
"?"
,
0
,
"two"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.16
TEST
BlockMappings
()
{
HANDLE
(
ex8_16
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"block mapping"
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"key"
);
EXPECT_SCALAR
(
"?"
,
0
,
"value"
);
EXPECT_MAP_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.17
TEST
ExplicitBlockMappingEntries
()
{
HANDLE
(
ex8_17
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"explicit key"
);
EXPECT_NULL
(
0
);
EXPECT_SCALAR
(
"!"
,
0
,
"block key
\n
"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"one"
);
EXPECT_SCALAR
(
"?"
,
0
,
"two"
);
EXPECT_SEQ_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.18
TEST
ImplicitBlockMappingEntries
()
{
HANDLE
(
ex8_18
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"plain key"
);
EXPECT_SCALAR
(
"?"
,
0
,
"in-line value"
);
EXPECT_NULL
(
0
);
EXPECT_NULL
(
0
);
EXPECT_SCALAR
(
"!"
,
0
,
"quoted key"
);
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"entry"
);
EXPECT_SEQ_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.19
TEST
CompactBlockMappings
()
{
HANDLE
(
ex8_19
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"sun"
);
EXPECT_SCALAR
(
"?"
,
0
,
"yellow"
);
EXPECT_MAP_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"earth"
);
EXPECT_SCALAR
(
"?"
,
0
,
"blue"
);
EXPECT_MAP_END
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"moon"
);
EXPECT_SCALAR
(
"?"
,
0
,
"white"
);
EXPECT_MAP_END
();
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.20
TEST
BlockNodeTypes
()
{
HANDLE
(
ex8_20
);
EXPECT_DOC_START
();
EXPECT_SEQ_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"!"
,
0
,
"flow in block"
);
EXPECT_SCALAR
(
"!"
,
0
,
"Block scalar
\n
"
);
EXPECT_MAP_START
(
"tag:yaml.org,2002:map"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"foo"
);
EXPECT_SCALAR
(
"?"
,
0
,
"bar"
);
EXPECT_MAP_END
();
EXPECT_SEQ_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.21
TEST
BlockScalarNodes
()
{
HANDLE
(
ex8_21
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"literal"
);
EXPECT_SCALAR
(
"!"
,
0
,
"value"
);
// Note: I believe this is a bug in the YAML
// spec - it should be "value\n"
EXPECT_SCALAR
(
"?"
,
0
,
"folded"
);
EXPECT_SCALAR
(
"!foo"
,
0
,
"value"
);
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
// 8.22
TEST
BlockCollectionNodes
()
{
HANDLE
(
ex8_22
);
EXPECT_DOC_START
();
EXPECT_MAP_START
(
"?"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"sequence"
);
EXPECT_SEQ_START
(
"tag:yaml.org,2002:seq"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"entry"
);
EXPECT_SEQ_START
(
"tag:yaml.org,2002:seq"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"nested"
);
EXPECT_SEQ_END
();
EXPECT_SEQ_END
();
EXPECT_SCALAR
(
"?"
,
0
,
"mapping"
);
EXPECT_MAP_START
(
"tag:yaml.org,2002:map"
,
0
);
EXPECT_SCALAR
(
"?"
,
0
,
"foo"
);
EXPECT_SCALAR
(
"?"
,
0
,
"bar"
);
EXPECT_MAP_END
();
EXPECT_MAP_END
();
EXPECT_DOC_END
();
DONE
();
}
}
}
test/integration/handler_spec_test.cpp
0 → 100644
View file @
ace9c49e
#include "specexamples.h" // IWYU pragma: keep
#include "yaml-cpp/eventhandler.h"
#include "yaml-cpp/yaml.h" // IWYU pragma: keep
#include "gmock/gmock.h"
#include "gtest/gtest.h"
using
::
testing
::
_
;
using
::
testing
::
InSequence
;
using
::
testing
::
NiceMock
;
using
::
testing
::
StrictMock
;
#define EXPECT_THROW_PARSER_EXCEPTION(statement, message) \
ASSERT_THROW(statement, ParserException); \
try { \
statement; \
} \
catch (const ParserException& e) { \
EXPECT_EQ(e.msg, message); \
}
namespace
YAML
{
namespace
{
class
MockEventHandler
:
public
EventHandler
{
public:
MOCK_METHOD1
(
OnDocumentStart
,
void
(
const
Mark
&
));
MOCK_METHOD0
(
OnDocumentEnd
,
void
());
MOCK_METHOD2
(
OnNull
,
void
(
const
Mark
&
,
anchor_t
));
MOCK_METHOD2
(
OnAlias
,
void
(
const
Mark
&
,
anchor_t
));
MOCK_METHOD4
(
OnScalar
,
void
(
const
Mark
&
,
const
std
::
string
&
,
anchor_t
,
const
std
::
string
&
));
MOCK_METHOD3
(
OnSequenceStart
,
void
(
const
Mark
&
,
const
std
::
string
&
,
anchor_t
));
MOCK_METHOD0
(
OnSequenceEnd
,
void
());
MOCK_METHOD3
(
OnMapStart
,
void
(
const
Mark
&
,
const
std
::
string
&
,
anchor_t
));
MOCK_METHOD0
(
OnMapEnd
,
void
());
};
class
SpecTest
:
public
::
testing
::
Test
{
protected:
void
Parse
(
const
std
::
string
&
example
)
{
std
::
stringstream
stream
(
example
);
Parser
parser
(
stream
);
while
(
parser
.
HandleNextDocument
(
handler
))
{
}
}
void
IgnoreParse
(
const
std
::
string
&
example
)
{
std
::
stringstream
stream
(
example
);
Parser
parser
(
stream
);
while
(
parser
.
HandleNextDocument
(
nice_handler
))
{
}
}
InSequence
sequence
;
StrictMock
<
MockEventHandler
>
handler
;
NiceMock
<
MockEventHandler
>
nice_handler
;
};
TEST_F
(
SpecTest
,
Ex2_1_SeqScalars
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Mark McGwire"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Ken Griffey"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_1
);
}
// 2.2
TEST_F
(
SpecTest
,
Ex2_2_MappingScalarsToScalars
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"hr"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"65"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"avg"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"0.278"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"rbi"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"147"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_2
);
}
// 2.3
TEST_F
(
SpecTest
,
Ex2_3_MappingScalarsToSequences
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"american"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Boston Red Sox"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Detroit Tigers"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"New York Yankees"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"national"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"New York Mets"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Chicago Cubs"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Atlanta Braves"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_3
);
}
// 2.4
TEST_F
(
SpecTest
,
Ex2_4_SequenceOfMappings
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"name"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Mark McGwire"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"hr"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"65"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"avg"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"0.278"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"name"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"hr"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"63"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"avg"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"0.288"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_4
);
}
// 2.5
TEST_F
(
SpecTest
,
Ex2_5_SequenceOfSequences
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"name"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"hr"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"avg"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Mark McGwire"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"65"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"0.278"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"63"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"0.288"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_5
);
}
// 2.6
TEST_F
(
SpecTest
,
Ex2_6_MappingOfMappings
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Mark McGwire"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"hr"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"65"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"avg"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"0.278"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"hr"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"63"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"avg"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"0.288"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_6
);
}
// 2.7
TEST_F
(
SpecTest
,
Ex2_7_TwoDocumentsInAStream
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Mark McGwire"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Ken Griffey"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Chicago Cubs"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"St Louis Cardinals"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_7
);
}
// 2.8
TEST_F
(
SpecTest
,
Ex2_8_PlayByPlayFeed
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"time"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"20:03:20"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"player"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"action"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"strike (miss)"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"time"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"20:03:47"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"player"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"action"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"grand slam"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_8
);
}
// 2.9
TEST_F
(
SpecTest
,
Ex2_9_SingleDocumentWithTwoComments
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"hr"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Mark McGwire"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"rbi"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Ken Griffey"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_9
);
}
// 2.10
TEST_F
(
SpecTest
,
Ex2_10_SimpleAnchor
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"hr"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Mark McGwire"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
1
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"rbi"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Ken Griffey"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_10
);
}
// 2.11
TEST_F
(
SpecTest
,
Ex2_11_MappingBetweenSequences
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Detroit Tigers"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Chicago cubs"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"2001-07-23"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"New York Yankees"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Atlanta Braves"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"2001-07-02"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"2001-08-12"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"2001-08-14"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_11
);
}
// 2.12
TEST_F
(
SpecTest
,
Ex2_12_CompactNestedMapping
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"item"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Super Hoop"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"quantity"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"1"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"item"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Basketball"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"quantity"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"4"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"item"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Big Shoes"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"quantity"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"1"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_12
);
}
// 2.13
TEST_F
(
SpecTest
,
Ex2_13_InLiteralsNewlinesArePreserved
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"
\\
//||
\\
/||
\n
"
"// || ||__"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_13
);
}
// 2.14
TEST_F
(
SpecTest
,
Ex2_14_InFoldedScalarsNewlinesBecomeSpaces
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"Mark McGwire's year was crippled by a knee injury."
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_14
);
}
// 2.15
TEST_F
(
SpecTest
,
Ex2_15_FoldedNewlinesArePreservedForMoreIndentedAndBlankLines
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"Sammy Sosa completed another fine season with great stats.
\n
"
"
\n
"
" 63 Home Runs
\n
"
" 0.288 Batting Average
\n
"
"
\n
"
"What a year!"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_15
);
}
// 2.16
TEST_F
(
SpecTest
,
Ex2_16_IndentationDeterminesScope
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"name"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Mark McGwire"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"accomplishment"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"Mark set a major league home run record in 1998.
\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"stats"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"65 Home Runs
\n
"
"0.278 Batting Average
\n
"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_16
);
}
// 2.17
TEST_F
(
SpecTest
,
Ex2_17_QuotedScalars
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"unicode"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"Sosa did fine.\u263A"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"control"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"
\b
1998
\t
1999
\t
2000
\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"hex esc"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"
\x0d\x0a
is
\r\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"single"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"
\"
Howdy!
\"
he cried."
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"quoted"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
" # Not a 'comment'."
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"tie-fighter"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"|
\\
-*-/|"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_17
);
}
// 2.18
TEST_F
(
SpecTest
,
Ex2_18_MultiLineFlowScalars
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"plain"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"This unquoted scalar spans many lines."
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"quoted"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"So does this quoted scalar.
\n
"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_18
);
}
// TODO: 2.19 - 2.22 schema tags
// 2.23
TEST_F
(
SpecTest
,
Ex2_23_VariousExplicitTags
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"not-date"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
"2002-04-28"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"picture"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:binary"
,
0
,
"R0lGODlhDAAMAIQAAP//9/X
\n
"
"17unp5WZmZgAAAOfn515eXv
\n
"
"Pz7Y6OjuDg4J+fn5OTk6enp
\n
"
"56enmleECcgggoBADs=
\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"application specific tag"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!something"
,
0
,
"The semantics of the tag
\n
"
"above may be different for
\n
"
"different documents."
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_23
);
}
// 2.24
TEST_F
(
SpecTest
,
Ex2_24_GlobalTags
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"tag:clarkevans.com,2002:shape"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"tag:clarkevans.com,2002:circle"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"center"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
1
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"x"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"73"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"y"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"129"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"radius"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"7"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"tag:clarkevans.com,2002:line"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"start"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"finish"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"x"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"89"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"y"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"102"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"tag:clarkevans.com,2002:label"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"start"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"color"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"0xFFEEBB"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"text"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Pretty vector drawing."
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_24
);
}
// 2.25
TEST_F
(
SpecTest
,
Ex2_25_UnorderedSets
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"tag:yaml.org,2002:set"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Mark McGwire"
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Ken Griffey"
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_25
);
}
// 2.26
TEST_F
(
SpecTest
,
Ex2_26_OrderedMappings
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"tag:yaml.org,2002:omap"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Mark McGwire"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"65"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Sammy Sosa"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"63"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Ken Griffey"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"58"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_26
);
}
// 2.27
TEST_F
(
SpecTest
,
Ex2_27_Invoice
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"tag:clarkevans.com,2002:invoice"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"invoice"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"34843"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"date"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"2001-01-23"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"bill-to"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
1
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"given"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Chris"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"family"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Dumars"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"address"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"lines"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"458 Walkman Dr.
\n
"
"Suite #292
\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"city"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Royal Oak"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"state"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"MI"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"postal"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"48046"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"ship-to"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"product"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"sku"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"BL394D"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"quantity"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"4"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"description"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Basketball"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"price"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"450.00"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"sku"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"BL4438H"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"quantity"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"1"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"description"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Super Hoop"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"price"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"2392.00"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"tax"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"251.42"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"total"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"4443.52"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"comments"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Late afternoon is best. Backup contact is "
"Nancy Billsmer @ 338-4338."
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_27
);
}
// 2.28
TEST_F
(
SpecTest
,
Ex2_28_LogFile
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Time"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"2001-11-23 15:01:42 -5"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"User"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"ed"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Warning"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"This is an error message for the log file"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Time"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"2001-11-23 15:02:31 -5"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"User"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"ed"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Warning"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"A slightly different error message."
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Date"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"2001-11-23 15:03:17 -5"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"User"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"ed"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Fatal"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Unknown variable
\"
bar
\"
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Stack"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"file"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"TopClass.py"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"line"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"23"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"code"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"x = MoreObject(
\"
345
\\
n
\"
)
\n
"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"file"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"MoreClass.py"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"line"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"58"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"code"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"foo = bar"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex2_28
);
}
// TODO: 5.1 - 5.2 BOM
// 5.3
TEST_F
(
SpecTest
,
Ex5_3_BlockStructureIndicators
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"sequence"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"one"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"two"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"mapping"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"sky"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"blue"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"sea"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"green"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex5_3
);
}
// 5.4
TEST_F
(
SpecTest
,
Ex5_4_FlowStructureIndicators
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"sequence"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"one"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"two"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"mapping"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"sky"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"blue"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"sea"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"green"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex5_4
);
}
// 5.5
TEST_F
(
SpecTest
,
Ex5_5_CommentIndicator
)
{
Parse
(
ex5_5
);
}
// 5.6
TEST_F
(
SpecTest
,
Ex5_6_NodePropertyIndicators
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"anchored"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!local"
,
1
,
"value"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"alias"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex5_6
);
}
// 5.7
TEST_F
(
SpecTest
,
Ex5_7_BlockScalarIndicators
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"literal"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"some
\n
text
\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"folded"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"some text
\n
"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex5_7
);
}
// 5.8
TEST_F
(
SpecTest
,
Ex5_8_QuotedScalarIndicators
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"single"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"text"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"double"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"text"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex5_8
);
}
// TODO: 5.9 directive
// TODO: 5.10 reserved indicator
// 5.11
TEST_F
(
SpecTest
,
Ex5_11_LineBreakCharacters
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"Line break (no glyph)
\n
"
"Line break (glyphed)
\n
"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex5_11
);
}
// 5.12
TEST_F
(
SpecTest
,
Ex5_12_TabsAndSpaces
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"quoted"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"Quoted
\t
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"block"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"void main() {
\n
"
"
\t
printf(
\"
Hello, world!
\\
n
\"
);
\n
"
"}"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex5_12
);
}
// 5.13
TEST_F
(
SpecTest
,
Ex5_13_EscapedCharacters
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"Fun with
\x5C
\x22
\x07
\x08
\x1B
\x0C
\x0A
\x0D
\x09
\x0B
"
+
std
::
string
(
"
\x00
"
,
1
)
+
"
\x20
\xA0
\x85
\xe2\x80\xa8
\xe2\x80\xa9
A A A"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex5_13
);
}
// 5.14
TEST_F
(
SpecTest
,
Ex5_14_InvalidEscapedCharacters
)
{
EXPECT_THROW_PARSER_EXCEPTION
(
IgnoreParse
(
ex5_14
),
std
::
string
(
YAML
::
ErrorMsg
::
INVALID_ESCAPE
)
+
"c"
);
}
// 6.1
TEST_F
(
SpecTest
,
Ex6_1_IndentationSpaces
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Not indented"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"By one space"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"By four
\n
spaces
\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Flow style"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"By two"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Also by two"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Still by two"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_1
);
}
// 6.2
TEST_F
(
SpecTest
,
Ex6_2_IndentationIndicators
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"a"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"b"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"c"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"d"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_2
);
}
// 6.3
TEST_F
(
SpecTest
,
Ex6_3_SeparationSpaces
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"foo"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"bar"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"baz"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"baz"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_3
);
}
// 6.4
TEST_F
(
SpecTest
,
Ex6_4_LinePrefixes
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"plain"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"text lines"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"quoted"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"text lines"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"block"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"text
\n
\t
lines
\n
"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_4
);
}
// 6.5
TEST_F
(
SpecTest
,
Ex6_5_EmptyLines
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Folding"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"Empty line
\n
as a line feed"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Chomping"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"Clipped empty lines
\n
"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_5
);
}
// 6.6
TEST_F
(
SpecTest
,
Ex6_6_LineFolding
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"trimmed
\n\n\n
as space"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_6
);
}
// 6.7
TEST_F
(
SpecTest
,
Ex6_7_BlockFolding
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"foo
\n\n\t
bar
\n\n
baz
\n
"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_7
);
}
// 6.8
TEST_F
(
SpecTest
,
Ex6_8_FlowFolding
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
" foo
\n
bar
\n
baz "
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_8
);
}
// 6.9
TEST_F
(
SpecTest
,
Ex6_9_SeparatedComment
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"key"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"value"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_9
);
}
// 6.10
TEST_F
(
SpecTest
,
Ex6_10_CommentLines
)
{
Parse
(
ex6_10
);
}
// 6.11
TEST_F
(
SpecTest
,
_MultiLineComments
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"key"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"value"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_11
);
}
// 6.12
TEST_F
(
SpecTest
,
Ex6_12_SeparationSpacesII
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"first"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Sammy"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"last"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Sosa"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"hr"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"65"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"avg"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"0.278"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_12
);
}
// 6.13
TEST_F
(
SpecTest
,
Ex6_13_ReservedDirectives
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"foo"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_13
);
}
// 6.14
TEST_F
(
SpecTest
,
Ex6_14_YAMLDirective
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"foo"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_14
);
}
// 6.15
TEST_F
(
SpecTest
,
Ex6_15_InvalidRepeatedYAMLDirective
)
{
EXPECT_THROW_PARSER_EXCEPTION
(
IgnoreParse
(
ex6_15
),
ErrorMsg
::
REPEATED_YAML_DIRECTIVE
);
}
// 6.16
TEST_F
(
SpecTest
,
Ex6_16_TagDirective
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
"foo"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_16
);
}
// 6.17
TEST_F
(
SpecTest
,
Ex6_17_InvalidRepeatedTagDirective
)
{
EXPECT_THROW_PARSER_EXCEPTION
(
IgnoreParse
(
ex6_17
),
YAML
::
ErrorMsg
::
REPEATED_TAG_DIRECTIVE
);
}
// 6.18
TEST_F
(
SpecTest
,
Ex6_18_PrimaryTagHandle
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!foo"
,
0
,
"bar"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:example.com,2000:app/foo"
,
0
,
"bar"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_18
);
}
// 6.19
TEST_F
(
SpecTest
,
Ex6_19_SecondaryTagHandle
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:example.com,2000:app/int"
,
0
,
"1 - 3"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_19
);
}
// 6.20
TEST_F
(
SpecTest
,
Ex6_20_TagHandles
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:example.com,2000:app/foo"
,
0
,
"bar"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_20
);
}
// 6.21
TEST_F
(
SpecTest
,
Ex6_21_LocalTagPrefix
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!my-light"
,
0
,
"fluorescent"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!my-light"
,
0
,
"green"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_21
);
}
// 6.22
TEST_F
(
SpecTest
,
Ex6_22_GlobalTagPrefix
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:example.com,2000:app/foo"
,
0
,
"bar"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_22
);
}
// 6.23
TEST_F
(
SpecTest
,
Ex6_23_NodeProperties
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
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
(
_
,
"?"
,
2
,
"baz"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_23
);
}
// 6.24
TEST_F
(
SpecTest
,
Ex6_24_VerbatimTags
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
"foo"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!bar"
,
0
,
"baz"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_24
);
}
// TODO: Implement
TEST_F
(
SpecTest
,
DISABLED_Ex6_25_InvalidVerbatimTags
)
{
Parse
(
ex6_25
);
FAIL
()
<<
"not implemented yet"
;
}
// 6.26
TEST_F
(
SpecTest
,
Ex6_26_TagShorthands
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!local"
,
0
,
"foo"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
"bar"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:example.com,2000:app/tag%21"
,
0
,
"baz"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_26
);
}
// 6.27
TEST_F
(
SpecTest
,
Ex6_27a_InvalidTagShorthands
)
{
EXPECT_THROW_PARSER_EXCEPTION
(
IgnoreParse
(
ex6_27a
),
ErrorMsg
::
TAG_WITH_NO_SUFFIX
);
}
// TODO: should we reject this one (since !h! is not declared)?
TEST_F
(
SpecTest
,
DISABLED_Ex6_27b_InvalidTagShorthands
)
{
Parse
(
ex6_27b
);
FAIL
()
<<
"not implemented yet"
;
}
// 6.28
TEST_F
(
SpecTest
,
Ex6_28_NonSpecificTags
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"12"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"12"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"12"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_28
);
}
// 6.29
TEST_F
(
SpecTest
,
Ex6_29_NodeAnchors
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"First occurrence"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
1
,
"Value"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Second occurrence"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex6_29
);
}
// 7.1
TEST_F
(
SpecTest
,
Ex7_1_AliasNodes
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"First occurrence"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
1
,
"Foo"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Second occurrence"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Override anchor"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
2
,
"Bar"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Reuse anchor"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
2
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_1
);
}
// 7.2
TEST_F
(
SpecTest
,
Ex7_2_EmptyNodes
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"foo"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
""
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
""
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"bar"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_2
);
}
// 7.3
TEST_F
(
SpecTest
,
Ex7_3_CompletelyEmptyNodes
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"foo"
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"bar"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_3
);
}
// 7.4
TEST_F
(
SpecTest
,
Ex7_4_DoubleQuotedImplicitKeys
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"implicit block key"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"implicit flow key"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"value"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_4
);
}
// 7.5
TEST_F
(
SpecTest
,
Ex7_5_DoubleQuotedLineBreaks
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"folded to a space,
\n
to a line feed, or
\t
\t
non-content"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_5
);
}
// 7.6
TEST_F
(
SpecTest
,
Ex7_6_DoubleQuotedLines
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
" 1st non-empty
\n
2nd non-empty 3rd non-empty "
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_6
);
}
// 7.7
TEST_F
(
SpecTest
,
Ex7_7_SingleQuotedCharacters
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"here's to
\"
quotes
\"
"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_7
);
}
// 7.8
TEST_F
(
SpecTest
,
Ex7_8_SingleQuotedImplicitKeys
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"implicit block key"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"implicit flow key"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"value"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_8
);
}
// 7.9
TEST_F
(
SpecTest
,
Ex7_9_SingleQuotedLines
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
" 1st non-empty
\n
2nd non-empty 3rd non-empty "
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_9
);
}
// 7.10
TEST_F
(
SpecTest
,
Ex7_10_PlainCharacters
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"::vector"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
": - ()"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"Up, up, and away!"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"-123"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"http://example.com/foo#bar"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"::vector"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
": - ()"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"Up, up, and away!"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"-123"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"http://example.com/foo#bar"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_10
);
}
// 7.11
TEST_F
(
SpecTest
,
Ex7_11_PlainImplicitKeys
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"implicit block key"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"implicit flow key"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"value"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_11
);
}
// 7.12
TEST_F
(
SpecTest
,
Ex7_12_PlainLines
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"1st non-empty
\n
2nd non-empty 3rd non-empty"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_12
);
}
// 7.13
TEST_F
(
SpecTest
,
Ex7_13_FlowSequence
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"one"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"two"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"three"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"four"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_13
);
}
// 7.14
TEST_F
(
SpecTest
,
Ex7_14_FlowSequenceEntries
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"double quoted"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"single quoted"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"plain text"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"nested"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"single"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"pair"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_14
);
}
// 7.15
TEST_F
(
SpecTest
,
Ex7_15_FlowMappings
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"one"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"two"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"three"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"four"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"five"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"six"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"seven"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"eight"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_15
);
}
// 7.16
TEST_F
(
SpecTest
,
Ex7_16_FlowMappingEntries
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"explicit"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"entry"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"implicit"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"entry"
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_16
);
}
// 7.17
TEST_F
(
SpecTest
,
Ex7_17_FlowMappingSeparateValues
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"unquoted"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"separate"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"http://foo.com"
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"omitted value"
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"omitted key"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_17
);
}
// 7.18
TEST_F
(
SpecTest
,
Ex7_18_FlowMappingAdjacentValues
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"adjacent"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"value"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"readable"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"value"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"empty"
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_18
);
}
// 7.19
TEST_F
(
SpecTest
,
Ex7_19_SinglePairFlowMappings
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"foo"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"bar"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_19
);
}
// 7.20
TEST_F
(
SpecTest
,
Ex7_20_SinglePairExplicitEntry
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"foo bar"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"baz"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_20
);
}
// 7.21
TEST_F
(
SpecTest
,
Ex7_21_SinglePairImplicitEntries
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"YAML"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"separate"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"empty key entry"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"JSON"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"like"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"adjacent"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_21
);
}
// 7.22
TEST_F
(
SpecTest
,
Ex7_22_InvalidImplicitKeys
)
{
EXPECT_THROW_PARSER_EXCEPTION
(
IgnoreParse
(
ex7_22
),
YAML
::
ErrorMsg
::
END_OF_SEQ_FLOW
);
}
// 7.23
TEST_F
(
SpecTest
,
Ex7_23_FlowContent
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"a"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"b"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"a"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"b"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"a"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"b"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"c"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_23
);
}
// 7.24
TEST_F
(
SpecTest
,
Ex7_24_FlowNodes
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
"a"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"b"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
1
,
"c"
));
EXPECT_CALL
(
handler
,
OnAlias
(
_
,
1
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"tag:yaml.org,2002:str"
,
0
,
""
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex7_24
);
}
// 8.1
TEST_F
(
SpecTest
,
Ex8_1_BlockScalarHeader
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"literal
\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
" folded
\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"keep
\n\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
" strip"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_1
);
}
// 8.2
TEST_F
(
SpecTest
,
Ex8_2_BlockIndentationHeader
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"detected
\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"
\n\n
# detected
\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
" explicit
\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"
\t\n
detected
\n
"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_2
);
}
// 8.3
TEST_F
(
SpecTest
,
Ex8_3a_InvalidBlockScalarIndentationIndicators
)
{
EXPECT_THROW_PARSER_EXCEPTION
(
IgnoreParse
(
ex8_3a
),
YAML
::
ErrorMsg
::
END_OF_SEQ
);
}
TEST_F
(
SpecTest
,
Ex8_3b_InvalidBlockScalarIndentationIndicators
)
{
EXPECT_THROW_PARSER_EXCEPTION
(
IgnoreParse
(
ex8_3b
),
YAML
::
ErrorMsg
::
END_OF_SEQ
);
}
TEST_F
(
SpecTest
,
Ex8_3c_InvalidBlockScalarIndentationIndicators
)
{
EXPECT_THROW_PARSER_EXCEPTION
(
IgnoreParse
(
ex8_3c
),
ErrorMsg
::
END_OF_SEQ
);
}
// 8.4
TEST_F
(
SpecTest
,
Ex8_4_ChompingFinalLineBreak
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"strip"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"text"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"clip"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"text
\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"keep"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"text
\n
"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_4
);
}
// 8.5
TEST_F
(
SpecTest
,
DISABLED_Ex8_5_ChompingTrailingLines
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"strip"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"# text"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"clip"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"# text
\n
"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"keep"
));
// NOTE: I believe this is a bug in the YAML spec -
// it should be "# text\n\n"
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"# text
\n
"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_5
);
}
// 8.6
TEST_F
(
SpecTest
,
Ex8_6_EmptyScalarChomping
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"strip"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
""
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"clip"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
""
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"keep"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"
\n
"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_6
);
}
// 8.7
TEST_F
(
SpecTest
,
Ex8_7_LiteralScalar
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"literal
\n\t
text
\n
"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_7
);
}
// 8.8
TEST_F
(
SpecTest
,
Ex8_8_LiteralContent
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"
\n\n
literal
\n
\n\n
text
\n
"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_8
);
}
// 8.9
TEST_F
(
SpecTest
,
Ex8_9_FoldedScalar
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"folded text
\n
"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_9
);
}
// 8.10
TEST_F
(
SpecTest
,
Ex8_10_FoldedLines
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"
\n
folded line
\n
next line
\n
* bullet
\n\n
* list
\n
* "
"lines
\n\n
last line
\n
"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_10
);
}
// 8.11
TEST_F
(
SpecTest
,
Ex8_11_MoreIndentedLines
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"
\n
folded line
\n
next line
\n
* bullet
\n\n
* list
\n
* "
"lines
\n\n
last line
\n
"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_11
);
}
// 8.12
TEST_F
(
SpecTest
,
Ex8_12_EmptySeparationLines
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"
\n
folded line
\n
next line
\n
* bullet
\n\n
* list
\n
* "
"lines
\n\n
last line
\n
"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_12
);
}
// 8.13
TEST_F
(
SpecTest
,
Ex8_13_FinalEmptyLines
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"
\n
folded line
\n
next line
\n
* bullet
\n\n
* list
\n
* "
"lines
\n\n
last line
\n
"
));
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_13
);
}
// 8.14
TEST_F
(
SpecTest
,
Ex8_14_BlockSequence
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"block sequence"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"one"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"two"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"three"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_14
);
}
// 8.15
TEST_F
(
SpecTest
,
Ex8_15_BlockSequenceEntryTypes
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"block node
\n
"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"one"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"two"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"one"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"two"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_15
);
}
// 8.16
TEST_F
(
SpecTest
,
Ex8_16_BlockMappings
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"block mapping"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"key"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"value"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_16
);
}
// 8.17
TEST_F
(
SpecTest
,
Ex8_17_ExplicitBlockMappingEntries
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"explicit key"
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"block key
\n
"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"one"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"two"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_17
);
}
// 8.18
TEST_F
(
SpecTest
,
Ex8_18_ImplicitBlockMappingEntries
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"plain key"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"in-line value"
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnNull
(
_
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"quoted key"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"entry"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_18
);
}
// 8.19
TEST_F
(
SpecTest
,
Ex8_19_CompactBlockMappings
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"sun"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"yellow"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"earth"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"blue"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"moon"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"white"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_19
);
}
// 8.20
TEST_F
(
SpecTest
,
Ex8_20_BlockNodeTypes
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"flow in block"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"Block scalar
\n
"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"tag:yaml.org,2002:map"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"foo"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"bar"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_20
);
}
// 8.21
TEST_F
(
SpecTest
,
DISABLED_Ex8_21_BlockScalarNodes
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"literal"
));
// NOTE: I believe this is a bug in the YAML spec
// - it should be "value\n"
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!"
,
0
,
"value"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"folded"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"!foo"
,
0
,
"value"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_21
);
}
// 8.22
TEST_F
(
SpecTest
,
Ex8_22_BlockCollectionNodes
)
{
EXPECT_CALL
(
handler
,
OnDocumentStart
(
_
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"?"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"sequence"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"tag:yaml.org,2002:seq"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"entry"
));
EXPECT_CALL
(
handler
,
OnSequenceStart
(
_
,
"tag:yaml.org,2002:seq"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"nested"
));
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnSequenceEnd
());
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"mapping"
));
EXPECT_CALL
(
handler
,
OnMapStart
(
_
,
"tag:yaml.org,2002:map"
,
0
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"foo"
));
EXPECT_CALL
(
handler
,
OnScalar
(
_
,
"?"
,
0
,
"bar"
));
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnMapEnd
());
EXPECT_CALL
(
handler
,
OnDocumentEnd
());
Parse
(
ex8_22
);
}
}
}
test/specexamples.h
View file @
ace9c49e
namespace
Test
{
namespace
Spec
{
namespace
{
const
char
*
ex2_1
=
"- Mark McGwire
\n
"
"- Sammy Sosa
\n
"
...
...
@@ -845,4 +844,3 @@ const char *ex8_22 =
"mapping: !!map
\n
"
" foo: bar
\n
"
;
}
}
test/spectests.cpp
deleted
100644 → 0
View file @
e3f120b9
#include <iostream>
#include "spectests.h"
#include "yaml-cpp/yaml.h" // IWYU pragma: keep
namespace
YAML
{
class
Exception
;
}
// namespace YAML
namespace
Test
{
namespace
{
void
RunSpecTest
(
TEST
(
*
test
)(),
const
std
::
string
&
index
,
const
std
::
string
&
name
,
int
&
passed
,
int
&
total
)
{
TEST
ret
;
try
{
ret
=
test
();
}
catch
(
const
YAML
::
Exception
&
e
)
{
ret
.
ok
=
false
;
ret
.
error
=
std
::
string
(
" Exception caught: "
)
+
e
.
what
();
}
if
(
!
ret
.
ok
)
{
std
::
cout
<<
"Spec test "
<<
index
<<
" failed: "
<<
name
<<
"
\n
"
;
std
::
cout
<<
ret
.
error
<<
"
\n
"
;
}
if
(
ret
.
ok
)
passed
++
;
total
++
;
}
}
bool
RunSpecTests
()
{
int
passed
=
0
;
int
total
=
0
;
RunSpecTest
(
&
Spec
::
SeqScalars
,
"2.1"
,
"Sequence of Scalars"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
MappingScalarsToScalars
,
"2.2"
,
"Mapping Scalars to Scalars"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
MappingScalarsToSequences
,
"2.3"
,
"Mapping Scalars to Sequences"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SequenceOfMappings
,
"2.4"
,
"Sequence of Mappings"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SequenceOfSequences
,
"2.5"
,
"Sequence of Sequences"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
MappingOfMappings
,
"2.6"
,
"Mapping of Mappings"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
TwoDocumentsInAStream
,
"2.7"
,
"Two Documents in a Stream"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
PlayByPlayFeed
,
"2.8"
,
"Play by Play Feed from a Game"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SingleDocumentWithTwoComments
,
"2.9"
,
"Single Document with Two Comments"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SimpleAnchor
,
"2.10"
,
"Node for
\"
Sammy Sosa
\"
appears twice in this document"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
MappingBetweenSequences
,
"2.11"
,
"Mapping between Sequences"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
CompactNestedMapping
,
"2.12"
,
"Compact Nested Mapping"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
InLiteralsNewlinesArePreserved
,
"2.13"
,
"In literals, newlines are preserved"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
InFoldedScalarsNewlinesBecomeSpaces
,
"2.14"
,
"In folded scalars, newlines become spaces"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FoldedNewlinesArePreservedForMoreIndentedAndBlankLines
,
"2.15"
,
"Folded newlines are preserved for
\"
more indented
\"
and blank lines"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
IndentationDeterminesScope
,
"2.16"
,
"Indentation determines scope"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
QuotedScalars
,
"2.17"
,
"Quoted scalars"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
MultiLineFlowScalars
,
"2.18"
,
"Multi-line flow scalars"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
VariousExplicitTags
,
"2.23"
,
"Various Explicit Tags"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
GlobalTags
,
"2.24"
,
"Global Tags"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
UnorderedSets
,
"2.25"
,
"Unordered Sets"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
OrderedMappings
,
"2.26"
,
"Ordered Mappings"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
Invoice
,
"2.27"
,
"Invoice"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
LogFile
,
"2.28"
,
"Log File"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
BlockStructureIndicators
,
"5.3"
,
"Block Structure Indicators"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FlowStructureIndicators
,
"5.4"
,
"Flow Structure Indicators"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
NodePropertyIndicators
,
"5.6"
,
"Node Property Indicators"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
BlockScalarIndicators
,
"5.7"
,
"Block Scalar Indicators"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
QuotedScalarIndicators
,
"5.8"
,
"Quoted Scalar Indicators"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
LineBreakCharacters
,
"5.11"
,
"Line Break Characters"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
TabsAndSpaces
,
"5.12"
,
"Tabs and Spaces"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
EscapedCharacters
,
"5.13"
,
"Escaped Characters"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
InvalidEscapedCharacters
,
"5.14"
,
"Invalid Escaped Characters"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
IndentationSpaces
,
"6.1"
,
"Indentation Spaces"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
IndentationIndicators
,
"6.2"
,
"Indentation Indicators"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SeparationSpaces
,
"6.3"
,
"Separation Spaces"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
LinePrefixes
,
"6.4"
,
"Line Prefixes"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
EmptyLines
,
"6.5"
,
"Empty Lines"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
LineFolding
,
"6.6"
,
"Line Folding"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
BlockFolding
,
"6.7"
,
"Block Folding"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FlowFolding
,
"6.8"
,
"Flow Folding"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SeparatedComment
,
"6.9"
,
"Separated Comment"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
CommentLines
,
"6.10"
,
"Comment Lines"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
MultiLineComments
,
"6.11"
,
"Multi-Line Comments"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SeparationSpacesII
,
"6.12"
,
"Separation Spaces"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
ReservedDirectives
,
"6.13"
,
"Reserved Directives"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
YAMLDirective
,
"6.14"
,
"YAML Directive"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
InvalidRepeatedYAMLDirective
,
"6.15"
,
"Invalid Repeated YAML Directive"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
TagDirective
,
"6.16"
,
"Tag Directive"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
InvalidRepeatedTagDirective
,
"6.17"
,
"Invalid Repeated Tag Directive"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
PrimaryTagHandle
,
"6.18"
,
"Primary Tag Handle"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SecondaryTagHandle
,
"6.19"
,
"SecondaryTagHandle"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
TagHandles
,
"6.20"
,
"TagHandles"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
LocalTagPrefix
,
"6.21"
,
"LocalTagPrefix"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
GlobalTagPrefix
,
"6.22"
,
"GlobalTagPrefix"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
NodeProperties
,
"6.23"
,
"NodeProperties"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
VerbatimTags
,
"6.24"
,
"Verbatim Tags"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
InvalidVerbatimTags
,
"6.25"
,
"Invalid Verbatim Tags"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
TagShorthands
,
"6.26"
,
"Tag Shorthands"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
InvalidTagShorthands
,
"6.27"
,
"Invalid Tag Shorthands"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
NonSpecificTags
,
"6.28"
,
"Non Specific Tags"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
NodeAnchors
,
"6.29"
,
"Node Anchors"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
AliasNodes
,
"7.1"
,
"Alias Nodes"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
EmptyNodes
,
"7.2"
,
"Empty Nodes"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
CompletelyEmptyNodes
,
"7.3"
,
"Completely Empty Nodes"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
DoubleQuotedImplicitKeys
,
"7.4"
,
"Double Quoted Implicit Keys"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
DoubleQuotedLineBreaks
,
"7.5"
,
"Double Quoted Line Breaks"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
DoubleQuotedLines
,
"7.6"
,
"Double Quoted Lines"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SingleQuotedCharacters
,
"7.7"
,
"Single Quoted Characters"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SingleQuotedImplicitKeys
,
"7.8"
,
"Single Quoted Implicit Keys"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SingleQuotedLines
,
"7.9"
,
"Single Quoted Lines"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
PlainCharacters
,
"7.10"
,
"Plain Characters"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
PlainImplicitKeys
,
"7.11"
,
"Plain Implicit Keys"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
PlainLines
,
"7.12"
,
"Plain Lines"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FlowSequence
,
"7.13"
,
"Flow Sequence"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FlowSequenceEntries
,
"7.14"
,
"Flow Sequence Entries"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FlowMappings
,
"7.15"
,
"Flow Mappings"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FlowMappingEntries
,
"7.16"
,
"Flow Mapping Entries"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FlowMappingSeparateValues
,
"7.17"
,
"Flow Mapping Separate Values"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FlowMappingAdjacentValues
,
"7.18"
,
"Flow Mapping Adjacent Values"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SinglePairFlowMappings
,
"7.19"
,
"Single Pair Flow Mappings"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SinglePairExplicitEntry
,
"7.20"
,
"Single Pair Explicit Entry"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
SinglePairImplicitEntries
,
"7.21"
,
"Single Pair Implicit Entries"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
InvalidImplicitKeys
,
"7.22"
,
"Invalid Implicit Keys"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FlowContent
,
"7.23"
,
"Flow Content"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FlowNodes
,
"7.24"
,
"FlowNodes"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
BlockScalarHeader
,
"8.1"
,
"Block Scalar Header"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
BlockIndentationHeader
,
"8.2"
,
"Block Indentation Header"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
InvalidBlockScalarIndentationIndicators
,
"8.3"
,
"Invalid Block Scalar Indentation Indicators"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
ChompingFinalLineBreak
,
"8.4"
,
"Chomping Final Line Break"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
ChompingTrailingLines
,
"8.5"
,
"Chomping Trailing Lines"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
EmptyScalarChomping
,
"8.6"
,
"Empty Scalar Chomping"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
LiteralScalar
,
"8.7"
,
"Literal Scalar"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
LiteralContent
,
"8.8"
,
"Literal Content"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FoldedScalar
,
"8.9"
,
"Folded Scalar"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FoldedLines
,
"8.10"
,
"Folded Lines"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
MoreIndentedLines
,
"8.11"
,
"More Indented Lines"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
EmptySeparationLines
,
"8.12"
,
"Empty Separation Lines"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
FinalEmptyLines
,
"8.13"
,
"Final Empty Lines"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
BlockSequence
,
"8.14"
,
"Block Sequence"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
BlockSequenceEntryTypes
,
"8.15"
,
"Block Sequence Entry Types"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
BlockMappings
,
"8.16"
,
"Block Mappings"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
ExplicitBlockMappingEntries
,
"8.17"
,
"Explicit Block Mapping Entries"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
ImplicitBlockMappingEntries
,
"8.18"
,
"Implicit Block Mapping Entries"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
CompactBlockMappings
,
"8.19"
,
"Compact Block Mappings"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
BlockNodeTypes
,
"8.20"
,
"Block Node Types"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
BlockScalarNodes
,
"8.21"
,
"Block Scalar Nodes"
,
passed
,
total
);
RunSpecTest
(
&
Spec
::
BlockCollectionNodes
,
"8.22"
,
"Block Collection Nodes"
,
passed
,
total
);
std
::
cout
<<
"Spec tests: "
<<
passed
<<
"/"
<<
total
<<
" passed
\n
"
;
return
passed
==
total
;
}
}
test/spectests.h
deleted
100644 → 0
View file @
e3f120b9
#ifndef SPECTESTS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#define SPECTESTS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#if defined(_MSC_VER) || \
(defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
(__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
#pragma once
#endif
#include "teststruct.h"
namespace
Test
{
namespace
Spec
{
// 2.1
TEST
SeqScalars
();
// 2.2
TEST
MappingScalarsToScalars
();
// 2.3
TEST
MappingScalarsToSequences
();
// 2.4
TEST
SequenceOfMappings
();
// 2.5
TEST
SequenceOfSequences
();
// 2.6
TEST
MappingOfMappings
();
// 2.7
TEST
TwoDocumentsInAStream
();
// 2.8
TEST
PlayByPlayFeed
();
// 2.9
TEST
SingleDocumentWithTwoComments
();
// 2.10
TEST
SimpleAnchor
();
// 2.11
TEST
MappingBetweenSequences
();
// 2.12
TEST
CompactNestedMapping
();
// 2.13
TEST
InLiteralsNewlinesArePreserved
();
// 2.14
TEST
InFoldedScalarsNewlinesBecomeSpaces
();
// 2.15
TEST
FoldedNewlinesArePreservedForMoreIndentedAndBlankLines
();
// 2.16
TEST
IndentationDeterminesScope
();
// 2.17
TEST
QuotedScalars
();
// 2.18
TEST
MultiLineFlowScalars
();
// TODO: 2.19 - 2.22 schema tags
// 2.23
TEST
VariousExplicitTags
();
// 2.24
TEST
GlobalTags
();
// 2.25
TEST
UnorderedSets
();
// 2.26
TEST
OrderedMappings
();
// 2.27
TEST
Invoice
();
// 2.28
TEST
LogFile
();
// TODO: 5.1 - 5.2 BOM
// 5.3
TEST
BlockStructureIndicators
();
// 5.4
TEST
FlowStructureIndicators
();
// 5.5
TEST
CommentIndicator
();
// 5.6
TEST
NodePropertyIndicators
();
// 5.7
TEST
BlockScalarIndicators
();
// 5.8
TEST
QuotedScalarIndicators
();
// TODO: 5.9 directive
// TODO: 5.10 reserved indicator
// 5.11
TEST
LineBreakCharacters
();
// 5.12
TEST
TabsAndSpaces
();
// 5.13
TEST
EscapedCharacters
();
// 5.14
TEST
InvalidEscapedCharacters
();
// 6.1
TEST
IndentationSpaces
();
// 6.2
TEST
IndentationIndicators
();
// 6.3
TEST
SeparationSpaces
();
// 6.4
TEST
LinePrefixes
();
// 6.5
TEST
EmptyLines
();
// 6.6
TEST
LineFolding
();
// 6.7
TEST
BlockFolding
();
// 6.8
TEST
FlowFolding
();
// 6.9
TEST
SeparatedComment
();
// 6.10
TEST
CommentLines
();
// 6.11
TEST
MultiLineComments
();
// 6.12
TEST
SeparationSpacesII
();
// 6.13
TEST
ReservedDirectives
();
// 6.14
TEST
YAMLDirective
();
// 6.15
TEST
InvalidRepeatedYAMLDirective
();
// 6.16
TEST
TagDirective
();
// 6.17
TEST
InvalidRepeatedTagDirective
();
// 6.18
TEST
PrimaryTagHandle
();
// 6.19
TEST
SecondaryTagHandle
();
// 6.20
TEST
TagHandles
();
// 6.21
TEST
LocalTagPrefix
();
// 6.22
TEST
GlobalTagPrefix
();
// 6.23
TEST
NodeProperties
();
// 6.24
TEST
VerbatimTags
();
// 6.25
TEST
InvalidVerbatimTags
();
// 6.26
TEST
TagShorthands
();
// 6.27
TEST
InvalidTagShorthands
();
// 6.28
TEST
NonSpecificTags
();
// 6.29
TEST
NodeAnchors
();
// 7.1
TEST
AliasNodes
();
// 7.2
TEST
EmptyNodes
();
// 7.3
TEST
CompletelyEmptyNodes
();
// 7.4
TEST
DoubleQuotedImplicitKeys
();
// 7.5
TEST
DoubleQuotedLineBreaks
();
// 7.6
TEST
DoubleQuotedLines
();
// 7.7
TEST
SingleQuotedCharacters
();
// 7.8
TEST
SingleQuotedImplicitKeys
();
// 7.9
TEST
SingleQuotedLines
();
// 7.10
TEST
PlainCharacters
();
// 7.11
TEST
PlainImplicitKeys
();
// 7.12
TEST
PlainLines
();
// 7.13
TEST
FlowSequence
();
// 7.14
TEST
FlowSequenceEntries
();
// 7.15
TEST
FlowMappings
();
// 7.16
TEST
FlowMappingEntries
();
// 7.17
TEST
FlowMappingSeparateValues
();
// 7.18
TEST
FlowMappingAdjacentValues
();
// 7.19
TEST
SinglePairFlowMappings
();
// 7.20
TEST
SinglePairExplicitEntry
();
// 7.21
TEST
SinglePairImplicitEntries
();
// 7.22
TEST
InvalidImplicitKeys
();
// 7.23
TEST
FlowContent
();
// 7.24
TEST
FlowNodes
();
// 8.1
TEST
BlockScalarHeader
();
// 8.2
TEST
BlockIndentationHeader
();
// 8.3
TEST
InvalidBlockScalarIndentationIndicators
();
// 8.4
TEST
ChompingFinalLineBreak
();
// 8.5
TEST
ChompingTrailingLines
();
// 8.6
TEST
EmptyScalarChomping
();
// 8.7
TEST
LiteralScalar
();
// 8.8
TEST
LiteralContent
();
// 8.9
TEST
FoldedScalar
();
// 8.10
TEST
FoldedLines
();
// 8.11
TEST
MoreIndentedLines
();
// 8.12
TEST
EmptySeparationLines
();
// 8.13
TEST
FinalEmptyLines
();
// 8.14
TEST
BlockSequence
();
// 8.15
TEST
BlockSequenceEntryTypes
();
// 8.16
TEST
BlockMappings
();
// 8.17
TEST
ExplicitBlockMappingEntries
();
// 8.18
TEST
ImplicitBlockMappingEntries
();
// 8.19
TEST
CompactBlockMappings
();
// 8.20
TEST
BlockNodeTypes
();
// 8.21
TEST
BlockScalarNodes
();
// 8.22
TEST
BlockCollectionNodes
();
}
bool
RunSpecTests
();
}
#endif // SPECTESTS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
test/tests.cpp
View file @
ace9c49e
...
...
@@ -5,7 +5,6 @@
#include "emittertests.h"
#include "parsertests.h"
#include "spectests.h"
#include "tests.h"
namespace
Test
{
...
...
@@ -14,9 +13,6 @@ void RunAll() {
if
(
!
RunEmitterTests
())
passed
=
false
;
if
(
!
RunSpecTests
())
passed
=
false
;
if
(
!
RunParserTests
())
passed
=
false
;
...
...
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