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();\
std::stringstream stream(input);\
stream.unsetf(std::ios::dec);\
if((stream >> rhs) && (stream >> std::ws).eof())\
if((stream >> std::noskipws >> rhs) && (stream >> std::ws).eof())\
return true;\
if(std::numeric_limits<type>::has_infinity) {\
if(conversion::IsInfinity(input)) {\

View File

@ -522,6 +522,13 @@ namespace Test
YAML_ASSERT(std::string(emitter.c_str()) == "");
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) {
@ -588,6 +595,7 @@ namespace Test
RunNodeTest(&Node::DereferenceIteratorError, "dereference iterator error", passed, total);
RunNodeTest(&Node::FloatingPrecision, "floating precision", 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";
return passed == total;