mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 12:41:17 +00:00
Added CMake scripts for other platforms\nFixed some bugs that gcc complained about\nFixed CR/LF vs LF bug
This commit is contained in:
6
yaml-reader/CMakeLists.txt
Normal file
6
yaml-reader/CMakeLists.txt
Normal 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)
|
@@ -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;
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
|
5
yaml-reader/tests/directives.yaml
Normal file
5
yaml-reader/tests/directives.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
%YAML 1.2
|
||||
%TAG ! !howdy
|
||||
---
|
||||
- basic node
|
||||
- ! yeah baby
|
32
yaml-reader/tests/mixed.yaml
Normal file
32
yaml-reader/tests/mixed.yaml
Normal 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?
|
||||
|
8
yaml-reader/tests/out.yaml
Normal file
8
yaml-reader/tests/out.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
- "basic node"
|
||||
- !<!howdy> "yeah baby"
|
||||
|
||||
---
|
||||
- "basic node"
|
||||
- !<!<!howdy>> "yeah baby"
|
||||
|
35
yaml-reader/tests/scalars.yaml
Normal file
35
yaml-reader/tests/scalars.yaml
Normal 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 ]
|
13
yaml-reader/tests/simple.yaml
Normal file
13
yaml-reader/tests/simple.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
just a scalar
|
||||
---
|
||||
and another scalar
|
||||
---
|
||||
now an end document
|
||||
...
|
||||
---
|
||||
and now two
|
||||
...
|
||||
...
|
||||
---
|
||||
and that's it
|
3
yaml-reader/tests/test.yaml
Normal file
3
yaml-reader/tests/test.yaml
Normal file
@@ -0,0 +1,3 @@
|
||||
- it's just
|
||||
- one thing
|
||||
- after another
|
Reference in New Issue
Block a user