Home | History | Annotate | Download | only in unittest
      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