Commit ec2ecad1 authored by Jesse Beder's avatar Jesse Beder
Browse files

Added CMake scripts for other platforms\nFixed some bugs that gcc complained...

Added CMake scripts for other platforms\nFixed some bugs that gcc complained about\nFixed CR/LF vs LF bug
parent 813817f1
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)
......@@ -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";
}
parser.PrintTokens(std::cout);
} catch(YAML::Exception&) {
std::cout << "Error parsing the yaml!\n";
}
}
int main()
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);
Test::RunAll();
#endif // WINDOWS
Test::RunAll(verbose);
run();
getchar();
return 0;
}
......@@ -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,7 +32,7 @@ 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());
......@@ -71,6 +72,14 @@ namespace Test
fout << secondTry << std::endl;
} catch(YAML::ParserException& e) {
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;
}
......
#include <string>
namespace Test {
void RunAll();
bool Inout(const std::string& file);
void RunAll(bool verbose);
bool Inout(const std::string& file, bool verbose);
}
%YAML 1.2
%TAG ! !howdy
---
- basic node
- ! yeah baby
\ No newline at end of file
- 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?
\ No newline at end of file
---
- "basic node"
- !<!howdy> "yeah baby"
---
- "basic node"
- !<!<!howdy>> "yeah baby"
- 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 ]
\ No newline at end of file
---
just a scalar
---
and another scalar
---
now an end document
...
---
and now two
...
...
---
and that's it
\ No newline at end of file
- it's just
- one thing
- after another
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment