@@ -1656,6 +1656,43 @@ JSONTEST_FIXTURE(ValueTest, specialFloats) {
1656
1656
JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1657
1657
}
1658
1658
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
+
1659
1696
struct StreamWriterTest : JsonTest::TestCase {};
1660
1697
1661
1698
JSONTEST_FIXTURE (StreamWriterTest, dropNullPlaceholders) {
@@ -2391,6 +2428,7 @@ int main(int argc, const char* argv[]) {
2391
2428
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, zeroes);
2392
2429
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, zeroesInKeys);
2393
2430
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, specialFloats);
2431
+ JSONTEST_REGISTER_FIXTURE (runner, ValueTest, precision);
2394
2432
2395
2433
JSONTEST_REGISTER_FIXTURE (runner, StreamWriterTest, dropNullPlaceholders);
2396
2434
JSONTEST_REGISTER_FIXTURE (runner, StreamWriterTest, writeZeroes);
0 commit comments