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 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 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