diff --git a/test/unittest/prettywritertest.cpp b/test/unittest/prettywritertest.cpp index a372f7986..1700c0c79 100644 --- a/test/unittest/prettywritertest.cpp +++ b/test/unittest/prettywritertest.cpp @@ -18,6 +18,11 @@ #include "rapidjson/stringbuffer.h" #include "rapidjson/filewritestream.h" +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(c++98-compat) +#endif + using namespace rapidjson; static const char kJson[] = "{\"hello\":\"world\",\"t\":true,\"f\":false,\"n\":null,\"i\":123,\"pi\":3.1416,\"a\":[1,2,3,-1],\"u64\":1234567890123456789,\"i64\":-1234567890123456789}"; @@ -201,3 +206,29 @@ TEST(PrettyWriter, RawValue) { "}", buffer.GetString()); } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS +TEST(PrettyWriter, MoveCtor) { + StringBuffer buffer; + auto writerGen=[](StringBuffer &target) -> PrettyWriter { + PrettyWriter writer(target); + writer.StartObject(); + writer.Key("a"); + writer.Int(1); + return std::move(writer); + }; + + PrettyWriter writer(writerGen(buffer)); + writer.EndObject(); + EXPECT_TRUE(writer.IsComplete()); + EXPECT_STREQ( + "{\n" + " \"a\": 1\n" + "}", + buffer.GetString()); +} +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif diff --git a/test/unittest/writertest.cpp b/test/unittest/writertest.cpp index 29f762609..b3124bfeb 100644 --- a/test/unittest/writertest.cpp +++ b/test/unittest/writertest.cpp @@ -20,6 +20,11 @@ #include "rapidjson/stringbuffer.h" #include "rapidjson/memorybuffer.h" +#ifdef __clang__ +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(c++98-compat) +#endif + using namespace rapidjson; TEST(Writer, Compact) { @@ -495,3 +500,25 @@ TEST(Writer, RawValue) { EXPECT_TRUE(writer.IsComplete()); EXPECT_STREQ("{\"a\":1,\"raw\":[\"Hello\\nWorld\", 123.456]}", buffer.GetString()); } + +#if RAPIDJSON_HAS_CXX11_RVALUE_REFS +TEST(Writer, MoveCtor) { + StringBuffer buffer; + auto writerGen=[](StringBuffer &target) -> Writer { + Writer writer(target); + writer.StartObject(); + writer.Key("a"); + writer.Int(1); + return std::move(writer); + }; + + Writer writer(writerGen(buffer)); + writer.EndObject(); + EXPECT_TRUE(writer.IsComplete()); + EXPECT_STREQ("{\"a\":1}", buffer.GetString()); +} +#endif + +#ifdef __clang__ +RAPIDJSON_DIAG_POP +#endif