@@ -1675,6 +1675,43 @@ JSONTEST_FIXTURE(ValueTest, specialFloats) {
1675
1675
JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1676
1676
}
1677
1677
1678
+ JSONTEST_FIXTURE (ValueTest, precision) {
1679
+ Json::StreamWriterBuilder b;
1680
+ b.settings_ [" precision" ] = 5 ;
1681
+
1682
+ Json::Value v = 100.0 /3 ;
1683
+ std::string expected = " 33.333" ;
1684
+ std::string result = Json::writeString (b, v);
1685
+ JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1686
+
1687
+ v = 0.25000000 ;
1688
+ expected = " 0.25" ;
1689
+ result = Json::writeString (b, v);
1690
+ JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1691
+
1692
+ v = 0.2563456 ;
1693
+ expected = " 0.25635" ;
1694
+ result = Json::writeString (b, v);
1695
+ JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1696
+
1697
+ b.settings_ [" precision" ] = 1 ;
1698
+ expected = " 0.3" ;
1699
+ result = Json::writeString (b, v);
1700
+ JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1701
+
1702
+ b.settings_ [" precision" ] = 17 ;
1703
+ v = 1234857476305.256345694873740545068 ;
1704
+ expected = " 1234857476305.2563" ;
1705
+ result = Json::writeString (b, v);
1706
+ JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1707
+
1708
+ b.settings_ [" precision" ] = 24 ;
1709
+ v = 0.256345694873740545068 ;
1710
+ expected = " 0.25634569487374054" ;
1711
+ result = Json::writeString (b, v);
1712
+ JSONTEST_ASSERT_STRING_EQUAL (expected, result);
1713
+ }
1714
+
1678
1715
struct WriterTest : JsonTest::TestCase {};
1679
1716
1680
1717
JSONTEST_FIXTURE (WriterTest, dropNullPlaceholders) {
@@ -2489,6 +2526,7 @@ int main(int argc, const char* argv[]) {
2489
2526
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, zeroes);
2490
2527
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, zeroesInKeys);
2491
2528
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, specialFloats);
2529
+ JSONTEST_REGISTER_FIXTURE (runner, ValueTest, precision);
2492
2530
2493
2531
JSONTEST_REGISTER_FIXTURE (runner, WriterTest, dropNullPlaceholders);
2494
2532
JSONTEST_REGISTER_FIXTURE (runner, StreamWriterTest, dropNullPlaceholders);
0 commit comments