Fix floating point precision on input.

This commit is contained in:
Jesse Beder 2013-04-13 13:10:36 -05:00
parent ae42def6cf
commit 895af26226
2 changed files with 10 additions and 0 deletions

View File

@ -78,6 +78,7 @@ namespace YAML
struct convert<type> {\
static Node encode(const type& rhs) {\
std::stringstream stream;\
stream.precision(std::numeric_limits<type>::digits10 + 1);\
stream << rhs;\
return Node(stream.str());\
}\

View File

@ -498,6 +498,14 @@ namespace Test
YAML_ASSERT_THROWS(node.begin()->begin()->IsDefined(), YAML::InvalidNode);
return true;
}
TEST FloatingPrecision()
{
const double x = 0.123456789;
YAML::Node node = YAML::Node(x);
YAML_ASSERT(node.as<double>() == x);
return true;
}
}
void RunNodeTest(TEST (*test)(), const std::string& name, int& passed, int& total) {
@ -560,6 +568,7 @@ namespace Test
RunNodeTest(&Node::ForceInsertIntoMap, "force insert into map", passed, total);
RunNodeTest(&Node::ResetNode, "reset node", passed, total);
RunNodeTest(&Node::DereferenceIteratorError, "dereference iterator error", passed, total);
RunNodeTest(&Node::FloatingPrecision, "floating precision", passed, total);
std::cout << "Node tests: " << passed << "/" << total << " passed\n";
return passed == total;