@@ -1656,6 +1656,43 @@ JSONTEST_FIXTURE(ValueTest, specialFloats) {
16561656 JSONTEST_ASSERT_STRING_EQUAL (expected, result);
16571657}
16581658
1659+ JSONTEST_FIXTURE (ValueTest, precision) {
1660+ Json::StreamWriterBuilder b;
1661+ b.settings_ [" precision" ] = 5 ;
1662+
1663+ Json::Value v = 100.0 /3 ;
1664+ std::string expected = " 33.333" ;
1665+ std::string result = Json::writeString (b, v);
1666+ JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1667+
1668+ v = 0.25000000 ;
1669+ expected = " 0.25" ;
1670+ result = Json::writeString (b, v);
1671+ JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1672+
1673+ v = 0.2563456 ;
1674+ expected = " 0.25635" ;
1675+ result = Json::writeString (b, v);
1676+ JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1677+
1678+ b.settings_ [" precision" ] = 1 ;
1679+ expected = " 0.3" ;
1680+ result = Json::writeString (b, v);
1681+ JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1682+
1683+ b.settings_ [" precision" ] = 17 ;
1684+ v = 1234857476305.256345694873740545068 ;
1685+ expected = " 1234857476305.2563" ;
1686+ result = Json::writeString (b, v);
1687+ JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1688+
1689+ b.settings_ [" precision" ] = 24 ;
1690+ v = 0.256345694873740545068 ;
1691+ expected = " 0.25634569487374054" ;
1692+ result = Json::writeString (b, v);
1693+ JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1694+ }
1695+
16591696struct StreamWriterTest : JsonTest::TestCase {};
16601697
16611698JSONTEST_FIXTURE (StreamWriterTest, dropNullPlaceholders) {
@@ -2391,6 +2428,7 @@ int main(int argc, const char* argv[]) {
23912428 JSONTEST_REGISTER_FIXTURE (runner, ValueTest, zeroes);
23922429 JSONTEST_REGISTER_FIXTURE (runner, ValueTest, zeroesInKeys);
23932430 JSONTEST_REGISTER_FIXTURE (runner, ValueTest, specialFloats);
2431+ JSONTEST_REGISTER_FIXTURE (runner, ValueTest, precision);
23942432
23952433 JSONTEST_REGISTER_FIXTURE (runner, StreamWriterTest, dropNullPlaceholders);
23962434 JSONTEST_REGISTER_FIXTURE (runner, StreamWriterTest, writeZeroes);
0 commit comments