2009-09-03 18:27:03 +04:00
# include "spectests.h"
2011-09-18 08:46:48 +04:00
# include "specexamples.h"
2010-10-18 11:05:53 +04:00
# include "yaml-cpp/yaml.h"
2009-09-03 18:27:03 +04:00
# include <fstream>
# include <sstream>
# include <vector>
# include <iostream>
2009-09-07 10:35:37 +04:00
# define YAML_ASSERT(cond) do { if(!(cond)) return " Assert failed: " #cond; } while(false)
2009-10-20 18:43:24 +04:00
# define PARSE(doc, input) \
std : : stringstream stream ( input ) ; \
YAML : : Parser parser ( stream ) ; \
YAML : : Node doc ; \
parser . GetNextDocument ( doc )
# define PARSE_NEXT(doc) parser.GetNextDocument(doc)
2009-09-06 19:54:11 +04:00
2009-09-03 18:27:03 +04:00
namespace Test {
namespace Spec {
2009-09-07 10:35:37 +04:00
// 2.1
2009-09-06 21:02:24 +04:00
TEST SeqScalars ( ) {
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_1 ) ;
2009-09-06 19:54:11 +04:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] . to < std : : string > ( ) = = " Mark McGwire " ) ;
YAML_ASSERT ( doc [ 1 ] . to < std : : string > ( ) = = " Sammy Sosa " ) ;
YAML_ASSERT ( doc [ 2 ] . to < std : : string > ( ) = = " Ken Griffey " ) ;
2009-09-03 18:27:03 +04:00
return true ;
}
2009-09-07 10:35:37 +04:00
// 2.2
2009-09-06 21:02:24 +04:00
TEST MappingScalarsToScalars ( ) {
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_2 ) ;
2009-09-06 19:54:11 +04:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " hr " ] . to < std : : string > ( ) = = " 65 " ) ;
YAML_ASSERT ( doc [ " avg " ] . to < std : : string > ( ) = = " 0.278 " ) ;
YAML_ASSERT ( doc [ " rbi " ] . to < std : : string > ( ) = = " 147 " ) ;
2009-09-03 18:27:03 +04:00
return true ;
}
2009-09-06 21:02:24 +04:00
2009-09-07 10:35:37 +04:00
// 2.3
2009-09-06 21:02:24 +04:00
TEST MappingScalarsToSequences ( ) {
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_3 ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ " american " ] . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " american " ] [ 0 ] . to < std : : string > ( ) = = " Boston Red Sox " ) ;
YAML_ASSERT ( doc [ " american " ] [ 1 ] . to < std : : string > ( ) = = " Detroit Tigers " ) ;
YAML_ASSERT ( doc [ " american " ] [ 2 ] . to < std : : string > ( ) = = " New York Yankees " ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc [ " national " ] . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " national " ] [ 0 ] . to < std : : string > ( ) = = " New York Mets " ) ;
YAML_ASSERT ( doc [ " national " ] [ 1 ] . to < std : : string > ( ) = = " Chicago Cubs " ) ;
YAML_ASSERT ( doc [ " national " ] [ 2 ] . to < std : : string > ( ) = = " Atlanta Braves " ) ;
2009-09-06 21:02:24 +04:00
return true ;
}
2009-09-07 10:35:37 +04:00
// 2.4
2009-09-06 21:02:24 +04:00
TEST SequenceOfMappings ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_4 ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ 0 ] . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] [ " name " ] . to < std : : string > ( ) = = " Mark McGwire " ) ;
YAML_ASSERT ( doc [ 0 ] [ " hr " ] . to < std : : string > ( ) = = " 65 " ) ;
YAML_ASSERT ( doc [ 0 ] [ " avg " ] . to < std : : string > ( ) = = " 0.278 " ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc [ 1 ] . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] [ " name " ] . to < std : : string > ( ) = = " Sammy Sosa " ) ;
YAML_ASSERT ( doc [ 1 ] [ " hr " ] . to < std : : string > ( ) = = " 63 " ) ;
YAML_ASSERT ( doc [ 1 ] [ " avg " ] . to < std : : string > ( ) = = " 0.288 " ) ;
2009-09-06 21:02:24 +04:00
return true ;
}
2009-09-07 10:35:37 +04:00
// 2.5
2009-09-06 21:02:24 +04:00
TEST SequenceOfSequences ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_5 ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
YAML_ASSERT ( doc [ 0 ] . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] [ 0 ] . to < std : : string > ( ) = = " name " ) ;
YAML_ASSERT ( doc [ 0 ] [ 1 ] . to < std : : string > ( ) = = " hr " ) ;
YAML_ASSERT ( doc [ 0 ] [ 2 ] . to < std : : string > ( ) = = " avg " ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc [ 1 ] . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] [ 0 ] . to < std : : string > ( ) = = " Mark McGwire " ) ;
YAML_ASSERT ( doc [ 1 ] [ 1 ] . to < std : : string > ( ) = = " 65 " ) ;
YAML_ASSERT ( doc [ 1 ] [ 2 ] . to < std : : string > ( ) = = " 0.278 " ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc [ 2 ] . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 2 ] [ 0 ] . to < std : : string > ( ) = = " Sammy Sosa " ) ;
YAML_ASSERT ( doc [ 2 ] [ 1 ] . to < std : : string > ( ) = = " 63 " ) ;
YAML_ASSERT ( doc [ 2 ] [ 2 ] . to < std : : string > ( ) = = " 0.288 " ) ;
2009-09-06 21:02:24 +04:00
return true ;
}
2009-09-07 10:35:37 +04:00
// 2.6
2009-09-06 21:02:24 +04:00
TEST MappingOfMappings ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_6 ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ " Mark McGwire " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " Mark McGwire " ] [ " hr " ] . to < std : : string > ( ) = = " 65 " ) ;
YAML_ASSERT ( doc [ " Mark McGwire " ] [ " avg " ] . to < std : : string > ( ) = = " 0.278 " ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc [ " Sammy Sosa " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " Sammy Sosa " ] [ " hr " ] . to < std : : string > ( ) = = " 63 " ) ;
YAML_ASSERT ( doc [ " Sammy Sosa " ] [ " avg " ] . to < std : : string > ( ) = = " 0.288 " ) ;
2009-09-06 21:02:24 +04:00
return true ;
}
2009-09-07 10:35:37 +04:00
// 2.7
2009-09-06 21:02:24 +04:00
TEST TwoDocumentsInAStream ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_7 ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] . to < std : : string > ( ) = = " Mark McGwire " ) ;
YAML_ASSERT ( doc [ 1 ] . to < std : : string > ( ) = = " Sammy Sosa " ) ;
YAML_ASSERT ( doc [ 2 ] . to < std : : string > ( ) = = " Ken Griffey " ) ;
2009-10-20 18:43:24 +04:00
PARSE_NEXT ( doc ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] . to < std : : string > ( ) = = " Chicago Cubs " ) ;
YAML_ASSERT ( doc [ 1 ] . to < std : : string > ( ) = = " St Louis Cardinals " ) ;
2009-09-06 21:02:24 +04:00
return true ;
}
2009-09-07 10:35:37 +04:00
// 2.8
2009-09-06 21:02:24 +04:00
TEST PlayByPlayFeed ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_8 ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " time " ] . to < std : : string > ( ) = = " 20:03:20 " ) ;
YAML_ASSERT ( doc [ " player " ] . to < std : : string > ( ) = = " Sammy Sosa " ) ;
YAML_ASSERT ( doc [ " action " ] . to < std : : string > ( ) = = " strike (miss) " ) ;
2009-10-20 18:43:24 +04:00
PARSE_NEXT ( doc ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " time " ] . to < std : : string > ( ) = = " 20:03:47 " ) ;
YAML_ASSERT ( doc [ " player " ] . to < std : : string > ( ) = = " Sammy Sosa " ) ;
YAML_ASSERT ( doc [ " action " ] . to < std : : string > ( ) = = " grand slam " ) ;
2009-09-06 21:02:24 +04:00
return true ;
}
2009-09-07 10:35:37 +04:00
// 2.9
2009-09-06 21:02:24 +04:00
TEST SingleDocumentWithTwoComments ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_9 ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ " hr " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " hr " ] [ 0 ] . to < std : : string > ( ) = = " Mark McGwire " ) ;
YAML_ASSERT ( doc [ " hr " ] [ 1 ] . to < std : : string > ( ) = = " Sammy Sosa " ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc [ " rbi " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " rbi " ] [ 0 ] . to < std : : string > ( ) = = " Sammy Sosa " ) ;
YAML_ASSERT ( doc [ " rbi " ] [ 1 ] . to < std : : string > ( ) = = " Ken Griffey " ) ;
2009-09-06 21:02:24 +04:00
return true ;
}
2009-09-07 10:35:37 +04:00
// 2.10
2009-09-06 21:02:24 +04:00
TEST SimpleAnchor ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_10 ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ " hr " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " hr " ] [ 0 ] . to < std : : string > ( ) = = " Mark McGwire " ) ;
YAML_ASSERT ( doc [ " hr " ] [ 1 ] . to < std : : string > ( ) = = " Sammy Sosa " ) ;
2009-09-06 21:02:24 +04:00
YAML_ASSERT ( doc [ " rbi " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " rbi " ] [ 0 ] . to < std : : string > ( ) = = " Sammy Sosa " ) ;
YAML_ASSERT ( doc [ " rbi " ] [ 1 ] . to < std : : string > ( ) = = " Ken Griffey " ) ;
2009-09-06 21:02:24 +04:00
return true ;
2009-09-07 00:52:45 +04:00
}
struct Pair {
Pair ( ) { }
Pair ( const std : : string & f , const std : : string & s ) : first ( f ) , second ( s ) { }
std : : string first , second ;
} ;
bool operator = = ( const Pair & p , const Pair & q ) {
return p . first = = q . first & & p . second = = q . second ;
}
void operator > > ( const YAML : : Node & node , Pair & p ) {
node [ 0 ] > > p . first ;
node [ 1 ] > > p . second ;
}
2009-09-07 10:35:37 +04:00
// 2.11
2009-09-07 00:52:45 +04:00
TEST MappingBetweenSequences ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_11 ) ;
2009-09-07 00:52:45 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
2009-09-07 01:52:56 +04:00
YAML_ASSERT ( doc [ Pair ( " Detroit Tigers " , " Chicago cubs " ) ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ Pair ( " Detroit Tigers " , " Chicago cubs " ) ] [ 0 ] . to < std : : string > ( ) = = " 2001-07-23 " ) ;
2009-09-07 00:52:45 +04:00
YAML_ASSERT ( doc [ Pair ( " New York Yankees " , " Atlanta Braves " ) ] . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ Pair ( " New York Yankees " , " Atlanta Braves " ) ] [ 0 ] . to < std : : string > ( ) = = " 2001-07-02 " ) ;
YAML_ASSERT ( doc [ Pair ( " New York Yankees " , " Atlanta Braves " ) ] [ 1 ] . to < std : : string > ( ) = = " 2001-08-12 " ) ;
YAML_ASSERT ( doc [ Pair ( " New York Yankees " , " Atlanta Braves " ) ] [ 2 ] . to < std : : string > ( ) = = " 2001-08-14 " ) ;
2009-09-07 00:52:45 +04:00
return true ;
}
2009-09-07 02:17:53 +04:00
2009-09-07 10:35:37 +04:00
// 2.12
2009-09-07 02:17:53 +04:00
TEST CompactNestedMapping ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_12 ) ;
2009-09-07 02:17:53 +04:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
YAML_ASSERT ( doc [ 0 ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] [ " item " ] . to < std : : string > ( ) = = " Super Hoop " ) ;
YAML_ASSERT ( doc [ 0 ] [ " quantity " ] . to < int > ( ) = = 1 ) ;
2009-09-07 02:17:53 +04:00
YAML_ASSERT ( doc [ 1 ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] [ " item " ] . to < std : : string > ( ) = = " Basketball " ) ;
YAML_ASSERT ( doc [ 1 ] [ " quantity " ] . to < int > ( ) = = 4 ) ;
2009-09-07 02:17:53 +04:00
YAML_ASSERT ( doc [ 2 ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 2 ] [ " item " ] . to < std : : string > ( ) = = " Big Shoes " ) ;
YAML_ASSERT ( doc [ 2 ] [ " quantity " ] . to < int > ( ) = = 1 ) ;
2009-09-07 02:17:53 +04:00
return true ;
}
2009-09-07 10:35:37 +04:00
// 2.13
2009-09-07 02:17:53 +04:00
TEST InLiteralsNewlinesArePreserved ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_13 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = =
2009-09-07 02:17:53 +04:00
" \\ //|| \\ /|| \n "
" // || ||__ " ) ;
return true ;
}
2009-09-07 10:35:37 +04:00
// 2.14
TEST InFoldedScalarsNewlinesBecomeSpaces ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_14 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " Mark McGwire's year was crippled by a knee injury. " ) ;
2009-09-07 10:35:37 +04:00
return true ;
}
// 2.15
TEST FoldedNewlinesArePreservedForMoreIndentedAndBlankLines ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_15 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = =
2009-09-07 10:56:05 +04:00
" Sammy Sosa completed another fine season with great stats. \n \n "
2009-09-07 10:35:37 +04:00
" 63 Home Runs \n "
2009-09-07 10:56:05 +04:00
" 0.288 Batting Average \n \n "
2009-09-07 10:35:37 +04:00
" What a year! " ) ;
return true ;
}
// 2.16
TEST IndentationDeterminesScope ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_16 ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " name " ] . to < std : : string > ( ) = = " Mark McGwire " ) ;
YAML_ASSERT ( doc [ " accomplishment " ] . to < std : : string > ( ) = = " Mark set a major league home run record in 1998. \n " ) ;
YAML_ASSERT ( doc [ " stats " ] . to < std : : string > ( ) = = " 65 Home Runs \n 0.278 Batting Average \n " ) ;
2009-09-07 10:35:37 +04:00
return true ;
}
// 2.17
TEST QuotedScalars ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_17 ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc . size ( ) = = 6 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " unicode " ] . to < std : : string > ( ) = = " Sosa did fine. \xe2 \x98 \xba " ) ;
YAML_ASSERT ( doc [ " control " ] . to < std : : string > ( ) = = " \b 1998 \t 1999 \t 2000 \n " ) ;
YAML_ASSERT ( doc [ " hex esc " ] . to < std : : string > ( ) = = " \x0d \x0a is \r \n " ) ;
YAML_ASSERT ( doc [ " single " ] . to < std : : string > ( ) = = " \" Howdy! \" he cried. " ) ;
YAML_ASSERT ( doc [ " quoted " ] . to < std : : string > ( ) = = " # Not a 'comment'. " ) ;
YAML_ASSERT ( doc [ " tie-fighter " ] . to < std : : string > ( ) = = " | \\ -*-/| " ) ;
2009-09-07 10:35:37 +04:00
return true ;
}
// 2.18
TEST MultiLineFlowScalars ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_18 ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " plain " ] . to < std : : string > ( ) = = " This unquoted scalar spans many lines. " ) ;
YAML_ASSERT ( doc [ " quoted " ] . to < std : : string > ( ) = = " So does this quoted scalar. \n " ) ;
2009-09-07 10:35:37 +04:00
return true ;
}
2009-10-29 23:45:20 +03:00
// TODO: 2.19 - 2.22 schema tags
2009-10-29 18:48:06 +03:00
// 2.23
TEST VariousExplicitTags ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_23 ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc [ " not-date " ] . Tag ( ) = = " tag:yaml.org,2002:str " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " not-date " ] . to < std : : string > ( ) = = " 2002-04-28 " ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc [ " picture " ] . Tag ( ) = = " tag:yaml.org,2002:binary " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " picture " ] . to < std : : string > ( ) = =
2009-10-29 18:48:06 +03:00
" R0lGODlhDAAMAIQAAP//9/X \n "
" 17unp5WZmZgAAAOfn515eXv \n "
" Pz7Y6OjuDg4J+fn5OTk6enp \n "
" 56enmleECcgggoBADs= \n "
) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc [ " application specific tag " ] . Tag ( ) = = " !something " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " application specific tag " ] . to < std : : string > ( ) = =
2009-10-29 18:48:06 +03:00
" The semantics of the tag \n "
" above may be different for \n "
" different documents. "
) ;
return true ;
}
// 2.24
TEST GlobalTags ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_24 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc . Tag ( ) = = " tag:clarkevans.com,2002:shape " ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc [ 0 ] . Tag ( ) = = " tag:clarkevans.com,2002:circle " ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc [ 0 ] . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ 0 ] [ " center " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] [ " center " ] [ " x " ] . to < int > ( ) = = 73 ) ;
YAML_ASSERT ( doc [ 0 ] [ " center " ] [ " y " ] . to < int > ( ) = = 129 ) ;
YAML_ASSERT ( doc [ 0 ] [ " radius " ] . to < int > ( ) = = 7 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc [ 1 ] . Tag ( ) = = " tag:clarkevans.com,2002:line " ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc [ 1 ] . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ 1 ] [ " start " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] [ " start " ] [ " x " ] . to < int > ( ) = = 73 ) ;
YAML_ASSERT ( doc [ 1 ] [ " start " ] [ " y " ] . to < int > ( ) = = 129 ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc [ 1 ] [ " finish " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] [ " finish " ] [ " x " ] . to < int > ( ) = = 89 ) ;
YAML_ASSERT ( doc [ 1 ] [ " finish " ] [ " y " ] . to < int > ( ) = = 102 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc [ 2 ] . Tag ( ) = = " tag:clarkevans.com,2002:label " ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc [ 2 ] . size ( ) = = 3 ) ;
YAML_ASSERT ( doc [ 2 ] [ " start " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 2 ] [ " start " ] [ " x " ] . to < int > ( ) = = 73 ) ;
YAML_ASSERT ( doc [ 2 ] [ " start " ] [ " y " ] . to < int > ( ) = = 129 ) ;
YAML_ASSERT ( doc [ 2 ] [ " color " ] . to < std : : string > ( ) = = " 0xFFEEBB " ) ;
YAML_ASSERT ( doc [ 2 ] [ " text " ] . to < std : : string > ( ) = = " Pretty vector drawing. " ) ;
2009-10-29 18:48:06 +03:00
return true ;
}
// 2.25
TEST UnorderedSets ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_25 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc . Tag ( ) = = " tag:yaml.org,2002:set " ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
YAML_ASSERT ( IsNull ( doc [ " Mark McGwire " ] ) ) ;
YAML_ASSERT ( IsNull ( doc [ " Sammy Sosa " ] ) ) ;
YAML_ASSERT ( IsNull ( doc [ " Ken Griffey " ] ) ) ;
return true ;
}
// 2.26
TEST OrderedMappings ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_26 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc . Tag ( ) = = " tag:yaml.org,2002:omap " ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
YAML_ASSERT ( doc [ 0 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] [ " Mark McGwire " ] . to < int > ( ) = = 65 ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc [ 1 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] [ " Sammy Sosa " ] . to < int > ( ) = = 63 ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc [ 2 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 2 ] [ " Ken Griffey " ] . to < int > ( ) = = 58 ) ;
2009-10-29 18:48:06 +03:00
return true ;
}
2009-09-07 10:35:37 +04:00
// 2.27
TEST Invoice ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_27 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc . Tag ( ) = = " tag:clarkevans.com,2002:invoice " ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc . size ( ) = = 8 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " invoice " ] . to < int > ( ) = = 34843 ) ;
YAML_ASSERT ( doc [ " date " ] . to < std : : string > ( ) = = " 2001-01-23 " ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc [ " bill-to " ] . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " bill-to " ] [ " given " ] . to < std : : string > ( ) = = " Chris " ) ;
YAML_ASSERT ( doc [ " bill-to " ] [ " family " ] . to < std : : string > ( ) = = " Dumars " ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc [ " bill-to " ] [ " address " ] . size ( ) = = 4 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " bill-to " ] [ " address " ] [ " lines " ] . to < std : : string > ( ) = = " 458 Walkman Dr. \n Suite #292 \n " ) ;
YAML_ASSERT ( doc [ " bill-to " ] [ " address " ] [ " city " ] . to < std : : string > ( ) = = " Royal Oak " ) ;
YAML_ASSERT ( doc [ " bill-to " ] [ " address " ] [ " state " ] . to < std : : string > ( ) = = " MI " ) ;
YAML_ASSERT ( doc [ " bill-to " ] [ " address " ] [ " postal " ] . to < std : : string > ( ) = = " 48046 " ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc [ " ship-to " ] . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " ship-to " ] [ " given " ] . to < std : : string > ( ) = = " Chris " ) ;
YAML_ASSERT ( doc [ " ship-to " ] [ " family " ] . to < std : : string > ( ) = = " Dumars " ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc [ " ship-to " ] [ " address " ] . size ( ) = = 4 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " ship-to " ] [ " address " ] [ " lines " ] . to < std : : string > ( ) = = " 458 Walkman Dr. \n Suite #292 \n " ) ;
YAML_ASSERT ( doc [ " ship-to " ] [ " address " ] [ " city " ] . to < std : : string > ( ) = = " Royal Oak " ) ;
YAML_ASSERT ( doc [ " ship-to " ] [ " address " ] [ " state " ] . to < std : : string > ( ) = = " MI " ) ;
YAML_ASSERT ( doc [ " ship-to " ] [ " address " ] [ " postal " ] . to < std : : string > ( ) = = " 48046 " ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc [ " product " ] . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ " product " ] [ 0 ] . size ( ) = = 4 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " product " ] [ 0 ] [ " sku " ] . to < std : : string > ( ) = = " BL394D " ) ;
YAML_ASSERT ( doc [ " product " ] [ 0 ] [ " quantity " ] . to < int > ( ) = = 4 ) ;
YAML_ASSERT ( doc [ " product " ] [ 0 ] [ " description " ] . to < std : : string > ( ) = = " Basketball " ) ;
YAML_ASSERT ( doc [ " product " ] [ 0 ] [ " price " ] . to < std : : string > ( ) = = " 450.00 " ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc [ " product " ] [ 1 ] . size ( ) = = 4 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " product " ] [ 1 ] [ " sku " ] . to < std : : string > ( ) = = " BL4438H " ) ;
YAML_ASSERT ( doc [ " product " ] [ 1 ] [ " quantity " ] . to < int > ( ) = = 1 ) ;
YAML_ASSERT ( doc [ " product " ] [ 1 ] [ " description " ] . to < std : : string > ( ) = = " Super Hoop " ) ;
YAML_ASSERT ( doc [ " product " ] [ 1 ] [ " price " ] . to < std : : string > ( ) = = " 2392.00 " ) ;
YAML_ASSERT ( doc [ " tax " ] . to < std : : string > ( ) = = " 251.42 " ) ;
YAML_ASSERT ( doc [ " total " ] . to < std : : string > ( ) = = " 4443.52 " ) ;
YAML_ASSERT ( doc [ " comments " ] . to < std : : string > ( ) = = " Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338. " ) ;
2009-09-07 10:35:37 +04:00
return true ;
}
// 2.28
TEST LogFile ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex2_28 ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " Time " ] . to < std : : string > ( ) = = " 2001-11-23 15:01:42 -5 " ) ;
YAML_ASSERT ( doc [ " User " ] . to < std : : string > ( ) = = " ed " ) ;
YAML_ASSERT ( doc [ " Warning " ] . to < std : : string > ( ) = = " This is an error message for the log file " ) ;
2009-10-20 18:43:24 +04:00
PARSE_NEXT ( doc ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " Time " ] . to < std : : string > ( ) = = " 2001-11-23 15:02:31 -5 " ) ;
YAML_ASSERT ( doc [ " User " ] . to < std : : string > ( ) = = " ed " ) ;
YAML_ASSERT ( doc [ " Warning " ] . to < std : : string > ( ) = = " A slightly different error message. " ) ;
2009-10-20 18:43:24 +04:00
PARSE_NEXT ( doc ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc . size ( ) = = 4 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " Date " ] . to < std : : string > ( ) = = " 2001-11-23 15:03:17 -5 " ) ;
YAML_ASSERT ( doc [ " User " ] . to < std : : string > ( ) = = " ed " ) ;
YAML_ASSERT ( doc [ " Fatal " ] . to < std : : string > ( ) = = " Unknown variable \" bar \" " ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc [ " Stack " ] . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ " Stack " ] [ 0 ] . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " Stack " ] [ 0 ] [ " file " ] . to < std : : string > ( ) = = " TopClass.py " ) ;
YAML_ASSERT ( doc [ " Stack " ] [ 0 ] [ " line " ] . to < std : : string > ( ) = = " 23 " ) ;
YAML_ASSERT ( doc [ " Stack " ] [ 0 ] [ " code " ] . to < std : : string > ( ) = = " x = MoreObject( \" 345 \\ n \" ) \n " ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc [ " Stack " ] [ 1 ] . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " Stack " ] [ 1 ] [ " file " ] . to < std : : string > ( ) = = " MoreClass.py " ) ;
YAML_ASSERT ( doc [ " Stack " ] [ 1 ] [ " line " ] . to < std : : string > ( ) = = " 58 " ) ;
YAML_ASSERT ( doc [ " Stack " ] [ 1 ] [ " code " ] . to < std : : string > ( ) = = " foo = bar " ) ;
2009-09-07 10:35:37 +04:00
return true ;
}
// TODO: 5.1 - 5.2 BOM
// 5.3
TEST BlockStructureIndicators ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex5_3 ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ " sequence " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " sequence " ] [ 0 ] . to < std : : string > ( ) = = " one " ) ;
YAML_ASSERT ( doc [ " sequence " ] [ 1 ] . to < std : : string > ( ) = = " two " ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc [ " mapping " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " mapping " ] [ " sky " ] . to < std : : string > ( ) = = " blue " ) ;
YAML_ASSERT ( doc [ " mapping " ] [ " sea " ] . to < std : : string > ( ) = = " green " ) ;
2009-09-07 10:35:37 +04:00
return true ;
}
// 5.4
TEST FlowStructureIndicators ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex5_4 ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ " sequence " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " sequence " ] [ 0 ] . to < std : : string > ( ) = = " one " ) ;
YAML_ASSERT ( doc [ " sequence " ] [ 1 ] . to < std : : string > ( ) = = " two " ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc [ " mapping " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " mapping " ] [ " sky " ] . to < std : : string > ( ) = = " blue " ) ;
YAML_ASSERT ( doc [ " mapping " ] [ " sea " ] . to < std : : string > ( ) = = " green " ) ;
2009-09-07 10:35:37 +04:00
return true ;
}
2009-10-29 23:45:20 +03:00
// 5.5
TEST CommentIndicator ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex5_5 ) ;
2009-10-29 23:45:20 +03:00
YAML_ASSERT ( doc . size ( ) = = 0 ) ;
return true ;
}
2009-09-07 10:35:37 +04:00
// 5.6
TEST NodePropertyIndicators ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex5_6 ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " anchored " ] . to < std : : string > ( ) = = " value " ) ; // TODO: assert tag
YAML_ASSERT ( doc [ " alias " ] . to < std : : string > ( ) = = " value " ) ;
2009-09-07 10:35:37 +04:00
return true ;
}
// 5.7
TEST BlockScalarIndicators ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex5_7 ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " literal " ] . to < std : : string > ( ) = = " some \n text \n " ) ;
YAML_ASSERT ( doc [ " folded " ] . to < std : : string > ( ) = = " some text \n " ) ;
2009-09-07 10:35:37 +04:00
return true ;
}
// 5.8
TEST QuotedScalarIndicators ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex5_8 ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " single " ] . to < std : : string > ( ) = = " text " ) ;
YAML_ASSERT ( doc [ " double " ] . to < std : : string > ( ) = = " text " ) ;
2009-09-07 10:35:37 +04:00
return true ;
}
// TODO: 5.9 directive
// TODO: 5.10 reserved indicator
// 5.11
TEST LineBreakCharacters ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex5_11 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " Line break (no glyph) \n Line break (glyphed) \n " ) ;
2009-09-07 10:35:37 +04:00
return true ;
}
// 5.12
TEST TabsAndSpaces ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex5_12 ) ;
2009-09-07 10:35:37 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " quoted " ] . to < std : : string > ( ) = = " Quoted \t " ) ;
YAML_ASSERT ( doc [ " block " ] . to < std : : string > ( ) = =
2009-09-07 10:35:37 +04:00
" void main() { \n "
" \t printf( \" Hello, world! \\ n \" ); \n "
" } " ) ;
return true ;
}
2009-09-07 20:31:23 +04:00
// 5.13
TEST EscapedCharacters ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex5_13 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " 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 " ) ;
2009-09-07 20:31:23 +04:00
return true ;
}
// 5.14
TEST InvalidEscapedCharacters ( )
{
2011-09-18 08:57:40 +04:00
std : : stringstream stream ( ex5_14 ) ;
2009-09-07 20:31:23 +04:00
try {
YAML : : Parser parser ( stream ) ;
YAML : : Node doc ;
parser . GetNextDocument ( doc ) ;
} catch ( const YAML : : ParserException & e ) {
2011-03-02 07:12:57 +03:00
YAML_ASSERT ( e . msg = = std : : string ( YAML : : ErrorMsg : : INVALID_ESCAPE ) + " c " ) ;
2009-09-07 20:31:23 +04:00
return true ;
}
return false ;
}
2009-09-07 21:12:45 +04:00
// 6.1
TEST IndentationSpaces ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_1 ) ;
2009-09-07 21:12:45 +04:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ " Not indented " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " Not indented " ] [ " By one space " ] . to < std : : string > ( ) = = " By four \n spaces \n " ) ;
2009-09-07 21:12:45 +04:00
YAML_ASSERT ( doc [ " Not indented " ] [ " Flow style " ] . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " Not indented " ] [ " Flow style " ] [ 0 ] . to < std : : string > ( ) = = " By two " ) ;
YAML_ASSERT ( doc [ " Not indented " ] [ " Flow style " ] [ 1 ] . to < std : : string > ( ) = = " Also by two " ) ;
YAML_ASSERT ( doc [ " Not indented " ] [ " Flow style " ] [ 2 ] . to < std : : string > ( ) = = " Still by two " ) ;
2009-09-07 21:12:45 +04:00
return true ;
}
// 6.2
TEST IndentationIndicators ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_2 ) ;
2009-09-07 21:12:45 +04:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ " a " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " a " ] [ 0 ] . to < std : : string > ( ) = = " b " ) ;
2009-09-07 21:12:45 +04:00
YAML_ASSERT ( doc [ " a " ] [ 1 ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " a " ] [ 1 ] [ 0 ] . to < std : : string > ( ) = = " c " ) ;
YAML_ASSERT ( doc [ " a " ] [ 1 ] [ 1 ] . to < std : : string > ( ) = = " d " ) ;
2009-09-07 21:12:45 +04:00
return true ;
}
// 6.3
TEST SeparationSpaces ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_3 ) ;
2009-09-07 21:12:45 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ 0 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] [ " foo " ] . to < std : : string > ( ) = = " bar " ) ;
2009-09-07 21:12:45 +04:00
YAML_ASSERT ( doc [ 1 ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] [ 0 ] . to < std : : string > ( ) = = " baz " ) ;
YAML_ASSERT ( doc [ 1 ] [ 1 ] . to < std : : string > ( ) = = " baz " ) ;
2009-09-07 21:12:45 +04:00
return true ;
}
// 6.4
TEST LinePrefixes ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_4 ) ;
2009-09-07 21:12:45 +04:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " plain " ] . to < std : : string > ( ) = = " text lines " ) ;
YAML_ASSERT ( doc [ " quoted " ] . to < std : : string > ( ) = = " text lines " ) ;
YAML_ASSERT ( doc [ " block " ] . to < std : : string > ( ) = = " text \n \t lines \n " ) ;
2009-09-07 21:12:45 +04:00
return true ;
}
// 6.5
TEST EmptyLines ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_5 ) ;
2009-09-07 21:12:45 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " Folding " ] . to < std : : string > ( ) = = " Empty line \n as a line feed " ) ;
YAML_ASSERT ( doc [ " Chomping " ] . to < std : : string > ( ) = = " Clipped empty lines \n " ) ;
2009-09-07 21:12:45 +04:00
return true ;
}
2009-09-08 03:29:04 +04:00
// 6.6
TEST LineFolding ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_6 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " trimmed \n \n \n as space " ) ;
2009-09-08 03:29:04 +04:00
return true ;
}
// 6.7
TEST BlockFolding ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_7 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " foo \n \n \t bar \n \n baz \n " ) ;
2009-09-08 03:29:04 +04:00
return true ;
}
// 6.8
TEST FlowFolding ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_8 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " foo \n bar \n baz " ) ;
2009-09-08 03:29:04 +04:00
return true ;
}
2009-09-08 08:16:45 +04:00
// 6.9
TEST SeparatedComment ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_9 ) ;
2009-09-08 08:16:45 +04:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " key " ] . to < std : : string > ( ) = = " value " ) ;
2009-09-08 08:16:45 +04:00
return true ;
}
// 6.10
TEST CommentLines ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_10 ) ;
2009-10-29 23:45:20 +03:00
YAML_ASSERT ( doc . size ( ) = = 0 ) ;
2009-09-08 08:16:45 +04:00
return true ;
}
// 6.11
TEST MultiLineComments ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_11 ) ;
2009-09-08 08:16:45 +04:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " key " ] . to < std : : string > ( ) = = " value " ) ;
2009-09-08 08:16:45 +04:00
return true ;
}
struct StringMap {
typedef std : : map < std : : string , std : : string > Map ;
Map _ ;
} ;
bool operator = = ( const StringMap & m , const StringMap & n ) {
return m . _ = = n . _ ;
}
void operator > > ( const YAML : : Node & node , StringMap & m ) {
m . _ . clear ( ) ;
for ( YAML : : Iterator it = node . begin ( ) ; it ! = node . end ( ) ; + + it ) {
2011-03-15 08:49:56 +03:00
std : : string key = it . first ( ) . to < std : : string > ( ) ;
std : : string value = it . second ( ) . to < std : : string > ( ) ;
2009-09-08 08:16:45 +04:00
m . _ [ key ] = value ;
}
}
// 6.12
TEST SeparationSpacesII ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_12 ) ;
2010-03-15 07:25:17 +03:00
std : : map < std : : string , std : : string > key ;
key [ " first " ] = " Sammy " ;
key [ " last " ] = " Sosa " ;
2009-09-08 08:16:45 +04:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ key ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ key ] [ " hr " ] . to < int > ( ) = = 65 ) ;
YAML_ASSERT ( doc [ key ] [ " avg " ] . to < std : : string > ( ) = = " 0.278 " ) ;
2009-09-08 08:16:45 +04:00
return true ;
}
2009-10-29 18:48:06 +03:00
// 6.13
TEST ReservedDirectives ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_13 ) ;
2009-10-29 18:48:06 +03:00
return true ;
}
// 6.14
TEST YAMLDirective ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_14 ) ;
2009-10-29 18:48:06 +03:00
return true ;
}
// 6.15
TEST InvalidRepeatedYAMLDirective ( )
{
try {
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_15 ) ;
2009-10-29 18:48:06 +03:00
} 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 ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_16 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc . Tag ( ) = = " tag:yaml.org,2002:str " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " foo " ) ;
2009-10-29 18:48:06 +03:00
return true ;
}
// 6.17
TEST InvalidRepeatedTagDirective ( )
{
try {
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_17 ) ;
2009-10-29 18:48:06 +03:00
} 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 ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_18 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc . Tag ( ) = = " !foo " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " bar " ) ;
2009-10-29 18:48:06 +03:00
PARSE_NEXT ( doc ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc . Tag ( ) = = " tag:example.com,2000:app/foo " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " bar " ) ;
2009-10-29 18:48:06 +03:00
return true ;
}
// 6.19
TEST SecondaryTagHandle ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_19 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc . Tag ( ) = = " tag:example.com,2000:app/int " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " 1 - 3 " ) ;
2009-10-29 18:48:06 +03:00
return true ;
}
// 6.20
TEST TagHandles ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_20 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc . Tag ( ) = = " tag:example.com,2000:app/foo " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " bar " ) ;
2009-10-29 18:48:06 +03:00
return true ;
}
// 6.21
TEST LocalTagPrefix ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_21 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc . Tag ( ) = = " !my-light " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " fluorescent " ) ;
2009-10-29 18:48:06 +03:00
PARSE_NEXT ( doc ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc . Tag ( ) = = " !my-light " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " green " ) ;
2009-10-29 18:48:06 +03:00
return true ;
}
// 6.22
TEST GlobalTagPrefix ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_22 ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc [ 0 ] . Tag ( ) = = " tag:example.com,2000:app/foo " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] . to < std : : string > ( ) = = " bar " ) ;
2009-10-29 18:48:06 +03:00
return true ;
}
// 6.23
TEST NodeProperties ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_23 ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
for ( YAML : : Iterator it = doc . begin ( ) ; it ! = doc . end ( ) ; + + it ) {
2011-03-15 08:49:56 +03:00
if ( it . first ( ) . to < std : : string > ( ) = = " foo " ) {
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( it . first ( ) . Tag ( ) = = " tag:yaml.org,2002:str " ) ;
YAML_ASSERT ( it . second ( ) . Tag ( ) = = " tag:yaml.org,2002:str " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( it . second ( ) . to < std : : string > ( ) = = " bar " ) ;
} else if ( it . first ( ) . to < std : : string > ( ) = = " baz " ) {
YAML_ASSERT ( it . second ( ) . to < std : : string > ( ) = = " foo " ) ;
2009-10-29 18:48:06 +03:00
} else
return " unknown key " ;
}
return true ;
}
// 6.24
TEST VerbatimTags ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_24 ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
for ( YAML : : Iterator it = doc . begin ( ) ; it ! = doc . end ( ) ; + + it ) {
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( it . first ( ) . Tag ( ) = = " tag:yaml.org,2002:str " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( it . first ( ) . to < std : : string > ( ) = = " foo " ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( it . second ( ) . Tag ( ) = = " !bar " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( it . second ( ) . to < std : : string > ( ) = = " baz " ) ;
2009-10-29 18:48:06 +03:00
}
return true ;
}
// 6.25
TEST InvalidVerbatimTags ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_25 ) ;
2009-10-29 18:48:06 +03:00
return " not implemented yet " ; // TODO: check tags (but we probably will say these are valid, I think)
}
// 6.26
TEST TagShorthands ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_26 ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc [ 0 ] . Tag ( ) = = " !local " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] . to < std : : string > ( ) = = " foo " ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc [ 1 ] . Tag ( ) = = " tag:yaml.org,2002:str " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] . to < std : : string > ( ) = = " bar " ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc [ 2 ] . Tag ( ) = = " tag:example.com,2000:app/tag%21 " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 2 ] . to < std : : string > ( ) = = " baz " ) ;
2009-10-29 18:48:06 +03:00
return true ;
}
// 6.27
TEST InvalidTagShorthands ( )
{
bool threw = false ;
try {
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_27a ) ;
2009-10-29 18:48:06 +03:00
} 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 " ;
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_27b ) ; // TODO: should we reject this one (since !h! is not declared)?
2009-10-29 18:48:06 +03:00
return " not implemented yet " ;
}
// 6.28
TEST NonSpecificTags ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_28 ) ;
2009-10-29 18:48:06 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] . to < std : : string > ( ) = = " 12 " ) ; // TODO: check tags. How?
YAML_ASSERT ( doc [ 1 ] . to < int > ( ) = = 12 ) ;
YAML_ASSERT ( doc [ 2 ] . to < std : : string > ( ) = = " 12 " ) ;
2009-10-29 18:48:06 +03:00
return true ;
}
2009-09-08 08:16:45 +04:00
// 6.29
TEST NodeAnchors ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex6_29 ) ;
2009-09-08 08:16:45 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " First occurrence " ] . to < std : : string > ( ) = = " Value " ) ;
YAML_ASSERT ( doc [ " Second occurrence " ] . to < std : : string > ( ) = = " Value " ) ;
2009-09-08 08:16:45 +04:00
return true ;
}
2009-09-08 09:35:39 +04:00
// 7.1
TEST AliasNodes ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_1 ) ;
2009-09-08 09:35:39 +04:00
YAML_ASSERT ( doc . size ( ) = = 4 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " First occurrence " ] . to < std : : string > ( ) = = " Foo " ) ;
YAML_ASSERT ( doc [ " Second occurrence " ] . to < std : : string > ( ) = = " Foo " ) ;
YAML_ASSERT ( doc [ " Override anchor " ] . to < std : : string > ( ) = = " Bar " ) ;
YAML_ASSERT ( doc [ " Reuse anchor " ] . to < std : : string > ( ) = = " Bar " ) ;
2009-09-08 09:35:39 +04:00
return true ;
}
// 7.2
TEST EmptyNodes ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_2 ) ;
2009-09-08 09:35:39 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
2009-10-29 18:48:06 +03:00
for ( YAML : : Iterator it = doc . begin ( ) ; it ! = doc . end ( ) ; + + it ) {
2011-03-15 08:49:56 +03:00
if ( it . first ( ) . to < std : : string > ( ) = = " foo " ) {
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( it . second ( ) . Tag ( ) = = " tag:yaml.org,2002:str " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( it . second ( ) . to < std : : string > ( ) = = " " ) ;
} else if ( it . first ( ) . to < std : : string > ( ) = = " " ) {
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( it . first ( ) . Tag ( ) = = " tag:yaml.org,2002:str " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( it . second ( ) . to < std : : string > ( ) = = " bar " ) ;
2009-10-29 18:48:06 +03:00
} else
return " unexpected key " ;
}
2009-09-08 09:35:39 +04:00
return true ;
}
// 7.3
TEST CompletelyEmptyNodes ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_3 ) ;
2009-09-08 09:35:39 +04:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( IsNull ( doc [ " foo " ] ) ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ YAML : : Null ] . to < std : : string > ( ) = = " bar " ) ;
2009-09-08 09:35:39 +04:00
return true ;
}
// 7.4
TEST DoubleQuotedImplicitKeys ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_4 ) ;
2009-10-20 18:43:24 +04:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ " implicit block key " ] . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ " implicit block key " ] [ 0 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " implicit block key " ] [ 0 ] [ " implicit flow key " ] . to < std : : string > ( ) = = " value " ) ;
2009-10-20 18:43:24 +04:00
return true ;
}
// 7.5
TEST DoubleQuotedLineBreaks ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_5 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " folded to a space, \n to a line feed, or \t \t non-content " ) ;
2009-10-20 18:43:24 +04:00
return true ;
}
// 7.6
TEST DoubleQuotedLines ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_6 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " 1st non-empty \n 2nd non-empty 3rd non-empty " ) ;
2009-10-20 18:43:24 +04:00
return true ;
}
// 7.7
TEST SingleQuotedCharacters ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_7 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " here's to \" quotes \" " ) ;
2009-10-20 18:43:24 +04:00
return true ;
}
// 7.8
TEST SingleQuotedImplicitKeys ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_8 ) ;
2009-10-20 18:43:24 +04:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ " implicit block key " ] . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ " implicit block key " ] [ 0 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " implicit block key " ] [ 0 ] [ " implicit flow key " ] . to < std : : string > ( ) = = " value " ) ;
2009-10-20 18:43:24 +04:00
return true ;
}
// 7.9
TEST SingleQuotedLines ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_9 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " 1st non-empty \n 2nd non-empty 3rd non-empty " ) ;
2009-10-20 18:43:24 +04:00
return true ;
}
// 7.10
TEST PlainCharacters ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_10 ) ;
2009-10-20 18:43:24 +04:00
YAML_ASSERT ( doc . size ( ) = = 6 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] . to < std : : string > ( ) = = " ::vector " ) ;
YAML_ASSERT ( doc [ 1 ] . to < std : : string > ( ) = = " : - () " ) ;
YAML_ASSERT ( doc [ 2 ] . to < std : : string > ( ) = = " Up, up, and away! " ) ;
YAML_ASSERT ( doc [ 3 ] . to < int > ( ) = = - 123 ) ;
YAML_ASSERT ( doc [ 4 ] . to < std : : string > ( ) = = " http://example.com/foo#bar " ) ;
2009-10-20 18:43:24 +04:00
YAML_ASSERT ( doc [ 5 ] . size ( ) = = 5 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 5 ] [ 0 ] . to < std : : string > ( ) = = " ::vector " ) ;
YAML_ASSERT ( doc [ 5 ] [ 1 ] . to < std : : string > ( ) = = " : - () " ) ;
YAML_ASSERT ( doc [ 5 ] [ 2 ] . to < std : : string > ( ) = = " Up, up, and away! " ) ;
YAML_ASSERT ( doc [ 5 ] [ 3 ] . to < int > ( ) = = - 123 ) ;
YAML_ASSERT ( doc [ 5 ] [ 4 ] . to < std : : string > ( ) = = " http://example.com/foo#bar " ) ;
2009-10-20 18:43:24 +04:00
return true ;
}
// 7.11
TEST PlainImplicitKeys ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_11 ) ;
2009-09-08 09:35:39 +04:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ " implicit block key " ] . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ " implicit block key " ] [ 0 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " implicit block key " ] [ 0 ] [ " implicit flow key " ] . to < std : : string > ( ) = = " value " ) ;
2009-09-08 09:35:39 +04:00
return true ;
}
2009-10-20 18:43:24 +04:00
// 7.12
TEST PlainLines ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_12 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " 1st non-empty \n 2nd non-empty 3rd non-empty " ) ;
2009-10-20 18:43:24 +04:00
return true ;
}
2009-10-29 23:35:07 +03:00
// 7.13
TEST FlowSequence ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_13 ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ 0 ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] [ 0 ] . to < std : : string > ( ) = = " one " ) ;
YAML_ASSERT ( doc [ 0 ] [ 1 ] . to < std : : string > ( ) = = " two " ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc [ 1 ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] [ 0 ] . to < std : : string > ( ) = = " three " ) ;
YAML_ASSERT ( doc [ 1 ] [ 1 ] . to < std : : string > ( ) = = " four " ) ;
2009-10-29 23:35:07 +03:00
return true ;
}
// 7.14
TEST FlowSequenceEntries ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_14 ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc . size ( ) = = 5 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] . to < std : : string > ( ) = = " double quoted " ) ;
YAML_ASSERT ( doc [ 1 ] . to < std : : string > ( ) = = " single quoted " ) ;
YAML_ASSERT ( doc [ 2 ] . to < std : : string > ( ) = = " plain text " ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc [ 3 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 3 ] [ 0 ] . to < std : : string > ( ) = = " nested " ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc [ 4 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 4 ] [ " single " ] . to < std : : string > ( ) = = " pair " ) ;
2009-10-29 23:35:07 +03:00
return true ;
}
// 7.15
TEST FlowMappings ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_15 ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ 0 ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] [ " one " ] . to < std : : string > ( ) = = " two " ) ;
YAML_ASSERT ( doc [ 0 ] [ " three " ] . to < std : : string > ( ) = = " four " ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc [ 1 ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] [ " five " ] . to < std : : string > ( ) = = " six " ) ;
YAML_ASSERT ( doc [ 1 ] [ " seven " ] . to < std : : string > ( ) = = " eight " ) ;
2009-10-29 23:35:07 +03:00
return true ;
}
// 7.16
TEST FlowMappingEntries ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_16 ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " explicit " ] . to < std : : string > ( ) = = " entry " ) ;
YAML_ASSERT ( doc [ " implicit " ] . to < std : : string > ( ) = = " entry " ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( IsNull ( doc [ YAML : : Null ] ) ) ;
return true ;
}
// 7.17
TEST FlowMappingSeparateValues ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_17 ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc . size ( ) = = 4 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " unquoted " ] . to < std : : string > ( ) = = " separate " ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( IsNull ( doc [ " http://foo.com " ] ) ) ;
YAML_ASSERT ( IsNull ( doc [ " omitted value " ] ) ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ YAML : : Null ] . to < std : : string > ( ) = = " omitted key " ) ;
2009-10-29 23:35:07 +03:00
return true ;
}
// 7.18
TEST FlowMappingAdjacentValues ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_18 ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " adjacent " ] . to < std : : string > ( ) = = " value " ) ;
YAML_ASSERT ( doc [ " readable " ] . to < std : : string > ( ) = = " value " ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( IsNull ( doc [ " empty " ] ) ) ;
return true ;
}
// 7.19
TEST SinglePairFlowMappings ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_19 ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ 0 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] [ " foo " ] . to < std : : string > ( ) = = " bar " ) ;
2009-10-29 23:35:07 +03:00
return true ;
}
// 7.20
TEST SinglePairExplicitEntry ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_20 ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ 0 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] [ " foo bar " ] . to < std : : string > ( ) = = " baz " ) ;
2009-10-29 23:35:07 +03:00
return true ;
}
// 7.21
TEST SinglePairImplicitEntries ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_21 ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
YAML_ASSERT ( doc [ 0 ] . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ 0 ] [ 0 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] [ 0 ] [ " YAML " ] . to < std : : string > ( ) = = " separate " ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc [ 1 ] . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ 1 ] [ 0 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] [ 0 ] [ YAML : : Null ] . to < std : : string > ( ) = = " empty key entry " ) ;
2009-10-29 23:35:07 +03:00
YAML_ASSERT ( doc [ 2 ] . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ 2 ] [ 0 ] . size ( ) = = 1 ) ;
StringMap key ;
key . _ [ " JSON " ] = " like " ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 2 ] [ 0 ] [ key ] . to < std : : string > ( ) = = " adjacent " ) ;
2009-10-29 23:35:07 +03:00
return true ;
}
// 7.22
TEST InvalidImplicitKeys ( )
{
try {
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_22 ) ;
2009-10-29 23:35:07 +03:00
} catch ( const YAML : : Exception & e ) {
2009-10-30 01:39:53 +03:00
if ( e . msg = = YAML : : ErrorMsg : : END_OF_SEQ_FLOW )
2009-10-29 23:35:07 +03:00
return true ;
throw ;
}
return " no exception thrown " ;
}
2009-10-30 21:16:26 +03:00
// 7.23
TEST FlowContent ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_23 ) ;
2009-10-30 21:16:26 +03:00
YAML_ASSERT ( doc . size ( ) = = 5 ) ;
YAML_ASSERT ( doc [ 0 ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] [ 0 ] . to < std : : string > ( ) = = " a " ) ;
YAML_ASSERT ( doc [ 0 ] [ 1 ] . to < std : : string > ( ) = = " b " ) ;
2009-10-30 21:16:26 +03:00
YAML_ASSERT ( doc [ 1 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] [ " a " ] . to < std : : string > ( ) = = " b " ) ;
YAML_ASSERT ( doc [ 2 ] . to < std : : string > ( ) = = " a " ) ;
YAML_ASSERT ( doc [ 3 ] . to < char > ( ) = = ' b ' ) ;
YAML_ASSERT ( doc [ 4 ] . to < std : : string > ( ) = = " c " ) ;
2009-10-30 21:16:26 +03:00
return true ;
}
// 7.24
TEST FlowNodes ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex7_24 ) ;
2009-10-30 21:16:26 +03:00
YAML_ASSERT ( doc . size ( ) = = 5 ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc [ 0 ] . Tag ( ) = = " tag:yaml.org,2002:str " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] . to < std : : string > ( ) = = " a " ) ;
YAML_ASSERT ( doc [ 1 ] . to < char > ( ) = = ' b ' ) ;
YAML_ASSERT ( doc [ 2 ] . to < std : : string > ( ) = = " c " ) ;
YAML_ASSERT ( doc [ 3 ] . to < std : : string > ( ) = = " c " ) ;
2011-03-03 03:19:26 +03:00
YAML_ASSERT ( doc [ 4 ] . Tag ( ) = = " tag:yaml.org,2002:str " ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 4 ] . to < std : : string > ( ) = = " " ) ;
2009-10-30 21:16:26 +03:00
return true ;
}
// 8.1
TEST BlockScalarHeader ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_1 ) ;
2009-10-30 21:16:26 +03:00
YAML_ASSERT ( doc . size ( ) = = 4 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] . to < std : : string > ( ) = = " literal \n " ) ;
YAML_ASSERT ( doc [ 1 ] . to < std : : string > ( ) = = " folded \n " ) ;
YAML_ASSERT ( doc [ 2 ] . to < std : : string > ( ) = = " keep \n \n " ) ;
YAML_ASSERT ( doc [ 3 ] . to < std : : string > ( ) = = " strip " ) ;
2009-10-30 21:16:26 +03:00
return true ;
}
// 8.2
TEST BlockIndentationHeader ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_2 ) ;
2009-10-30 21:16:26 +03:00
YAML_ASSERT ( doc . size ( ) = = 4 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] . to < std : : string > ( ) = = " detected \n " ) ;
YAML_ASSERT ( doc [ 1 ] . to < std : : string > ( ) = = " \n \n # detected \n " ) ;
YAML_ASSERT ( doc [ 2 ] . to < std : : string > ( ) = = " explicit \n " ) ;
YAML_ASSERT ( doc [ 3 ] . to < std : : string > ( ) = = " \t \n detected \n " ) ;
2009-10-30 21:16:26 +03:00
return true ;
}
// 8.3
TEST InvalidBlockScalarIndentationIndicators ( )
{
{
bool threw = false ;
try {
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_3a ) ;
2009-10-30 21:16:26 +03:00
} 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 {
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_3b ) ;
2009-10-30 21:16:26 +03:00
} 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 {
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_3c ) ;
2009-10-30 21:16:26 +03:00
} 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 ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_4 ) ;
2009-10-30 21:16:26 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " strip " ] . to < std : : string > ( ) = = " text " ) ;
YAML_ASSERT ( doc [ " clip " ] . to < std : : string > ( ) = = " text \n " ) ;
YAML_ASSERT ( doc [ " keep " ] . to < std : : string > ( ) = = " text \n " ) ;
2009-10-30 21:16:26 +03:00
return true ;
}
// 8.5
TEST ChompingTrailingLines ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_5 ) ;
2009-10-30 21:16:26 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " strip " ] . to < std : : string > ( ) = = " # text " ) ;
YAML_ASSERT ( doc [ " clip " ] . to < std : : string > ( ) = = " # text \n " ) ;
2011-09-06 10:05:14 +04:00
YAML_ASSERT ( doc [ " keep " ] . to < std : : string > ( ) = = " # text \n " ) ; // Note: I believe this is a bug in the YAML spec - it should be "# text\n\n"
2009-10-30 21:16:26 +03:00
return true ;
}
// 8.6
TEST EmptyScalarChomping ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_6 ) ;
2009-10-30 21:16:26 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " strip " ] . to < std : : string > ( ) = = " " ) ;
YAML_ASSERT ( doc [ " clip " ] . to < std : : string > ( ) = = " " ) ;
YAML_ASSERT ( doc [ " keep " ] . to < std : : string > ( ) = = " \n " ) ;
2009-10-30 21:16:26 +03:00
return true ;
}
2011-03-04 07:14:08 +03:00
// 8.7
TEST LiteralScalar ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_7 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " literal \n \t text \n " ) ;
2011-03-04 07:14:08 +03:00
return true ;
}
// 8.8
TEST LiteralContent ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_8 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " \n \n literal \n \n \n text \n " ) ;
2011-03-04 07:14:08 +03:00
return true ;
}
// 8.9
TEST FoldedScalar ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_9 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " folded text \n " ) ;
2011-03-04 07:14:08 +03:00
return true ;
}
// 8.10
TEST FoldedLines ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_10 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc . to < std : : string > ( ) = = " \n folded line \n next line \n * bullet \n \n * list \n * lines \n \n last line \n " ) ;
2011-03-04 07:14:08 +03:00
return true ;
}
// 8.11
TEST MoreIndentedLines ( )
{
return true ; // same as 8.10
}
// 8.12
TEST EmptySeparationLines ( )
{
return true ; // same as 8.10
}
// 8.13
TEST FinalEmptyLines ( )
{
return true ; // same as 8.10
}
// 8.14
TEST BlockSequence ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_14 ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ " block sequence " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " block sequence " ] [ 0 ] . to < std : : string > ( ) = = " one " ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc [ " block sequence " ] [ 1 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " block sequence " ] [ 1 ] [ " two " ] . to < std : : string > ( ) = = " three " ) ;
2011-03-04 07:14:08 +03:00
return true ;
}
// 8.15
TEST BlockSequenceEntryTypes ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_15 ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc . size ( ) = = 4 ) ;
YAML_ASSERT ( YAML : : IsNull ( doc [ 0 ] ) ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] . to < std : : string > ( ) = = " block node \n " ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc [ 2 ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 2 ] [ 0 ] . to < std : : string > ( ) = = " one " ) ;
YAML_ASSERT ( doc [ 2 ] [ 1 ] . to < std : : string > ( ) = = " two " ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc [ 3 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 3 ] [ " one " ] . to < std : : string > ( ) = = " two " ) ;
2011-03-04 07:14:08 +03:00
return true ;
}
// 8.16
TEST BlockMappings ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_16 ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc . size ( ) = = 1 ) ;
YAML_ASSERT ( doc [ " block mapping " ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " block mapping " ] [ " key " ] . to < std : : string > ( ) = = " value " ) ;
2011-03-04 07:14:08 +03:00
return true ;
}
// 8.17
TEST ExplicitBlockMappingEntries ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_17 ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( IsNull ( doc [ " explicit key " ] ) ) ;
YAML_ASSERT ( doc [ " block key \n " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " block key \n " ] [ 0 ] . to < std : : string > ( ) = = " one " ) ;
YAML_ASSERT ( doc [ " block key \n " ] [ 1 ] . to < std : : string > ( ) = = " two " ) ;
2011-03-04 07:14:08 +03:00
return true ;
}
// 8.18
TEST ImplicitBlockMappingEntries ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_18 ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " plain key " ] . to < std : : string > ( ) = = " in-line value " ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( IsNull ( doc [ YAML : : Null ] ) ) ;
YAML_ASSERT ( doc [ " quoted key " ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " quoted key " ] [ 0 ] . to < std : : string > ( ) = = " entry " ) ;
2011-03-04 07:14:08 +03:00
return true ;
}
// 8.19
TEST CompactBlockMappings ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_19 ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ 0 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] [ " sun " ] . to < std : : string > ( ) = = " yellow " ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc [ 1 ] . size ( ) = = 1 ) ;
std : : map < std : : string , std : : string > key ;
key [ " earth " ] = " blue " ;
YAML_ASSERT ( doc [ 1 ] [ key ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 1 ] [ key ] [ " moon " ] . to < std : : string > ( ) = = " white " ) ;
2011-03-04 07:14:08 +03:00
return true ;
}
// 8.20
TEST BlockNodeTypes ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_20 ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc . size ( ) = = 3 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 0 ] . to < std : : string > ( ) = = " flow in block " ) ;
YAML_ASSERT ( doc [ 1 ] . to < std : : string > ( ) = = " Block scalar \n " ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc [ 2 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ 2 ] [ " foo " ] . to < std : : string > ( ) = = " bar " ) ;
2011-03-04 07:14:08 +03:00
return true ;
}
// 8.21
TEST BlockScalarNodes ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_21 ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
2011-09-06 10:05:14 +04:00
YAML_ASSERT ( doc [ " literal " ] . to < std : : string > ( ) = = " value " ) ; // Note: I believe this is a bug in the YAML spec - it should be "value\n"
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " folded " ] . to < std : : string > ( ) = = " value " ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc [ " folded " ] . Tag ( ) = = " !foo " ) ;
return true ;
}
// 8.22
TEST BlockCollectionNodes ( )
{
2011-09-18 08:57:40 +04:00
PARSE ( doc , ex8_22 ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc . size ( ) = = 2 ) ;
YAML_ASSERT ( doc [ " sequence " ] . size ( ) = = 2 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " sequence " ] [ 0 ] . to < std : : string > ( ) = = " entry " ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc [ " sequence " ] [ 1 ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " sequence " ] [ 1 ] [ 0 ] . to < std : : string > ( ) = = " nested " ) ;
2011-03-04 07:14:08 +03:00
YAML_ASSERT ( doc [ " mapping " ] . size ( ) = = 1 ) ;
2011-03-15 08:49:56 +03:00
YAML_ASSERT ( doc [ " mapping " ] [ " foo " ] . to < std : : string > ( ) = = " bar " ) ;
2011-03-04 07:14:08 +03:00
return true ;
}
2009-09-03 18:27:03 +04:00
}
}