Skip to content

Commit 5d9d0f7

Browse files
authored
Merge pull request Tencent#909 from miloyip/issue905_PrettyWriterWriteFlags
Fix Tencent#905 unable to set writeFlags for PrettyWriter
2 parents b8f0414 + d88be8e commit 5d9d0f7

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

include/rapidjson/prettywriter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ enum PrettyFormatOptions {
4747
template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
4848
class PrettyWriter : public Writer<OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags> {
4949
public:
50-
typedef Writer<OutputStream, SourceEncoding, TargetEncoding, StackAllocator> Base;
50+
typedef Writer<OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags> Base;
5151
typedef typename Base::Ch Ch;
5252

5353
//! Constructor

test/unittest/prettywritertest.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,49 @@ TEST(PrettyWriter, InvalidEventSequence) {
258258
}
259259
}
260260

261+
TEST(PrettyWriter, NaN) {
262+
double nan = std::numeric_limits<double>::quiet_NaN();
263+
264+
EXPECT_TRUE(internal::Double(nan).IsNan());
265+
StringBuffer buffer;
266+
{
267+
PrettyWriter<StringBuffer> writer(buffer);
268+
EXPECT_FALSE(writer.Double(nan));
269+
}
270+
{
271+
PrettyWriter<StringBuffer, UTF8<>, UTF8<>, CrtAllocator, kWriteNanAndInfFlag> writer(buffer);
272+
EXPECT_TRUE(writer.Double(nan));
273+
EXPECT_STREQ("NaN", buffer.GetString());
274+
}
275+
GenericStringBuffer<UTF16<> > buffer2;
276+
PrettyWriter<GenericStringBuffer<UTF16<> > > writer2(buffer2);
277+
EXPECT_FALSE(writer2.Double(nan));
278+
}
279+
280+
TEST(PrettyWriter, Inf) {
281+
double inf = std::numeric_limits<double>::infinity();
282+
283+
EXPECT_TRUE(internal::Double(inf).IsInf());
284+
StringBuffer buffer;
285+
{
286+
PrettyWriter<StringBuffer> writer(buffer);
287+
EXPECT_FALSE(writer.Double(inf));
288+
}
289+
{
290+
PrettyWriter<StringBuffer> writer(buffer);
291+
EXPECT_FALSE(writer.Double(-inf));
292+
}
293+
{
294+
PrettyWriter<StringBuffer, UTF8<>, UTF8<>, CrtAllocator, kWriteNanAndInfFlag> writer(buffer);
295+
EXPECT_TRUE(writer.Double(inf));
296+
}
297+
{
298+
PrettyWriter<StringBuffer, UTF8<>, UTF8<>, CrtAllocator, kWriteNanAndInfFlag> writer(buffer);
299+
EXPECT_TRUE(writer.Double(-inf));
300+
}
301+
EXPECT_STREQ("Infinity-Infinity", buffer.GetString());
302+
}
303+
261304
TEST(PrettyWriter, Issue_889) {
262305
char buf[100] = "Hello";
263306

0 commit comments

Comments
 (0)