Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/miloyip/rapidjson.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMilo Yip <miloyip@gmail.com>2014-08-11 17:56:10 +0400
committerMilo Yip <miloyip@gmail.com>2014-08-11 17:56:10 +0400
commitadb3974e4d078e253a31f4e9e034583bf41298d8 (patch)
tree7e7d677514ca819b38ffe21f6b51863879047891 /test
parent34dd0fd68f765e5b75c9a57a3f95b473a6c569f5 (diff)
parentc54915297b530639ae0eac97bff34df4693c7e15 (diff)
Merge pull request #97 from miloyip/issue72customdtoa
Fix #72
Diffstat (limited to 'test')
-rw-r--r--test/unittest/writertest.cpp55
1 files changed, 2 insertions, 53 deletions
diff --git a/test/unittest/writertest.cpp b/test/unittest/writertest.cpp
index 48d7c4ea..59543b0e 100644
--- a/test/unittest/writertest.cpp
+++ b/test/unittest/writertest.cpp
@@ -60,60 +60,9 @@ TEST(Writer, String) {
TEST_ROUNDTRIP("[\"\\\"\\\\/\\b\\f\\n\\r\\t\"]");
}
-TEST(Writer,DoublePrecision) {
- const char json[] = "[1.2345,1.2345678,0.123456789012,1234567.8]";
+TEST(Writer, Double) {
+ TEST_ROUNDTRIP("[1.2345,1.2345678,0.123456789012,1234567.8]");
- StringBuffer buffer;
- Writer<StringBuffer> writer(buffer);
-
- const int kDefaultDoublePrecision = 6;
- // handling the double precision
- EXPECT_EQ(writer.GetDoublePrecision(), kDefaultDoublePrecision);
- writer.SetDoublePrecision(17);
- EXPECT_EQ(writer.GetDoublePrecision(), 17);
- writer.SetDoublePrecision(-1); // negative equivalent to reset
- EXPECT_EQ(writer.GetDoublePrecision(), kDefaultDoublePrecision);
- writer.SetDoublePrecision(1);
- writer.SetDoublePrecision(); // reset again
- EXPECT_EQ(writer.GetDoublePrecision(), kDefaultDoublePrecision);
-
- { // write with explicitly increased precision
- StringStream s(json);
- Reader reader;
- reader.Parse<0>(s, writer.SetDoublePrecision(12));
- EXPECT_EQ(writer.GetDoublePrecision(), 12);
- EXPECT_STREQ(json, buffer.GetString());
- }
- { // explicit individual double precisions
- buffer.Clear();
- writer.Reset(buffer);
- writer.SetDoublePrecision(2);
- writer.StartArray();
- writer.Double(1.2345, 5);
- writer.Double(1.2345678, 9);
- writer.Double(0.123456789012, 12);
- writer.Double(1234567.8, 8);
- writer.EndArray();
-
- EXPECT_EQ(writer.GetDoublePrecision(), 2);
- EXPECT_STREQ(json, buffer.GetString());
- }
- { // write with default precision (output with precision loss)
- Document d;
- d.Parse<0>(json);
- buffer.Clear();
- writer.Reset(buffer);
- d.Accept(writer.SetDoublePrecision());
-
- // parsed again to avoid platform-dependent floating point outputs
- // (e.g. width of exponents)
- d.Parse<0>(buffer.GetString());
- EXPECT_EQ(writer.GetDoublePrecision(), kDefaultDoublePrecision);
- EXPECT_DOUBLE_EQ(d[0u].GetDouble(), 1.2345);
- EXPECT_DOUBLE_EQ(d[1u].GetDouble(), 1.23457);
- EXPECT_DOUBLE_EQ(d[2u].GetDouble(), 0.123457);
- EXPECT_DOUBLE_EQ(d[3u].GetDouble(), 1234570);
- }
}
TEST(Writer, Transcode) {