aboutsummaryrefslogtreecommitdiff
path: root/test/unittest/namespacetest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/unittest/namespacetest.cpp')
-rw-r--r--test/unittest/namespacetest.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/test/unittest/namespacetest.cpp b/test/unittest/namespacetest.cpp
new file mode 100644
index 0000000..1814724
--- /dev/null
+++ b/test/unittest/namespacetest.cpp
@@ -0,0 +1,70 @@
+// Tencent is pleased to support the open source community by making RapidJSON available.
+//
+// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
+//
+// Licensed under the MIT License (the "License"); you may not use this file except
+// in compliance with the License. You may obtain a copy of the License at
+//
+// http://opensource.org/licenses/MIT
+//
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations under the License.
+
+#include "unittest.h"
+
+// test another instantiation of RapidJSON in a different namespace
+
+#define RAPIDJSON_NAMESPACE my::rapid::json
+#define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapid { namespace json {
+#define RAPIDJSON_NAMESPACE_END } } }
+
+// include lots of RapidJSON files
+
+#include "rapidjson/document.h"
+#include "rapidjson/writer.h"
+#include "rapidjson/filereadstream.h"
+#include "rapidjson/filewritestream.h"
+#include "rapidjson/encodedstream.h"
+#include "rapidjson/stringbuffer.h"
+
+static const char json[] = "{\"hello\":\"world\",\"t\":true,\"f\":false,\"n\":null,\"i\":123,\"pi\":3.1416,\"a\":[1,2,3,4]}";
+
+TEST(NamespaceTest,Using) {
+ using namespace RAPIDJSON_NAMESPACE;
+ typedef GenericDocument<UTF8<>, CrtAllocator> DocumentType;
+ DocumentType doc;
+
+ doc.Parse(json);
+ EXPECT_TRUE(!doc.HasParseError());
+}
+
+TEST(NamespaceTest,Direct) {
+ typedef RAPIDJSON_NAMESPACE::Document Document;
+ typedef RAPIDJSON_NAMESPACE::Reader Reader;
+ typedef RAPIDJSON_NAMESPACE::StringStream StringStream;
+ typedef RAPIDJSON_NAMESPACE::StringBuffer StringBuffer;
+ typedef RAPIDJSON_NAMESPACE::Writer<StringBuffer> WriterType;
+
+ StringStream s(json);
+ StringBuffer buffer;
+ WriterType writer(buffer);
+ buffer.ShrinkToFit();
+ Reader reader;
+ reader.Parse(s, writer);
+
+ EXPECT_STREQ(json, buffer.GetString());
+ EXPECT_EQ(sizeof(json)-1, buffer.GetSize());
+ EXPECT_TRUE(writer.IsComplete());
+
+ Document doc;
+ doc.Parse(buffer.GetString());
+ EXPECT_TRUE(!doc.HasParseError());
+
+ buffer.Clear();
+ writer.Reset(buffer);
+ doc.Accept(writer);
+ EXPECT_STREQ(json, buffer.GetString());
+ EXPECT_TRUE(writer.IsComplete());
+}