# Copyright 2019 - 2020 Alexander Grund # Distributed under the Nowide Software License, Version 1.0. # (See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt) include(CheckCXXCompilerFlag) check_cxx_compiler_flag(-Wsuggest-override _NOWIDE_SUGGEST_OVERRIDE_SUPPORTED) function(nowide_add_test name) cmake_parse_arguments(PARSE_ARGV 1 ARG "COMPILE_ONLY" "SRC" "LIBRARIES;DEFINITIONS;ARGS") if(NOT ARG_SRC) set(ARG_SRC ${name}.cpp) endif() set(name ${PROJECT_NAME}-${name}) add_executable(${name} ${ARG_SRC}) target_link_libraries(${name} PRIVATE nowide::nowide ${ARG_LIBRARIES}) nowide_add_warnings(${name} pedantic ${NOWIDE_WERROR}) if(_NOWIDE_SUGGEST_OVERRIDE_SUPPORTED) target_compile_options(${name} PRIVATE -Wsuggest-override -Wno-error=suggest-override) endif() target_compile_definitions(${name} PRIVATE ${ARG_DEFINITIONS}) if(NOT ARG_COMPILE_ONLY) add_test(NAME ${name} COMMAND ${name} ${ARG_ARGS}) endif() endfunction() nowide_add_test(test_codecvt) nowide_add_test(test_convert) nowide_add_test(test_env) nowide_add_test(test_env_win SRC test_env.cpp DEFINITIONS NOWIDE_TEST_INCLUDE_WINDOWS) nowide_add_test(test_fstream) nowide_add_test(test_fstream_cxx11) nowide_add_test(test_iostream) if(MSVC AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.13) set_target_properties(${PROJECT_NAME}-test_iostream PROPERTIES VS_DEBUGGER_COMMAND_ARGUMENTS -i) endif() nowide_add_test(test_stackstring) nowide_add_test(test_stdio) nowide_add_test(test_system_n SRC test_system.cpp DEFINITIONS NOWIDE_TEST_USE_NARROW=1) if(WIN32) nowide_add_test(test_system_w SRC test_system.cpp DEFINITIONS NOWIDE_TEST_USE_NARROW=0) else() nowide_add_test(test_internal_fstream SRC test_fstream.cpp DEFINITIONS NOWIDE_USE_FILEBUF_REPLACEMENT=1) nowide_add_test(test_internal_fstream_cxx11 SRC test_fstream_cxx11.cpp DEFINITIONS NOWIDE_USE_FILEBUF_REPLACEMENT=1) endif() nowide_add_test(benchmark_fstream COMPILE_ONLY DEFINITIONS NOWIDE_USE_FILEBUF_REPLACEMENT=1)