1 // Tencent is pleased to support the open source community by making RapidJSON available.
2 //
3 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 //
5 // Licensed under the MIT License (the "License"); you may not use this file except
6 // in compliance with the License. You may obtain a copy of the License at
7 //
8 // http://opensource.org/licenses/MIT
9 //
10 // Unless required by applicable law or agreed to in writing, software distributed
11 // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 // specific language governing permissions and limitations under the License.
14 
15 #include "unittest.h"
16 
17 // test another instantiation of RapidJSON in a different namespace
18 
19 #define RAPIDJSON_NAMESPACE my::rapid::json
20 #define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapid { namespace json {
21 #define RAPIDJSON_NAMESPACE_END } } }
22 
23 // include lots of RapidJSON files
24 
25 #include "rapidjson/document.h"
26 #include "rapidjson/writer.h"
27 #include "rapidjson/filereadstream.h"
28 #include "rapidjson/filewritestream.h"
29 #include "rapidjson/encodedstream.h"
30 #include "rapidjson/stringbuffer.h"
31 
32 static const char json[] = "{\"hello\":\"world\",\"t\":true,\"f\":false,\"n\":null,\"i\":123,\"pi\":3.1416,\"a\":[1,2,3,4]}";
33 
TEST(NamespaceTest,Using)34 TEST(NamespaceTest,Using) {
35     using namespace RAPIDJSON_NAMESPACE;
36     typedef GenericDocument<UTF8<>, CrtAllocator> DocumentType;
37     DocumentType doc;
38 
39     doc.Parse(json);
40     EXPECT_TRUE(!doc.HasParseError());
41 }
42 
TEST(NamespaceTest,Direct)43 TEST(NamespaceTest,Direct) {
44     typedef RAPIDJSON_NAMESPACE::Document Document;
45     typedef RAPIDJSON_NAMESPACE::Reader Reader;
46     typedef RAPIDJSON_NAMESPACE::StringStream StringStream;
47     typedef RAPIDJSON_NAMESPACE::StringBuffer StringBuffer;
48     typedef RAPIDJSON_NAMESPACE::Writer<StringBuffer> WriterType;
49 
50     StringStream s(json);
51     StringBuffer buffer;
52     WriterType writer(buffer);
53     buffer.ShrinkToFit();
54     Reader reader;
55     reader.Parse(s, writer);
56 
57     EXPECT_STREQ(json, buffer.GetString());
58     EXPECT_EQ(sizeof(json)-1, buffer.GetSize());
59     EXPECT_TRUE(writer.IsComplete());
60 
61     Document doc;
62     doc.Parse(buffer.GetString());
63     EXPECT_TRUE(!doc.HasParseError());
64 
65     buffer.Clear();
66     writer.Reset(buffer);
67     doc.Accept(writer);
68     EXPECT_STREQ(json, buffer.GetString());
69     EXPECT_TRUE(writer.IsComplete());
70 }
71