Fixed bug while reading a single space char

This commit is contained in:
Jesse Beder
2013-11-10 14:50:35 -06:00
parent 25881c4f96
commit 5b88931143
2 changed files with 9 additions and 1 deletions

View File

@@ -89,7 +89,7 @@ namespace YAML
const std::string& input = node.Scalar();\ const std::string& input = node.Scalar();\
std::stringstream stream(input);\ std::stringstream stream(input);\
stream.unsetf(std::ios::dec);\ stream.unsetf(std::ios::dec);\
if((stream >> rhs) && (stream >> std::ws).eof())\ if((stream >> std::noskipws >> rhs) && (stream >> std::ws).eof())\
return true;\ return true;\
if(std::numeric_limits<type>::has_infinity) {\ if(std::numeric_limits<type>::has_infinity) {\
if(conversion::IsInfinity(input)) {\ if(conversion::IsInfinity(input)) {\

View File

@@ -522,6 +522,13 @@ namespace Test
YAML_ASSERT(std::string(emitter.c_str()) == ""); YAML_ASSERT(std::string(emitter.c_str()) == "");
return true; return true;
} }
TEST SpaceChar()
{
YAML::Node node = YAML::Node(' ');
YAML_ASSERT(node.as<char>() == ' ');
return true;
}
} }
void RunNodeTest(TEST (*test)(), const std::string& name, int& passed, int& total) { void RunNodeTest(TEST (*test)(), const std::string& name, int& passed, int& total) {
@@ -588,6 +595,7 @@ namespace Test
RunNodeTest(&Node::DereferenceIteratorError, "dereference iterator error", passed, total); RunNodeTest(&Node::DereferenceIteratorError, "dereference iterator error", passed, total);
RunNodeTest(&Node::FloatingPrecision, "floating precision", passed, total); RunNodeTest(&Node::FloatingPrecision, "floating precision", passed, total);
RunNodeTest(&Node::EmitEmptyNode, "emit empty node", passed, total); RunNodeTest(&Node::EmitEmptyNode, "emit empty node", passed, total);
RunNodeTest(&Node::SpaceChar, "space char", passed, total);
std::cout << "Node tests: " << passed << "/" << total << " passed\n"; std::cout << "Node tests: " << passed << "/" << total << " passed\n";
return passed == total; return passed == total;