
Trim whitespace off the end of various lines. Added an additional NumberStream specialization that will always perform a TakePush() even when just Take() is called. This supports RawNumber parsing by pushing onto our StackStream particular parts of the number that currently aren't captured because of full precision double parsing, such as the negative sign, scientific number exponents, etc. RawNumber parsing fails with input streams that don't have copy optimization, such as the BasicIStreamWrapper stream. To work around this, instead do the Transcode copy operation by reading from a UTF8 StringStream instead of the original InputStream. Since the NumberStream downcasts all input Ch into chars, we know we're dealing with UTF8/ASCII compatible stack characters during the Transcoding.
76 lines
2.5 KiB
CMake
76 lines
2.5 KiB
CMake
set(UNITTEST_SOURCES
|
|
allocatorstest.cpp
|
|
bigintegertest.cpp
|
|
documenttest.cpp
|
|
dtoatest.cpp
|
|
encodedstreamtest.cpp
|
|
encodingstest.cpp
|
|
fwdtest.cpp
|
|
filestreamtest.cpp
|
|
itoatest.cpp
|
|
istreamwrappertest.cpp
|
|
jsoncheckertest.cpp
|
|
namespacetest.cpp
|
|
pointertest.cpp
|
|
prettywritertest.cpp
|
|
ostreamwrappertest.cpp
|
|
readertest.cpp
|
|
regextest.cpp
|
|
schematest.cpp
|
|
simdtest.cpp
|
|
strfunctest.cpp
|
|
stringbuffertest.cpp
|
|
strtodtest.cpp
|
|
unittest.cpp
|
|
valuetest.cpp
|
|
writertest.cpp)
|
|
|
|
find_program(CCACHE_FOUND ccache)
|
|
if(CCACHE_FOUND)
|
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
|
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -fcolor-diagnostics")
|
|
endif()
|
|
endif(CCACHE_FOUND)
|
|
|
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Weffc++ -Wswitch-default -Wfloat-equal")
|
|
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Weffc++ -Wswitch-default -Wfloat-equal -Wimplicit-fallthrough -Weverything")
|
|
# If the user is running a newer version of Clang that includes the
|
|
# -Wdouble-promotion, we will ignore that warning.
|
|
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 3.7)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-double-promotion")
|
|
endif()
|
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS=1)
|
|
endif()
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRAPIDJSON_HAS_STDSTRING=1")
|
|
|
|
add_library(namespacetest STATIC namespacetest.cpp)
|
|
|
|
add_executable(unittest ${UNITTEST_SOURCES})
|
|
target_link_libraries(unittest ${TEST_LIBRARIES} namespacetest)
|
|
|
|
add_dependencies(tests unittest)
|
|
|
|
add_test(NAME unittest
|
|
COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/unittest
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
|
|
|
|
if(NOT MSVC)
|
|
# Not running SIMD.* unit test cases for Valgrind
|
|
add_test(NAME valgrind_unittest
|
|
COMMAND valgrind --leak-check=full --error-exitcode=1 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/unittest --gtest_filter=-SIMD.*
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
|
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
add_test(NAME symbol_check
|
|
COMMAND sh -c "objdump -t -C libnamespacetest.a | grep rapidjson ; test $? -ne 0"
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
|
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
|
endif(NOT MSVC)
|