Added CMake scripts for other platforms\nFixed some bugs that gcc complained about\nFixed CR/LF vs LF bug

This commit is contained in:
Jesse Beder
2008-08-07 03:30:56 +00:00
parent 813817f1ab
commit ec2ecad197
30 changed files with 233 additions and 82 deletions

View File

@@ -0,0 +1,6 @@
set(FILES main.cpp tests.cpp)
include_directories(${YAML_CPP_SOURCE_DIR}/include)
link_directories(${YAML_CPP_BINARY_DIR}/bin)
add_executable(yaml-reader ${FILES})
target_link_libraries(yaml-reader yaml-cpp)

View File

@@ -11,31 +11,29 @@
void run()
{
std::ifstream fin("yaml-reader/tests/test.yaml");
std::ifstream fin("tests/test.yaml");
try {
YAML::Parser parser(fin);
if(!parser)
return;
YAML::Node doc;
parser.GetNextDocument(doc);
for(YAML::Iterator it=doc.begin();it!=doc.end();++it) {
std::string item;
*it >> item;
std::cout << item << "\n";
}
YAML::Parser parser(fin);
parser.PrintTokens(std::cout);
} catch(YAML::Exception&) {
std::cout << "Error parsing the yaml!\n";
}
}
int main()
{
_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF|_CRTDBG_ALLOC_MEM_DF);
Test::RunAll();
int main(int argc, char **argv)
{
bool verbose = false;
for(int i=1;i<argc;i++) {
if(strcmp(argv[i], "-v") == 0)
verbose = true;
}
#ifdef WINDOWS
_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF|_CRTDBG_ALLOC_MEM_DF);
#endif // WINDOWS
Test::RunAll(verbose);
run();
getchar();
return 0;
}

View File

@@ -9,20 +9,21 @@
namespace Test
{
// runs all the tests on all data we have
void RunAll()
void RunAll(bool verbose)
{
std::vector <std::string> files;
files.push_back("yaml-reader/tests/simple.yaml");
files.push_back("yaml-reader/tests/mixed.yaml");
files.push_back("yaml-reader/tests/scalars.yaml");
files.push_back("yaml-reader/tests/directives.yaml");
files.push_back("tests/simple.yaml");
files.push_back("tests/mixed.yaml");
files.push_back("tests/scalars.yaml");
files.push_back("tests/directives.yaml");
bool passed = true;
for(unsigned i=0;i<files.size();i++) {
if(!Inout(files[i])) {
std::cout << "Inout test failed on " << files[i] << std::endl;
if(!Inout(files[i], verbose)) {
std::cout << "Inout test failed on " << files[i] << "\n";
passed = false;
}
} else
std::cout << "Inout test passed: " << files[i] << "\n";
}
if(passed)
@@ -31,9 +32,9 @@ namespace Test
// loads the given YAML file, outputs it, and then loads the outputted file,
// outputs again, and makes sure that the two outputs are the same
bool Inout(const std::string& file)
bool Inout(const std::string& file, bool verbose)
{
std::ifstream fin(file.c_str());
std::ifstream fin(file.c_str());
try {
// read and output
@@ -70,7 +71,15 @@ namespace Test
fout << "---\n";
fout << secondTry << std::endl;
} catch(YAML::ParserException& e) {
std::cout << file << " (line " << e.line + 1 << ", col " << e.column + 1 << "): " << e.msg << std::endl;
std::cout << file << " (line " << e.line + 1 << ", col " << e.column + 1 << "): " << e.msg << std::endl;
if(verbose) {
std::cout << "Token queue:\n";
std::ifstream f(file.c_str());
YAML::Parser p(f);
p.PrintTokens(std::cout);
}
return false;
}

View File

@@ -1,6 +1,6 @@
#include <string>
namespace Test {
void RunAll();
bool Inout(const std::string& file);
void RunAll(bool verbose);
bool Inout(const std::string& file, bool verbose);
}

View File

@@ -0,0 +1,5 @@
%YAML 1.2
%TAG ! !howdy
---
- basic node
- ! yeah baby

View File

@@ -0,0 +1,32 @@
- the main thing is a sequence
- here's a key: value
and another: value
- let's inline: [1, 2, 3]
and an inline map: {key: value, 243: 101}
- and multiple indents:
- here's
- a
- list
and another:
- list
- of
- things
- maybe now:
let's: get
pretty:
deep: here
in:
the: nesting
just: to
confuse:
the: heck
out:
- of
- the: parser
if:
- we
- can
- do: that
what: do
you: think?

View File

@@ -0,0 +1,8 @@
---
- "basic node"
- !<!howdy> "yeah baby"
---
- "basic node"
- !<!<!howdy>> "yeah baby"

View File

@@ -0,0 +1,35 @@
- normal scalar, but
over several lines
- |
literal scalar - so we can draw ASCII:
- -
| - |
------
- >
and a folded scalar... so we
can just keep writing various
things. And if we want to keep indentation:
we just indent a little
see, this stays indented
- >-
Here's a folded scalar
that gets chomped.
- |-
And here's a literal scalar
that gets chomped.
- >2
Here's a folded scalar
that starts with some indentation.
- ::vector
- ": - ()"
- Up, up, and away!
- -123
- http://example.com/foo#bar
# Inside flow collection:
- [ ::vector,
": - ()",
"Up, up and away!",
-123,
http://example.com/foo#bar ]

View File

@@ -0,0 +1,13 @@
---
just a scalar
---
and another scalar
---
now an end document
...
---
and now two
...
...
---
and that's it

View File

@@ -0,0 +1,3 @@
- it's just
- one thing
- after another