Tests for Writer, PrettyWriter move constructors

This commit is contained in:
Tallódi Mihály 2016-09-19 22:13:33 +02:00
parent 62dc1077eb
commit 1a64cd0997
2 changed files with 58 additions and 0 deletions

View File

@ -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<StringBuffer> {
PrettyWriter<StringBuffer> writer(target);
writer.StartObject();
writer.Key("a");
writer.Int(1);
return std::move(writer);
};
PrettyWriter<StringBuffer> writer(writerGen(buffer));
writer.EndObject();
EXPECT_TRUE(writer.IsComplete());
EXPECT_STREQ(
"{\n"
" \"a\": 1\n"
"}",
buffer.GetString());
}
#endif
#ifdef __clang__
RAPIDJSON_DIAG_POP
#endif

View File

@ -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<StringBuffer> {
Writer<StringBuffer> writer(target);
writer.StartObject();
writer.Key("a");
writer.Int(1);
return std::move(writer);
};
Writer<StringBuffer> writer(writerGen(buffer));
writer.EndObject();
EXPECT_TRUE(writer.IsComplete());
EXPECT_STREQ("{\"a\":1}", buffer.GetString());
}
#endif
#ifdef __clang__
RAPIDJSON_DIAG_POP
#endif