95 lines
2.1 KiB
C++
95 lines
2.1 KiB
C++
#include "util/json_container.hpp"
|
|
#include "util/json_renderer.hpp"
|
|
|
|
#include <boost/test/unit_test.hpp>
|
|
|
|
#include <iostream>
|
|
|
|
BOOST_AUTO_TEST_SUITE(json_renderer)
|
|
|
|
using namespace osrm::util::json;
|
|
|
|
BOOST_AUTO_TEST_CASE(number_truncating)
|
|
{
|
|
std::string str;
|
|
Renderer<std::string> renderer(str);
|
|
|
|
// this number would have more than 10 decimals if not truncated
|
|
renderer(Number{42.9995999594999399299});
|
|
BOOST_CHECK_EQUAL(str, "42.99959996");
|
|
}
|
|
|
|
BOOST_AUTO_TEST_CASE(integer)
|
|
{
|
|
std::string str;
|
|
Renderer<std::string> renderer(str);
|
|
renderer(Number{42.0});
|
|
BOOST_CHECK_EQUAL(str, "42");
|
|
}
|
|
|
|
BOOST_AUTO_TEST_CASE(test_json_issue_6531)
|
|
{
|
|
std::string output;
|
|
osrm::util::json::Renderer<std::string> renderer(output);
|
|
renderer(0.0000000000017114087924596788);
|
|
BOOST_CHECK_EQUAL(output, "1.711408792e-12");
|
|
|
|
output.clear();
|
|
renderer(42.0);
|
|
BOOST_CHECK_EQUAL(output, "42");
|
|
|
|
output.clear();
|
|
renderer(42.1);
|
|
BOOST_CHECK_EQUAL(output, "42.1");
|
|
|
|
output.clear();
|
|
renderer(42.12);
|
|
BOOST_CHECK_EQUAL(output, "42.12");
|
|
|
|
output.clear();
|
|
renderer(42.123);
|
|
BOOST_CHECK_EQUAL(output, "42.123");
|
|
|
|
output.clear();
|
|
renderer(42.1234);
|
|
BOOST_CHECK_EQUAL(output, "42.1234");
|
|
|
|
output.clear();
|
|
renderer(42.12345);
|
|
BOOST_CHECK_EQUAL(output, "42.12345");
|
|
|
|
output.clear();
|
|
renderer(42.123456);
|
|
BOOST_CHECK_EQUAL(output, "42.123456");
|
|
|
|
output.clear();
|
|
renderer(42.1234567);
|
|
BOOST_CHECK_EQUAL(output, "42.1234567");
|
|
|
|
output.clear();
|
|
renderer(42.12345678);
|
|
BOOST_CHECK_EQUAL(output, "42.12345678");
|
|
|
|
output.clear();
|
|
renderer(42.123456789);
|
|
BOOST_CHECK_EQUAL(output, "42.12345679");
|
|
|
|
output.clear();
|
|
renderer(0.12345678912345);
|
|
BOOST_CHECK_EQUAL(output, "0.1234567891");
|
|
|
|
output.clear();
|
|
renderer(0.123456789);
|
|
BOOST_CHECK_EQUAL(output, "0.123456789");
|
|
|
|
output.clear();
|
|
renderer(0.12345678916);
|
|
BOOST_CHECK_EQUAL(output, "0.1234567892");
|
|
|
|
output.clear();
|
|
renderer(123456789123456789.);
|
|
BOOST_CHECK_EQUAL(output, "1.234567891e+17");
|
|
}
|
|
|
|
BOOST_AUTO_TEST_SUITE_END()
|