/srv/osrm/osrm-backend/third_party/rapidjson/test/unittest
NameSizeModeActions
allocatorstest.cpp33080644editdlrm
bigintegertest.cpp42210644editdlrm
CMakeLists.txt31560644editdlrm
documenttest.cpp206940644editdlrm
dtoatest.cpp34030644editdlrm
encodedstreamtest.cpp120250644editdlrm
encodingstest.cpp193640644editdlrm
filestreamtest.cpp32180644editdlrm
fwdtest.cpp57440644editdlrm
istreamwrappertest.cpp53730644editdlrm
itoatest.cpp39660644editdlrm
jsoncheckertest.cpp31780644editdlrm
namespacetest.cpp24220644editdlrm
ostreamwrappertest.cpp24590644editdlrm
pointertest.cpp554070644editdlrm
prettywritertest.cpp57660644editdlrm
readertest.cpp705150644editdlrm
regextest.cpp161570644editdlrm
schematest.cpp473770644editdlrm
simdtest.cpp69200644editdlrm
strfunctest.cpp13370644editdlrm
stringbuffertest.cpp48340644editdlrm
strtodtest.cpp42730644editdlrm
unittest.cpp15480644editdlrm
unittest.h37660644editdlrm
valuetest.cpp549400644editdlrm
writertest.cpp149880644editdlrm
Edit: /srv/osrm/osrm-backend/third_party/rapidjson/test/unittest/stringbuffertest.cpp (4834B)
// 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" #include "rapidjson/stringbuffer.h" #include "rapidjson/writer.h" #ifdef __clang__ RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_OFF(c++98-compat) #endif using namespace rapidjson; TEST(StringBuffer, InitialSize) { StringBuffer buffer; EXPECT_EQ(0u, buffer.GetSize()); EXPECT_STREQ("", buffer.GetString()); } TEST(StringBuffer, Put) { StringBuffer buffer; buffer.Put('A'); EXPECT_EQ(1u, buffer.GetSize()); EXPECT_STREQ("A", buffer.GetString()); } TEST(StringBuffer, PutN_Issue672) { GenericStringBuffer, MemoryPoolAllocator<> > buffer; EXPECT_EQ(0, buffer.GetSize()); rapidjson::PutN(buffer, ' ', 1); EXPECT_EQ(1, buffer.GetSize()); } TEST(StringBuffer, Clear) { StringBuffer buffer; buffer.Put('A'); buffer.Put('B'); buffer.Put('C'); buffer.Clear(); EXPECT_EQ(0u, buffer.GetSize()); EXPECT_STREQ("", buffer.GetString()); } TEST(StringBuffer, Push) { StringBuffer buffer; buffer.Push(5); EXPECT_EQ(5u, buffer.GetSize()); // Causes sudden expansion to make the stack's capacity equal to size buffer.Push(65536u); EXPECT_EQ(5u + 65536u, buffer.GetSize()); } TEST(StringBuffer, Pop) { StringBuffer buffer; buffer.Put('A'); buffer.Put('B'); buffer.Put('C'); buffer.Put('D'); buffer.Put('E'); buffer.Pop(3); EXPECT_EQ(2u, buffer.GetSize()); EXPECT_STREQ("AB", buffer.GetString()); } #if RAPIDJSON_HAS_CXX11_RVALUE_REFS #if 0 // Many old compiler does not support these. Turn it off temporaily. #include TEST(StringBuffer, Traits) { static_assert( std::is_constructible::value, ""); static_assert( std::is_default_constructible::value, ""); #ifndef _MSC_VER static_assert(!std::is_copy_constructible::value, ""); #endif static_assert( std::is_move_constructible::value, ""); static_assert(!std::is_nothrow_constructible::value, ""); static_assert(!std::is_nothrow_default_constructible::value, ""); #if !defined(_MSC_VER) || _MSC_VER >= 1800 static_assert(!std::is_nothrow_copy_constructible::value, ""); static_assert(!std::is_nothrow_move_constructible::value, ""); #endif static_assert( std::is_assignable::value, ""); #ifndef _MSC_VER static_assert(!std::is_copy_assignable::value, ""); #endif static_assert( std::is_move_assignable::value, ""); #if !defined(_MSC_VER) || _MSC_VER >= 1800 static_assert(!std::is_nothrow_assignable::value, ""); #endif static_assert(!std::is_nothrow_copy_assignable::value, ""); static_assert(!std::is_nothrow_move_assignable::value, ""); static_assert( std::is_destructible::value, ""); #ifndef _MSC_VER static_assert(std::is_nothrow_destructible::value, ""); #endif } #endif TEST(StringBuffer, MoveConstructor) { StringBuffer x; x.Put('A'); x.Put('B'); x.Put('C'); x.Put('D'); EXPECT_EQ(4u, x.GetSize()); EXPECT_STREQ("ABCD", x.GetString()); // StringBuffer y(x); // does not compile (!is_copy_constructible) StringBuffer y(std::move(x)); EXPECT_EQ(0u, x.GetSize()); EXPECT_EQ(4u, y.GetSize()); EXPECT_STREQ("ABCD", y.GetString()); // StringBuffer z = y; // does not compile (!is_copy_assignable) StringBuffer z = std::move(y); EXPECT_EQ(0u, y.GetSize()); EXPECT_EQ(4u, z.GetSize()); EXPECT_STREQ("ABCD", z.GetString()); } TEST(StringBuffer, MoveAssignment) { StringBuffer x; x.Put('A'); x.Put('B'); x.Put('C'); x.Put('D'); EXPECT_EQ(4u, x.GetSize()); EXPECT_STREQ("ABCD", x.GetString()); StringBuffer y; // y = x; // does not compile (!is_copy_assignable) y = std::move(x); EXPECT_EQ(0u, x.GetSize()); EXPECT_EQ(4u, y.GetSize()); EXPECT_STREQ("ABCD", y.GetString()); } #endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS #ifdef __clang__ RAPIDJSON_DIAG_POP #endif