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