diff options
Diffstat (limited to 'src/third_party/boost-1.69.0/boost/test')
118 files changed, 0 insertions, 26108 deletions
diff --git a/src/third_party/boost-1.69.0/boost/test/debug.hpp b/src/third_party/boost-1.69.0/boost/test/debug.hpp deleted file mode 100644 index a8ccae0b970..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/debug.hpp +++ /dev/null @@ -1,138 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//! @file -//! @brief defines portable debug interfaces -//! -//! Intended to standardize interface of programs with debuggers -// *************************************************************************** - -#ifndef BOOST_TEST_DEBUG_API_HPP_112006GER -#define BOOST_TEST_DEBUG_API_HPP_112006GER - -// Boost.Test -#include <boost/test/detail/config.hpp> -#include <boost/test/utils/basic_cstring/basic_cstring.hpp> - -// Boost -#include <boost/function/function1.hpp> - -// STL -#include <string> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -/// Contains debugger and debug C Runtime interfaces -namespace debug { - -/// @defgroup DebuggerInterface Debugger and debug C Runtime portable interfaces -/// @{ -/// These interfaces are intended to be used by application to: -/// - check if we are running under debugger -/// - attach the debugger to itself -/// -/// Unfortunately these actions differ widely between different debuggers available in a field. These interface present generalized standard form of -/// performing these actions. Implementation depends a lot on the environment application is running in and thus there are several custom implementations -/// supported by the Boost.Test -/// -/// In addition here you find interfaces for memory leaks detection and reporting. -/// -/// All these interfaces are defined in namespace boost::debug - -// ************************************************************************** // -/// Checks if programs runs under debugger - -/// @returns true if current process is under debugger. False otherwise -// ************************************************************************** // -bool BOOST_TEST_DECL under_debugger(); - -// ************************************************************************** // -/// Cause program to break execution in debugger at call point -// ************************************************************************** // - -void BOOST_TEST_DECL debugger_break(); - -// ************************************************************************** // -/// Collection of data, which is used by debugger starter routine -// ************************************************************************** // - -struct dbg_startup_info { - long pid; ///< pid of a program to attach to - bool break_or_continue; ///< what to do after debugger is attached - unit_test::const_string binary_path; ///< path to executable for current process - unit_test::const_string display; ///< if debugger has a GUI, which display to use (on UNIX) - unit_test::const_string init_done_lock; ///< path to a uniquely named lock file, which is used to pause current application while debugger is being initialized -}; - -/// Signature of debugger starter routine. Takes an instance of dbg_startup_into as only argument -typedef boost::function<void (dbg_startup_info const&)> dbg_starter; - -// ************************************************************************** // -/// Specifies which debugger to use when attaching and optionally what routine to use to start that debugger - -/// There are many different debuggers available for different platforms. Some of them also can be used in a different setups/configuratins. -/// For example, gdb can be used in plain text mode, inside ddd, inside (x)emacs or in a separate xterm window. -/// Boost.Test identifies each configuration with unique string. -/// Also different debuggers configurations require different routines which is specifically tailored to start that debugger configuration. -/// Boost.Test comes with set of predefined configuration names and corresponding routines for these configurations: -/// - TODO -/// -/// You can use this routine to select which one of the predefined debugger configurations to use in which case you do not need to provide starter -/// routine (the one provided by Boost.Test will be used). You can also use this routine to select your own debugger by providing unique configuration -/// id and starter routine for this configuration. -/// -/// @param[in] dbg_id Unique id for debugger configuration (for example, gdb) -/// @param[in] s Optional starter routine for selected configuration (use only you want to define your own configuration) -/// @returns Id of previously selected debugger configuration -std::string BOOST_TEST_DECL set_debugger( unit_test::const_string dbg_id, dbg_starter s = dbg_starter() ); - -// ************************************************************************** // -/// Attaches debugger to the current process - -/// Using currently selected debugger, this routine attempts to attach the debugger to this process. -/// @param[in] break_or_continue tells what we wan to do after the debugger is attached. If true - process execution breaks -/// in the point in invocation of this function. Otherwise execution continues, but now it is -/// under the debugger -/// @returns true if debugger successfully attached. False otherwise -// ************************************************************************** // - -bool BOOST_TEST_DECL attach_debugger( bool break_or_continue = true ); - -// ************************************************************************** // -/// Switches on/off memory leaks detection - -/// On platforms where memory leak detection is possible inside of running application (at the moment this is only Windows family) you can -/// switch this feature on and off using this interface. In addition you can specify the name of the file to write a report into. Otherwise -/// the report is going to be generated in standard error stream. -/// @param[in] on_off boolean switch -/// @param[in] report_file file, where the report should be directed to -// ************************************************************************** // - -void BOOST_TEST_DECL detect_memory_leaks( bool on_off, unit_test::const_string report_file = unit_test::const_string() ); - -// ************************************************************************** // -/// Causes program to break execution in debugger at specific allocation point - -/// On some platforms/memory managers (at the moment only on Windows/Visual Studio) one can tell a C Runtime to break -/// on specific memory allocation. This can be used in combination with memory leak detection (which reports leaked memory -/// allocation number) to locate the place where leak initiated. -/// @param[in] mem_alloc_order_num Specific memory allocation number -// ************************************************************************** // - -void BOOST_TEST_DECL break_memory_alloc( long mem_alloc_order_num ); - -} // namespace debug -/// @} - -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif diff --git a/src/third_party/boost-1.69.0/boost/test/debug_config.hpp b/src/third_party/boost-1.69.0/boost/test/debug_config.hpp deleted file mode 100644 index 894d78e65ab..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/debug_config.hpp +++ /dev/null @@ -1,24 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//! @file -//! @brief user's config for Boost.Test debugging support -//! -//! This file is intended to be edited by end user to specify varios macros, which configure debugger interface -//! Alterntively you can set these parameters in your own sources/makefiles -// *************************************************************************** - -#ifndef BOOST_TEST_DEBUG_CONFIG_HPP_112006GER -#define BOOST_TEST_DEBUG_CONFIG_HPP_112006GER - -// ';' separated list of supported debuggers -// #define BOOST_TEST_DBG_LIST gdb;dbx - -// maximum size of /proc/pid/stat file -// #define BOOST_TEST_STAT_LINE_MAX - -#endif diff --git a/src/third_party/boost-1.69.0/boost/test/detail/config.hpp b/src/third_party/boost-1.69.0/boost/test/detail/config.hpp deleted file mode 100644 index db9b5d2b928..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/detail/config.hpp +++ /dev/null @@ -1,127 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief a central place for global configuration switches -// *************************************************************************** - -#ifndef BOOST_TEST_CONFIG_HPP_071894GER -#define BOOST_TEST_CONFIG_HPP_071894GER - -// Boost -#include <boost/config.hpp> // compilers workarounds -#include <boost/detail/workaround.hpp> - -#if defined(_WIN32) && !defined(BOOST_DISABLE_WIN32) && \ - (!defined(__COMO__) && !defined(__MWERKS__) && !defined(__GNUC__) || \ - BOOST_WORKAROUND(__MWERKS__, >= 0x3000)) -# define BOOST_SEH_BASED_SIGNAL_HANDLING -#endif - -#if defined(__COMO__) && defined(_MSC_VER) -// eh.h uses type_info without declaring it. -class type_info; -# define BOOST_SEH_BASED_SIGNAL_HANDLING -#endif - -//____________________________________________________________________________// - -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)) || \ - BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) || \ - (defined __sgi && BOOST_WORKAROUND(_COMPILER_VERSION, BOOST_TESTED_AT(730))) -# define BOOST_TEST_SHIFTED_LINE -#endif - -//____________________________________________________________________________// - -#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32)) -# define BOOST_TEST_CALL_DECL __cdecl -#else -# define BOOST_TEST_CALL_DECL /**/ -#endif - -//____________________________________________________________________________// - -#if !defined(BOOST_NO_STD_LOCALE) && !defined(__MWERKS__) -# define BOOST_TEST_USE_STD_LOCALE 1 -#endif - -//____________________________________________________________________________// - -#if BOOST_WORKAROUND(__BORLANDC__, <= 0x570) || \ - BOOST_WORKAROUND( __COMO__, <= 0x433 ) || \ - BOOST_WORKAROUND( __INTEL_COMPILER, <= 800 ) || \ - defined(__sgi) && _COMPILER_VERSION <= 730 || \ - BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) || \ - defined(__DECCXX) || \ - defined(__DMC__) -# define BOOST_TEST_NO_PROTECTED_USING -#endif - -//____________________________________________________________________________// - -#if defined(__GNUC__) || BOOST_WORKAROUND(BOOST_MSVC, == 1400) -#define BOOST_TEST_PROTECTED_VIRTUAL virtual -#else -#define BOOST_TEST_PROTECTED_VIRTUAL -#endif - -//____________________________________________________________________________// - -#if !defined(__BORLANDC__) && !BOOST_WORKAROUND( __SUNPRO_CC, < 0x5100 ) -#define BOOST_TEST_SUPPORT_TOKEN_ITERATOR 1 -#endif - -//____________________________________________________________________________// - -#if defined(BOOST_ALL_DYN_LINK) && !defined(BOOST_TEST_DYN_LINK) -# define BOOST_TEST_DYN_LINK -#endif - -#if defined(BOOST_TEST_INCLUDED) -# undef BOOST_TEST_DYN_LINK -#endif - -#if defined(BOOST_TEST_DYN_LINK) -# define BOOST_TEST_ALTERNATIVE_INIT_API - -# ifdef BOOST_TEST_SOURCE -# define BOOST_TEST_DECL BOOST_SYMBOL_EXPORT -# else -# define BOOST_TEST_DECL BOOST_SYMBOL_IMPORT -# endif // BOOST_TEST_SOURCE -#else -# define BOOST_TEST_DECL -#endif - -#if !defined(BOOST_TEST_MAIN) && defined(BOOST_AUTO_TEST_MAIN) -#define BOOST_TEST_MAIN BOOST_AUTO_TEST_MAIN -#endif - -#if !defined(BOOST_TEST_MAIN) && defined(BOOST_TEST_MODULE) -#define BOOST_TEST_MAIN BOOST_TEST_MODULE -#endif - - - -#ifndef BOOST_PP_VARIADICS /* we can change this only if not already defined) */ - -#ifdef __PGI -#define BOOST_PP_VARIADICS 1 -#endif - -#if BOOST_CLANG -#define BOOST_PP_VARIADICS 1 -#endif - -#if defined(BOOST_GCC) && (BOOST_GCC >= 4 * 10000 + 8 * 100) -#define BOOST_PP_VARIADICS 1 -#endif - -#endif /* ifndef BOOST_PP_VARIADICS */ - -#endif // BOOST_TEST_CONFIG_HPP_071894GER diff --git a/src/third_party/boost-1.69.0/boost/test/detail/enable_warnings.hpp b/src/third_party/boost-1.69.0/boost/test/detail/enable_warnings.hpp deleted file mode 100644 index d61c7dc5923..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/detail/enable_warnings.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief enable previously suppressed warnings -// *************************************************************************** - -#ifdef BOOST_MSVC -# pragma warning(default: 4511) // copy constructor can't not be generated -# pragma warning(default: 4512) // assignment operator can't not be generated -# pragma warning(default: 4100) // unreferenced formal parameter -# pragma warning(default: 4996) // <symbol> was declared deprecated -# pragma warning(default: 4355) // 'this' : used in base member initializer list -# pragma warning(default: 4706) // assignment within conditional expression -# pragma warning(default: 4251) // class 'A<T>' needs to have dll-interface to be used by clients of class 'B' -# pragma warning(default: 4127) // conditional expression is constant -# pragma warning(default: 4290) // C++ exception specification ignored except to ... -# pragma warning(default: 4180) // qualifier applied to function type has no meaning; ignored -# pragma warning(default: 4275) // non dll-interface class ... used as base for dll-interface class ... -# pragma warning(default: 4267) // 'var' : conversion from 'size_t' to 'type', possible loss of data -# pragma warning(default: 4511) // 'class' : copy constructor could not be generated -# pragma warning(pop) -#endif - -#if defined(BOOST_CLANG) && (BOOST_CLANG == 1) -#pragma clang diagnostic pop -#endif - -#if defined(BOOST_GCC) && (BOOST_GCC >= 4 * 10000 + 6 * 100) -# pragma GCC diagnostic pop -#endif - diff --git a/src/third_party/boost-1.69.0/boost/test/detail/fwd_decl.hpp b/src/third_party/boost-1.69.0/boost/test/detail/fwd_decl.hpp deleted file mode 100644 index d5c97fb7062..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/detail/fwd_decl.hpp +++ /dev/null @@ -1,46 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief contains forward eclarations for Boost.Test data types -// *************************************************************************** - -#ifndef BOOST_TEST_FWD_DECL_HPP_011605GER -#define BOOST_TEST_FWD_DECL_HPP_011605GER - -namespace boost { - -class execution_monitor; -class execution_exception; - -namespace unit_test { - -class test_unit; -class test_case; -class test_suite; -class master_test_suite_t; - -class test_tree_visitor; -class test_observer; -class test_unit_fixture; - -// singletons -class unit_test_monitor_t; -class unit_test_log_t; - -class unit_test_log_formatter; -struct log_entry_data; -struct log_checkpoint_data; - -class lazy_ostream; - -} // namespace unit_test - -} // namespace boost - -#endif // BOOST_TEST_FWD_DECL_HPP_011605GER - diff --git a/src/third_party/boost-1.69.0/boost/test/detail/global_typedef.hpp b/src/third_party/boost-1.69.0/boost/test/detail/global_typedef.hpp deleted file mode 100644 index ae932a45149..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/detail/global_typedef.hpp +++ /dev/null @@ -1,145 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief some trivial global typedefs -// *************************************************************************** - -#ifndef BOOST_TEST_GLOBAL_TYPEDEF_HPP_021005GER -#define BOOST_TEST_GLOBAL_TYPEDEF_HPP_021005GER - -#include <boost/test/utils/basic_cstring/basic_cstring.hpp> -#include <boost/test/detail/workaround.hpp> - -#define BOOST_TEST_L( s ) ::boost::unit_test::const_string( s, sizeof( s ) - 1 ) -#define BOOST_TEST_STRINGIZE( s ) BOOST_TEST_L( BOOST_STRINGIZE( s ) ) -#define BOOST_TEST_EMPTY_STRING BOOST_TEST_L( "" ) - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -typedef unsigned long counter_t; - -//____________________________________________________________________________// - -enum report_level { INV_REPORT_LEVEL, CONFIRMATION_REPORT, SHORT_REPORT, DETAILED_REPORT, NO_REPORT }; - -//____________________________________________________________________________// - -//! Indicates the output format for the loggers or the test tree printing -enum output_format { OF_INVALID, - OF_CLF, ///< compiler log format - OF_XML, ///< XML format for report and log, - OF_JUNIT, ///< JUNIT format for report and log, - OF_CUSTOM_LOGGER, ///< User specified logger. - OF_DOT ///< dot format for output content -}; - -//____________________________________________________________________________// - -enum test_unit_type { TUT_CASE = 0x01, TUT_SUITE = 0x10, TUT_ANY = 0x11 }; - -//____________________________________________________________________________// - -enum assertion_result { AR_FAILED, AR_PASSED, AR_TRIGGERED }; - -//____________________________________________________________________________// - -typedef unsigned long test_unit_id; - -const test_unit_id INV_TEST_UNIT_ID = 0xFFFFFFFF; -const test_unit_id MAX_TEST_CASE_ID = 0xFFFFFFFE; -const test_unit_id MIN_TEST_CASE_ID = 0x00010000; -const test_unit_id MAX_TEST_SUITE_ID = 0x0000FF00; -const test_unit_id MIN_TEST_SUITE_ID = 0x00000001; - -//____________________________________________________________________________// - -namespace ut_detail { - -inline test_unit_type -test_id_2_unit_type( test_unit_id id ) -{ - return (id & 0xFFFF0000) != 0 ? TUT_CASE : TUT_SUITE; -} - -//! Helper class for restoring the current test unit ID in a RAII manner -struct test_unit_id_restore { - test_unit_id_restore(test_unit_id& to_restore_, test_unit_id new_value) - : to_restore(to_restore_) - , bkup(to_restore_) { - to_restore = new_value; - } - ~test_unit_id_restore() { - to_restore = bkup; - } -private: - test_unit_id& to_restore; - test_unit_id bkup; -}; - -//____________________________________________________________________________// - -} // namespace ut_detail - -// helper templates to prevent ODR violations -template<class T> -struct static_constant { - static T value; -}; - -template<class T> -T static_constant<T>::value; - -//____________________________________________________________________________// - -// helper defines for singletons. -// BOOST_TEST_SINGLETON_CONS should appear in the class body, -// BOOST_TEST_SINGLETON_CONS_IMPL should be in only one translation unit. The -// global instance should be declared by BOOST_TEST_SINGLETON_INST. - -#define BOOST_TEST_SINGLETON_CONS( type ) \ -public: \ - static type& instance(); \ -private: \ - BOOST_DELETED_FUNCTION(type(type const&)) \ - BOOST_DELETED_FUNCTION(type& operator=(type const&)) \ - BOOST_DEFAULTED_FUNCTION(type(), {}) \ - BOOST_DEFAULTED_FUNCTION(~type(), {}) \ -/**/ - -#define BOOST_TEST_SINGLETON_CONS_IMPL( type ) \ - type& type::instance() { \ - static type the_inst; return the_inst; \ - } \ -/**/ - -//____________________________________________________________________________// - -#if defined(__APPLE_CC__) && defined(__GNUC__) && __GNUC__ < 4 -#define BOOST_TEST_SINGLETON_INST( inst ) \ -static BOOST_JOIN( inst, _t)& inst = BOOST_JOIN (inst, _t)::instance(); - -#else - -#define BOOST_TEST_SINGLETON_INST( inst ) \ -namespace { BOOST_JOIN( inst, _t)& inst = BOOST_JOIN( inst, _t)::instance(); } - -#endif - -} // namespace unit_test -} // namespace boost - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_GLOBAL_TYPEDEF_HPP_021005GER diff --git a/src/third_party/boost-1.69.0/boost/test/detail/log_level.hpp b/src/third_party/boost-1.69.0/boost/test/detail/log_level.hpp deleted file mode 100644 index abdecea7ec9..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/detail/log_level.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief shared definition for unit test log levels -// *************************************************************************** - -#ifndef BOOST_TEST_LOG_LEVEL_HPP_011605GER -#define BOOST_TEST_LOG_LEVEL_HPP_011605GER - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** log levels ************** // -// ************************************************************************** // - -// each log level includes all subsequent higher loging levels -enum log_level { - invalid_log_level = -1, - log_successful_tests = 0, - log_test_units = 1, - log_messages = 2, - log_warnings = 3, - log_all_errors = 4, // reported by unit test macros - log_cpp_exception_errors = 5, // uncaught C++ exceptions - log_system_errors = 6, // including timeouts, signals, traps - log_fatal_errors = 7, // including unit test macros or - // fatal system errors - log_nothing = 8 -}; - -} // namespace unit_test -} // namespace boost - -#endif // BOOST_TEST_LOG_LEVEL_HPP_011605GER diff --git a/src/third_party/boost-1.69.0/boost/test/detail/pp_variadic.hpp b/src/third_party/boost-1.69.0/boost/test/detail/pp_variadic.hpp deleted file mode 100644 index a443744daaa..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/detail/pp_variadic.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief few helpers for working with variadic macros -// *************************************************************************** - -#ifndef BOOST_TEST_PP_VARIADIC_HPP_021515GER -#define BOOST_TEST_PP_VARIADIC_HPP_021515GER - -// Boost -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/comparison/equal.hpp> -#include <boost/preprocessor/variadic/size.hpp> - -//____________________________________________________________________________// - -#if BOOST_PP_VARIADICS - -#if BOOST_PP_VARIADICS_MSVC -# define BOOST_TEST_INVOKE_VARIADIC( tool, ... ) BOOST_PP_CAT( tool (__VA_ARGS__), ) -#else -# define BOOST_TEST_INVOKE_VARIADIC( tool, ... ) tool (__VA_ARGS__) -#endif - -//____________________________________________________________________________// - -/// if sizeof(__VA_ARGS__) == N: F1(__VA_ARGS__) -/// else: F2(__VA_ARGS__) -#define BOOST_TEST_INVOKE_IF_N_ARGS( N, F1, F2, ... ) \ - BOOST_TEST_INVOKE_VARIADIC( \ - BOOST_PP_IIF( \ - BOOST_PP_EQUAL(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), N), \ - F1, \ - F2), \ - __VA_ARGS__ ) \ -/**/ - -//____________________________________________________________________________// - -#endif /* BOOST_PP_VARIADICS */ - -#endif // BOOST_TEST_PP_VARIADIC_HPP_021515GER - -// EOF diff --git a/src/third_party/boost-1.69.0/boost/test/detail/suppress_warnings.hpp b/src/third_party/boost-1.69.0/boost/test/detail/suppress_warnings.hpp deleted file mode 100644 index 4f8de3dd874..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/detail/suppress_warnings.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief suppress some warnings -// *************************************************************************** - -#ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable: 4511) // copy constructor can't not be generated -# pragma warning(disable: 4512) // assignment operator can't not be generated -# pragma warning(disable: 4100) // unreferenced formal parameter -# pragma warning(disable: 4996) // <symbol> was declared deprecated -# pragma warning(disable: 4355) // 'this' : used in base member initializer list -# pragma warning(disable: 4706) // assignment within conditional expression -# pragma warning(disable: 4251) // class 'A<T>' needs to have dll-interface to be used by clients of class 'B' -# pragma warning(disable: 4127) // conditional expression is constant -# pragma warning(disable: 4290) // C++ exception specification ignored except to ... -# pragma warning(disable: 4180) // qualifier applied to function type has no meaning; ignored -# pragma warning(disable: 4275) // non dll-interface class ... used as base for dll-interface class ... -# pragma warning(disable: 4267) // 'var' : conversion from 'size_t' to 'type', possible loss of data -# pragma warning(disable: 4511) // 'class' : copy constructor could not be generated -#endif - -#if defined(BOOST_CLANG) && (BOOST_CLANG == 1) -# pragma clang diagnostic push -# pragma clang diagnostic ignored "-Wvariadic-macros" -# pragma clang diagnostic ignored "-Wmissing-declarations" -#endif - -#if defined(BOOST_GCC) && (BOOST_GCC >= 4 * 10000 + 6 * 100) -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wvariadic-macros" -# pragma GCC diagnostic ignored "-Wmissing-declarations" -#endif - diff --git a/src/third_party/boost-1.69.0/boost/test/detail/throw_exception.hpp b/src/third_party/boost-1.69.0/boost/test/detail/throw_exception.hpp deleted file mode 100644 index 19b50ba49cb..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/detail/throw_exception.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief contains wrappers, which allows to build Boost.Test with no exception -// *************************************************************************** - -#ifndef BOOST_TEST_DETAIL_THROW_EXCEPTION_HPP -#define BOOST_TEST_DETAIL_THROW_EXCEPTION_HPP - -// Boost -#include <boost/config.hpp> // BOOST_NO_EXCEPTIONS - -#ifdef BOOST_NO_EXCEPTIONS -// C RUNTIME -#include <stdlib.h> - -#endif - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace ut_detail { - -#ifdef BOOST_NO_EXCEPTIONS - -template<typename E> -BOOST_NORETURN inline void -throw_exception(E const& /*e*/) { abort(); } - -#define BOOST_TEST_I_TRY -#define BOOST_TEST_I_CATCH( T, var ) for(T const& var = *(T*)0; false;) -#define BOOST_TEST_I_CATCH0( T ) if(0) -#define BOOST_TEST_I_CATCHALL() if(0) -#define BOOST_TEST_I_RETHROW - -#else - -template<typename E> -BOOST_NORETURN inline void -throw_exception(E const& e) { throw e; } - -#define BOOST_TEST_I_TRY try -#define BOOST_TEST_I_CATCH( T, var ) catch( T const& var ) -#define BOOST_TEST_I_CATCH0( T ) catch( T const& ) -#define BOOST_TEST_I_CATCHALL() catch(...) -#define BOOST_TEST_I_RETHROW throw -#endif - -//____________________________________________________________________________// - -#define BOOST_TEST_I_THROW( E ) unit_test::ut_detail::throw_exception( E ) -#define BOOST_TEST_I_ASSRT( cond, ex ) if( cond ) {} else BOOST_TEST_I_THROW( ex ) - - -} // namespace ut_detail -} // namespace unit_test -} // namespace boost - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_DETAIL_THROW_EXCEPTION_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/detail/workaround.hpp b/src/third_party/boost-1.69.0/boost/test/detail/workaround.hpp deleted file mode 100644 index 4ba3a7e9346..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/detail/workaround.hpp +++ /dev/null @@ -1,56 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief contains mics. workarounds -// *************************************************************************** - -#ifndef BOOST_TEST_WORKAROUND_HPP_021005GER -#define BOOST_TEST_WORKAROUND_HPP_021005GER - -// Boost -#include <boost/config.hpp> // compilers workarounds and std::ptrdiff_t - -// STL -#include <iterator> // for std::distance - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace ut_detail { - -#ifdef BOOST_NO_STD_DISTANCE -template <class T> -std::ptrdiff_t distance( T const& x_, T const& y_ ) -{ - std::ptrdiff_t res = 0; - - std::distance( x_, y_, res ); - - return res; -} - -//____________________________________________________________________________// - -#else -using std::distance; -#endif - -template <class T> inline void ignore_unused_variable_warning(const T&) {} - -} // namespace ut_detail -} // namespace unit_test -} // namespace boost - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_WORKAROUND_HPP_021005GER diff --git a/src/third_party/boost-1.69.0/boost/test/execution_monitor.hpp b/src/third_party/boost-1.69.0/boost/test/execution_monitor.hpp deleted file mode 100644 index bda732b9802..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/execution_monitor.hpp +++ /dev/null @@ -1,583 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// (C) Copyright Beman Dawes 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief Defines public interface of the Execution Monitor and related classes -// *************************************************************************** - -#ifndef BOOST_TEST_EXECUTION_MONITOR_HPP_071894GER -#define BOOST_TEST_EXECUTION_MONITOR_HPP_071894GER - -// Boost.Test -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/detail/fwd_decl.hpp> -#include <boost/test/detail/throw_exception.hpp> - -#include <boost/test/utils/class_properties.hpp> - -// Boost -#include <boost/shared_ptr.hpp> -#include <boost/scoped_array.hpp> -#include <boost/type.hpp> -#include <boost/cstdlib.hpp> -#include <boost/function/function0.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -#ifdef BOOST_SEH_BASED_SIGNAL_HANDLING - -// for the FP constants and control routines -#include <float.h> - -#ifndef EM_INVALID -#define EM_INVALID _EM_INVALID -#endif - -#ifndef EM_DENORMAL -#define EM_DENORMAL _EM_DENORMAL -#endif - -#ifndef EM_ZERODIVIDE -#define EM_ZERODIVIDE _EM_ZERODIVIDE -#endif - -#ifndef EM_OVERFLOW -#define EM_OVERFLOW _EM_OVERFLOW -#endif - -#ifndef EM_UNDERFLOW -#define EM_UNDERFLOW _EM_UNDERFLOW -#endif - -#ifndef MCW_EM -#define MCW_EM _MCW_EM -#endif - -#else // based on ISO C standard - -#if !defined(BOOST_NO_FENV_H) - #include <boost/detail/fenv.hpp> -#endif - -#endif - -#if defined(BOOST_SEH_BASED_SIGNAL_HANDLING) && !defined(UNDER_CE) - //! Indicates tha the floating point exception handling is supported - //! through SEH - #define BOOST_TEST_FPE_SUPPORT_WITH_SEH__ -#elif !defined(BOOST_SEH_BASED_SIGNAL_HANDLING) && !defined(UNDER_CE) - #if !defined(BOOST_NO_FENV_H) && !defined(BOOST_CLANG) && \ - defined(__GLIBC__) && defined(__USE_GNU) && \ - !(defined(__UCLIBC__) || defined(__nios2__) || defined(__microblaze__)) - //! Indicates that floating point exception handling is supported for the - //! non SEH version of it, for the GLIBC extensions only - // see dicussions on the related topic: https://svn.boost.org/trac/boost/ticket/11756 - #define BOOST_TEST_FPE_SUPPORT_WITH_GLIBC_EXTENSIONS__ - #endif -#endif - - -// Additional macro documentations not being generated without this hack -#ifdef BOOST_TEST_DOXYGEN_DOC__ - -//! Disables the support of the alternative stack -//! during the compilation of the Boost.test framework. This is especially useful -//! in case it is not possible to detect the lack of alternative stack support for -//! your compiler (for instance, ESXi). -#define BOOST_TEST_DISABLE_ALT_STACK - -#endif - -//____________________________________________________________________________// - -namespace boost { - -/// @defgroup ExecutionMonitor Function Execution Monitor -/// @{ -/// @section Intro Introduction -/// Sometimes we need to call a function and make sure that no user or system originated exceptions are being thrown by it. Uniform exception reporting -/// is also may be convenient. That's the purpose of the Boost.Test's Execution Monitor. -/// -/// The Execution Monitor is a lower-level component of the Boost Test Library. It is the base for implementing all other Boost.Test components, but also -/// can be used standalone to get controlled execution of error-prone functions with a uniform error notification. The Execution Monitor calls a user-supplied -/// function in a controlled environment, relieving users from messy error detection. -/// -/// The Execution Monitor usage is demonstrated in the example exec_mon_example. -/// -/// @section DesignRationale Design Rationale -/// -/// The Execution Monitor design assumes that it can be used when no (or almost no) memory available. Also the Execution Monitor is intended to be portable to as many platforms as possible. -/// -/// @section UserGuide User's guide -/// The Execution Monitor is designed to solve the problem of executing potentially dangerous function that may result in any number of error conditions, -/// in monitored environment that should prevent any undesirable exceptions to propagate out of function call and produce consistent result report for all outcomes. -/// The Execution Monitor is able to produce informative report for all standard C++ exceptions and intrinsic types. All other exceptions are reported as unknown. -/// If you prefer different message for your exception type or need to perform any action, the Execution Monitor supports custom exception translators. -/// There are several other parameters of the monitored environment can be configured by setting appropriate properties of the Execution Monitor. -/// -/// All symbols in the Execution Monitor implementation are located in the namespace boost. To use the Execution Monitor you need to: -/// -# include @c boost/test/execution_monitor.hpp -/// -# Make an instance of execution_monitor. -/// -# Optionally register custom exception translators for exception classes which require special processing. -/// -/// @subsection FuncExec Monitored function execution -/// -/// The class execution_monitor can monitor functions with the following signatures: -/// - int () -/// - void () -/// -/// This function is expected to be self sufficient part of your application. You can't pass any arguments to this function directly. Instead you -/// should bind them into executable nullary function using bind function (either standard or boost variant). Neither you can return any other value, -/// but an integer result code. If necessary you can bind output parameters by reference or use some other more complicated nullary functor, which -/// maintains state. This includes class methods, static class methods etc. -/// -/// To start the monitored function, invoke the method execution_monitor::execute and pass the monitored function as an argument. If the call succeeds, -/// the method returns the result code produced by the monitored function. If any of the following conditions occur: -/// - Uncaught C++ exception -/// - Hardware or software signal, trap, or other exception -/// - Timeout reached -/// - Debug assert event occurred (under Microsoft Visual C++ or compatible compiler) -/// -/// then the method throws the execution_exception. The exception contains unique error_code value identifying the error condition and the detailed message -/// that can be used to report the error. -/// -/// @subsection Reporting Errors reporting and translation -/// -/// If you need to report an error inside monitored function execution you have to throw an exception. Do not use the execution_exception - it's not intended -/// to be used for this purpose. The simplest choice is to use one of the following C++ types as an exception: -/// - C string -/// - std:string -/// - any exception class in std::exception hierarchy -/// - boost::exception -/// -/// execution_monitor will catch and report these types of exceptions. If exception is thrown which is unknown to execution_monitor, it can only -/// report the fact of the exception. So in case if you prefer to use your own exception types or can't govern what exceptions are generated by monitored -/// function and would like to see proper error message in a report, execution_monitor can be configured with custom "translator" routine, which will have -/// a chance to either record the fact of the exception itself or translate it into one of standard exceptions and rethrow (or both). The translator routine -/// is registered per exception type and is invoked when exception of this class (or one inherited from it) is thrown inside monitored routine. You can -/// register as many independent translators as you like. See execution_monitor::register_exception_translator specification for requirements on translator -/// function. -/// -/// Finally, if you need to abort the monitored function execution without reporting any errors, you can throw an exception execution_aborted. As a result -/// the execution is aborted and zero result code is produced by the method execution_monitor::execute. -/// -/// @subsection Parameters Supported parameters -/// -/// The Execution Monitor behavior is configurable through the set of parameters (properties) associated with the instance of the monitor. See execution_monitor -/// specification for a list of supported parameters and their semantic. - -// ************************************************************************** // -// ************** detail::translator_holder_base ************** // -// ************************************************************************** // - -namespace detail { - -class translator_holder_base; -typedef boost::shared_ptr<translator_holder_base> translator_holder_base_ptr; - -class BOOST_TEST_DECL translator_holder_base { -protected: - typedef boost::unit_test::const_string const_string; -public: - // Constructor - translator_holder_base( translator_holder_base_ptr next, const_string tag ) - : m_next( next ) - , m_tag( std::string() + tag ) - { - } - - // Destructor - virtual ~translator_holder_base() {} - - // translator holder interface - // invokes the function F inside the try/catch guarding against specific exception - virtual int operator()( boost::function<int ()> const& F ) = 0; - - // erases specific translator holder from the chain - translator_holder_base_ptr erase( translator_holder_base_ptr this_, const_string tag ) - { - if( m_next ) - m_next = m_next->erase( m_next, tag ); - - return m_tag == tag ? m_next : this_; - } -#ifndef BOOST_NO_RTTI - virtual translator_holder_base_ptr erase( translator_holder_base_ptr this_, std::type_info const& ) = 0; - template<typename ExceptionType> - translator_holder_base_ptr erase( translator_holder_base_ptr this_, boost::type<ExceptionType>* = 0 ) - { - if( m_next ) - m_next = m_next->erase<ExceptionType>( m_next ); - - return erase( this_, typeid(ExceptionType) ); - } -#endif - -protected: - // Data members - translator_holder_base_ptr m_next; - std::string m_tag; -}; - -} // namespace detail - -// ************************************************************************** // -/// @class execution_exception -/// @brief This class is used to report any kind of an failure during execution of a monitored function inside of execution_monitor -/// -/// The instance of this class is thrown out of execution_monitor::execute invocation when failure is detected. Regardless of a kind of failure occurred -/// the instance will provide a uniform way to catch and report it. -/// -/// One important design rationale for this class is that we should be ready to work after fatal memory corruptions or out of memory conditions. To facilitate -/// this class never allocates any memory and assumes that strings it refers to are either some constants or live in a some kind of persistent (preallocated) memory. -// ************************************************************************** // - -class BOOST_SYMBOL_VISIBLE execution_exception { - typedef boost::unit_test::const_string const_string; -public: - /// These values are sometimes used as program return codes. - /// The particular values have been chosen to avoid conflicts with - /// commonly used program return codes: values < 100 are often user - /// assigned, values > 255 are sometimes used to report system errors. - /// Gaps in values allow for orderly expansion. - /// - /// @note(1) Only uncaught C++ exceptions are treated as errors. - /// If a function catches a C++ exception, it never reaches - /// the execution_monitor. - /// - /// The implementation decides what is a system_fatal_error and what is - /// just a system_exception. Fatal errors are so likely to have corrupted - /// machine state (like a stack overflow or addressing exception) that it - /// is unreasonable to continue execution. - /// - /// @note(2) These errors include Unix signals and Windows structured - /// exceptions. They are often initiated by hardware traps. - enum error_code { - no_error = 0, ///< for completeness only; never returned - user_error = 200, ///< user reported non-fatal error - cpp_exception_error = 205, ///< see note (1) above - system_error = 210, ///< see note (2) above - timeout_error = 215, ///< only detectable on certain platforms - user_fatal_error = 220, ///< user reported fatal error - system_fatal_error = 225 ///< see note (2) above - }; - - /// Simple model for the location of failure in a source code - struct BOOST_TEST_DECL location { - explicit location( char const* file_name = 0, size_t line_num = 0, char const* func = 0 ); - explicit location( const_string file_name, size_t line_num = 0, char const* func = 0 ); - - const_string m_file_name; ///< File name - size_t m_line_num; ///< Line number - const_string m_function; ///< Function name - }; - - /// @name Constructors - - /// Constructs instance based on message, location and error code - - /// @param[in] ec error code - /// @param[in] what_msg error message - /// @param[in] location error location - execution_exception( error_code ec, const_string what_msg, location const& location ); - - /// @name Access methods - - /// Exception error code - error_code code() const { return m_error_code; } - /// Exception message - const_string what() const { return m_what; } - /// Exception location - location const& where() const { return m_location; } - ///@} - -private: - // Data members - error_code m_error_code; - const_string m_what; - location m_location; -}; // execution_exception - -// ************************************************************************** // -/// @brief Function execution monitor - -/// This class is used to uniformly detect and report an occurrence of several types of signals and exceptions, reducing various -/// errors to a uniform execution_exception that is returned to a caller. -/// -/// The executiom_monitor behavior can be customized through a set of public parameters (properties) associated with the execution_monitor instance. -/// All parameters are implemented as public unit_test::readwrite_property data members of the class execution_monitor. -// ************************************************************************** // - -class BOOST_TEST_DECL execution_monitor { - typedef boost::unit_test::const_string const_string; -public: - - /// Default constructor initializes all execution monitor properties - execution_monitor(); - - /// Should monitor catch system errors. - /// - /// The @em p_catch_system_errors property is a boolean flag (default value is true) specifying whether or not execution_monitor should trap system - /// errors/system level exceptions/signals, which would cause program to crash in a regular case (without execution_monitor). - /// Set this property to false, for example, if you wish to force coredump file creation. The Unit Test Framework provides a - /// runtime parameter @c \-\-catch_system_errors=yes to alter the behavior in monitored test cases. - unit_test::readwrite_property<bool> p_catch_system_errors; - - /// Should monitor try to attach debugger in case of caught system error. - /// - /// The @em p_auto_start_dbg property is a boolean flag (default value is false) specifying whether or not execution_monitor should try to attach debugger - /// in case system error is caught. - unit_test::readwrite_property<bool> p_auto_start_dbg; - - - /// Specifies the seconds that elapse before a timer_error occurs. - /// - /// The @em p_timeout property is an integer timeout (in seconds) for monitored function execution. Use this parameter to monitor code with possible deadlocks - /// or indefinite loops. This feature is only available for some operating systems (not yet Microsoft Windows). - unit_test::readwrite_property<unsigned> p_timeout; - - /// Should monitor use alternative stack for the signal catching. - /// - /// The @em p_use_alt_stack property is a boolean flag (default value is false) specifying whether or not execution_monitor should use an alternative stack - /// for the sigaction based signal catching. When enabled the signals are delivered to the execution_monitor on a stack different from current execution - /// stack, which is safer in case if it is corrupted by monitored function. For more details on alternative stack handling see appropriate manuals. - unit_test::readwrite_property<bool> p_use_alt_stack; - - /// Should monitor try to detect hardware floating point exceptions (!= 0), and which specific exception to catch. - /// - /// The @em p_detect_fp_exceptions property is a boolean flag (default value is false) specifying whether or not execution_monitor should install hardware - /// traps for the floating point exception on platforms where it's supported. - unit_test::readwrite_property<unsigned> p_detect_fp_exceptions; - - - // @name Monitoring entry points - - /// @brief Execution monitor entry point for functions returning integer value - /// - /// This method executes supplied function F inside a try/catch block and also may include other unspecified platform dependent error detection code. - /// - /// This method throws an execution_exception on an uncaught C++ exception, a hardware or software signal, trap, or other user exception. - /// - /// @note execute() doesn't consider it an error for F to return a non-zero value. - /// @param[in] F Function to monitor - /// @returns value returned by function call F(). - /// @see vexecute - int execute( boost::function<int ()> const& F ); - - /// @brief Execution monitor entry point for functions returning void - /// - /// This method is semantically identical to execution_monitor::execute, but des't produce any result code. - /// @param[in] F Function to monitor - /// @see execute - void vexecute( boost::function<void ()> const& F ); - // @} - - // @name Exception translator registration - - /// @brief Registers custom (user supplied) exception translator - - /// This method template registers a translator for an exception type specified as a first template argument. For example - /// @code - /// void myExceptTr( MyException const& ex ) { /*do something with the exception here*/} - /// em.register_exception_translator<MyException>( myExceptTr ); - /// @endcode - /// The translator should be any unary function/functor object which accepts MyException const&. This can be free standing function - /// or bound class method. The second argument is an optional string tag you can associate with this translator routine. The only reason - /// to specify the tag is if you plan to erase the translator eventually. This can be useful in scenario when you reuse the same - /// execution_monitor instance to monitor different routines and need to register a translator specific to the routine being monitored. - /// While it is possible to erase the translator based on an exception type it was registered for, tag string provides simpler way of doing this. - /// @tparam ExceptionType type of the exception we register a translator for - /// @tparam ExceptionTranslator type of the translator we register for this exception - /// @param[in] tr translator function object with the signature <em> void (ExceptionType const&)</em> - /// @param[in] tag tag associated with this translator - template<typename ExceptionType, typename ExceptionTranslator> - void register_exception_translator( ExceptionTranslator const& tr, const_string tag = const_string(), boost::type<ExceptionType>* = 0 ); - - /// @brief Erases custom exception translator based on a tag - - /// Use the same tag as the one used during translator registration - /// @param[in] tag tag associated with translator you wants to erase - void erase_exception_translator( const_string tag ) - { - m_custom_translators = m_custom_translators->erase( m_custom_translators, tag ); - } -#ifndef BOOST_NO_RTTI - /// @brief Erases custom exception translator based on an exception type - /// - /// tparam ExceptionType Exception type for which you want to erase the translator - template<typename ExceptionType> - void erase_exception_translator( boost::type<ExceptionType>* = 0 ) - { - m_custom_translators = m_custom_translators->erase<ExceptionType>( m_custom_translators ); - } - //@} -#endif - -private: - // implementation helpers - int catch_signals( boost::function<int ()> const& F ); - - // Data members - detail::translator_holder_base_ptr m_custom_translators; - boost::scoped_array<char> m_alt_stack; -}; // execution_monitor - -// ************************************************************************** // -// ************** detail::translator_holder ************** // -// ************************************************************************** // - -namespace detail { - -template<typename ExceptionType, typename ExceptionTranslator> -class translator_holder : public translator_holder_base -{ -public: - explicit translator_holder( ExceptionTranslator const& tr, translator_holder_base_ptr& next, const_string tag = const_string() ) - : translator_holder_base( next, tag ), m_translator( tr ) {} - - // translator holder interface - virtual int operator()( boost::function<int ()> const& F ) - { - BOOST_TEST_I_TRY { - return m_next ? (*m_next)( F ) : F(); - } - BOOST_TEST_I_CATCH( ExceptionType, e ) { - m_translator( e ); - return boost::exit_exception_failure; - } - } -#ifndef BOOST_NO_RTTI - virtual translator_holder_base_ptr erase( translator_holder_base_ptr this_, std::type_info const& ti ) - { - return ti == typeid(ExceptionType) ? m_next : this_; - } -#endif - -private: - // Data members - ExceptionTranslator m_translator; -}; - -} // namespace detail - -template<typename ExceptionType, typename ExceptionTranslator> -void -execution_monitor::register_exception_translator( ExceptionTranslator const& tr, const_string tag, boost::type<ExceptionType>* ) -{ - m_custom_translators.reset( - new detail::translator_holder<ExceptionType,ExceptionTranslator>( tr, m_custom_translators, tag ) ); -} - -// ************************************************************************** // -/// @class execution_aborted -/// @brief This is a trivial default constructible class. Use it to report graceful abortion of a monitored function execution. -// ************************************************************************** // - -struct execution_aborted {}; - -// ************************************************************************** // -// ************** system_error ************** // -// ************************************************************************** // - -class system_error { -public: - // Constructor - explicit system_error( char const* exp ); - - long const p_errno; - char const* const p_failed_exp; -}; - -//!@internal -#define BOOST_TEST_SYS_ASSERT( cond ) BOOST_TEST_I_ASSRT( cond, ::boost::system_error( BOOST_STRINGIZE( exp ) ) ) - -// ************************************************************************** // -// **************Floating point exception management interface ************** // -// ************************************************************************** // - -namespace fpe { - -enum masks { - BOOST_FPE_OFF = 0, - -#if defined(BOOST_TEST_FPE_SUPPORT_WITH_SEH__) /* *** */ - BOOST_FPE_DIVBYZERO = EM_ZERODIVIDE, - BOOST_FPE_INEXACT = EM_INEXACT, - BOOST_FPE_INVALID = EM_INVALID, - BOOST_FPE_OVERFLOW = EM_OVERFLOW, - BOOST_FPE_UNDERFLOW = EM_UNDERFLOW|EM_DENORMAL, - - BOOST_FPE_ALL = MCW_EM, - -#elif !defined(BOOST_TEST_FPE_SUPPORT_WITH_GLIBC_EXTENSIONS__)/* *** */ - BOOST_FPE_DIVBYZERO = BOOST_FPE_OFF, - BOOST_FPE_INEXACT = BOOST_FPE_OFF, - BOOST_FPE_INVALID = BOOST_FPE_OFF, - BOOST_FPE_OVERFLOW = BOOST_FPE_OFF, - BOOST_FPE_UNDERFLOW = BOOST_FPE_OFF, - BOOST_FPE_ALL = BOOST_FPE_OFF, -#else /* *** */ - -#if defined(FE_DIVBYZERO) - BOOST_FPE_DIVBYZERO = FE_DIVBYZERO, -#else - BOOST_FPE_DIVBYZERO = BOOST_FPE_OFF, -#endif - -#if defined(FE_INEXACT) - BOOST_FPE_INEXACT = FE_INEXACT, -#else - BOOST_FPE_INEXACT = BOOST_FPE_OFF, -#endif - -#if defined(FE_INVALID) - BOOST_FPE_INVALID = FE_INVALID, -#else - BOOST_FPE_INVALID = BOOST_FPE_OFF, -#endif - -#if defined(FE_OVERFLOW) - BOOST_FPE_OVERFLOW = FE_OVERFLOW, -#else - BOOST_FPE_OVERFLOW = BOOST_FPE_OFF, -#endif - -#if defined(FE_UNDERFLOW) - BOOST_FPE_UNDERFLOW = FE_UNDERFLOW, -#else - BOOST_FPE_UNDERFLOW = BOOST_FPE_OFF, -#endif - -#if defined(FE_ALL_EXCEPT) - BOOST_FPE_ALL = FE_ALL_EXCEPT, -#else - BOOST_FPE_ALL = BOOST_FPE_OFF, -#endif - -#endif /* *** */ - BOOST_FPE_INV = BOOST_FPE_ALL+1 -}; - -//____________________________________________________________________________// - -// return the previous set of enabled exceptions when successful, and BOOST_FPE_INV otherwise -unsigned BOOST_TEST_DECL enable( unsigned mask ); -unsigned BOOST_TEST_DECL disable( unsigned mask ); - -//____________________________________________________________________________// - -} // namespace fpe - -///@} - -} // namespace boost - - -#include <boost/test/detail/enable_warnings.hpp> - -#endif diff --git a/src/third_party/boost-1.69.0/boost/test/floating_point_comparison.hpp b/src/third_party/boost-1.69.0/boost/test/floating_point_comparison.hpp deleted file mode 100644 index e8892744773..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/floating_point_comparison.hpp +++ /dev/null @@ -1,14 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//! @file -//! @brief Deprecated header -//! @deprecated Use boost/test/tools/floating_point_comparison.hpp instead -// *************************************************************************** - -// Boost.Test -#include <boost/test/tools/floating_point_comparison.hpp> diff --git a/src/third_party/boost-1.69.0/boost/test/framework.hpp b/src/third_party/boost-1.69.0/boost/test/framework.hpp deleted file mode 100644 index 2f446791aae..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/framework.hpp +++ /dev/null @@ -1,301 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief Defines Unit Test Framework mono-state interfaces. -//! The framework interfaces are based on Monostate design pattern. -// *************************************************************************** - -#ifndef BOOST_TEST_FRAMEWORK_HPP_020805GER -#define BOOST_TEST_FRAMEWORK_HPP_020805GER - -// Boost.Test -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/detail/fwd_decl.hpp> -#include <boost/test/detail/throw_exception.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -// STL -#include <stdexcept> - -//____________________________________________________________________________// - -namespace boost { - -/// Main namespace for the Unit Test Framework interfaces and implementation -namespace unit_test { - -// ************************************************************************** // -// ************** init_unit_test_func ************** // -// ************************************************************************** // - -/// Test module initialization routine signature - -/// Different depending on whether BOOST_TEST_ALTERNATIVE_INIT_API is defined or not -#ifdef BOOST_TEST_ALTERNATIVE_INIT_API -typedef bool (*init_unit_test_func)(); -#else -typedef test_suite* (*init_unit_test_func)( int, char* [] ); -#endif - -// ************************************************************************** // -// ************** framework ************** // -// ************************************************************************** // - -/// Namespace of the Unit Test Framework mono-state -namespace framework { - -/// @name Unit Test Framework initialization and shutdown -/// @{ - -/// @brief This function performs initialization of the framework mono-state. -/// -/// It needs to be called every time before the test is started. -/// @param[in] init_func test module initialization routine -/// @param[in] argc command line arguments collection -/// @param[in] argv command line arguments collection -BOOST_TEST_DECL void init( init_unit_test_func init_func, int argc, char* argv[] ); - -/// This function applies all the decorators and figures out default run status. This argument facilitates an -/// ability of the test cases to prepare some other test units (primarily used internally for self testing). -/// @param[in] tu Optional id of the test unit representing root of test tree. If absent, master test suite is used -BOOST_TEST_DECL void finalize_setup_phase( test_unit_id tu = INV_TEST_UNIT_ID); - -/// This function returns true when testing is in progress (setup is finished). -BOOST_TEST_DECL bool test_in_progress(); - -/// This function shuts down the framework and clears up its mono-state. -/// -/// It needs to be at the very end of test module execution -BOOST_TEST_DECL void shutdown(); -/// @} - -/// @name Test unit registration -/// @{ - -/// Provides both read and write access to current "leaf" auto test suite during the test unit registration phase. -/// -/// During auto-registration phase the framework maintain a FIFO queue of test units being registered. New test units become children -/// of the current "leaf" test suite and if this is test suite it is pushed back into queue and becomes a new leaf. -/// When test suite registration is completed, a test suite is popped from the back of the queue. Only automatically registered test suites -/// should be added to this queue. Master test suite is always a zero element in this queue, so if no other test suites are registered -/// all test cases are added to master test suite. - -/// This function facilitates all three possible actions: -/// - if no argument are provided it returns the current queue leaf test suite -/// - if test suite is provided and no second argument are set, test suite is added to the queue -/// - if no test suite are provided and last argument is false, the semantic of this function is similar to queue pop: last element is popped from the queue -/// @param[in] ts test suite to push back to the queue -/// @param[in] push_or_pop should we push ts to the queue or pop leaf test suite instead -/// @returns a reference to the currently active/"leaf" test suite -BOOST_TEST_DECL test_suite& current_auto_test_suite( test_suite* ts = 0, bool push_or_pop = true ); - -/// This function add new test case into the global collection of test units the framework aware of. - -/// This function also assignes unique test unit id for every test case. Later on one can use this id to locate -/// the test case if necessary. This is the way for the framework to maintain weak references between test units. -/// @param[in] tc test case to register -BOOST_TEST_DECL void register_test_unit( test_case* tc ); - -/// This function add new test suite into the global collection of test units the framework aware of. - -/// This function also assignes unique test unit id for every test suite. Later on one can use this id to locate -/// the test case if necessary. This is the way for the framework to maintain weak references between test units. -/// @param[in] ts test suite to register -BOOST_TEST_DECL void register_test_unit( test_suite* ts ); - -/// This function removes the test unit from the collection of known test units and destroys the test unit object. - -/// This function also assigns unique test unit id for every test case. Later on one can use this id to located -/// the test case if necessary. This is the way for the framework to maintain weak references between test units. -/// @param[in] tu test unit to deregister -BOOST_TEST_DECL void deregister_test_unit( test_unit* tu ); - -// This function clears up the framework mono-state. - -/// After this call the framework can be reinitialized to perform a second test run during the same program lifetime. -BOOST_TEST_DECL void clear(); -/// @} - -/// @name Test observer registration -/// @{ -/// Adds new test execution observer object into the framework's list of test observers. - -/// Observer lifetime should exceed the the testing execution timeframe -/// @param[in] to test observer object to add -BOOST_TEST_DECL void register_observer( test_observer& to ); - -/// Excludes the observer object form the framework's list of test observers -/// @param[in] to test observer object to exclude -BOOST_TEST_DECL void deregister_observer( test_observer& to ); - -/// @} - -/// @name Global fixtures registration -/// @{ - -/// Adds a new global fixture to be setup before any other tests starts and tore down after -/// any other tests finished. -/// Test unit fixture lifetime should exceed the testing execution timeframe -/// @param[in] tuf fixture to add -BOOST_TEST_DECL void register_global_fixture( test_unit_fixture& tuf ); - -/// Removes a test global fixture from the framework -/// -/// Test unit fixture lifetime should exceed the testing execution timeframe -/// @param[in] tuf fixture to remove -BOOST_TEST_DECL void deregister_global_fixture( test_unit_fixture& tuf ); -/// @} - -/// @name Assertion/uncaught exception context support -/// @{ -/// Context accessor -struct BOOST_TEST_DECL context_generator { - context_generator() : m_curr_frame( 0 ) {} - - /// Is there any context? - bool is_empty() const; - - /// Give me next frame; empty - last frame - const_string next() const; - -private: - // Data members - mutable unsigned m_curr_frame; -}; - -/// Records context frame message. - -/// Some context frames are sticky - they can only explicitly cleared by specifying context id. Other (non sticky) context frames cleared after every assertion. -/// @param[in] context_descr context frame message -/// @param[in] sticky is this sticky frame or not -/// @returns id of the newly created frame -BOOST_TEST_DECL int add_context( lazy_ostream const& context_descr, bool sticky ); -/// Erases context frame (when test exits context scope) - -/// If context_id is passed clears that specific context frame identified by this id, otherwise clears all non sticky contexts. -BOOST_TEST_DECL void clear_context( int context_id = -1 ); -/// Produces an instance of small "delegate" object, which facilitates access to collected context. -BOOST_TEST_DECL context_generator get_context(); -/// @} - -/// @name Access to registered test units. -/// @{ -/// This function provides access to the master test suite. - -/// There is only only master test suite per test module. -/// @returns a reference the master test suite instance -BOOST_TEST_DECL master_test_suite_t& master_test_suite(); - -/// This function provides an access to the test unit currently being executed. - -/// The difference with current_test_case is about the time between a test-suite -/// is being set up or torn down (fixtures) and when the test-cases of that suite start. - -/// This function is only valid during test execution phase. -/// @see current_test_case_id, current_test_case -BOOST_TEST_DECL test_unit const& current_test_unit(); - -/// This function provides an access to the test case currently being executed. - -/// This function is only valid during test execution phase. -/// @see current_test_case_id -BOOST_TEST_DECL test_case const& current_test_case(); - -/// This function provides an access to an id of the test case currently being executed. - -/// This function safer than current_test_case, cause if wont throw if no test case is being executed. -/// @see current_test_case -BOOST_TEST_DECL test_unit_id current_test_case_id(); /* safe version of above */ - -/// This function provides access to a test unit by id and type combination. It will throw if no test unit located. -/// @param[in] tu_id id of a test unit to locate -/// @param[in] tu_type type of a test unit to locate -/// @returns located test unit -BOOST_TEST_DECL test_unit& get( test_unit_id tu_id, test_unit_type tu_type ); - -/// This function template provides access to a typed test unit by id - -/// It will throw if you specify incorrect test unit type -/// @tparam UnitType compile time type of test unit to get (test_suite or test_case) -/// @param id id of test unit to get -template<typename UnitType> -inline UnitType& get( test_unit_id id ) -{ - return static_cast<UnitType&>( get( id, static_cast<test_unit_type>(UnitType::type) ) ); -} -///@} - -/// @name Test initiation interface -/// @{ - -/// Initiates test execution - -/// This function is used to start the test execution from a specific "root" test unit. -/// If no root provided, test is started from master test suite. This second argument facilitates an ability of the test cases to -/// start some other test units (primarily used internally for self testing). -/// @param[in] tu Optional id of the test unit or test unit itself from which the test is started. If absent, master test suite is used -/// @param[in] continue_test true == continue test if it was already started, false == restart the test from scratch regardless -BOOST_TEST_DECL void run( test_unit_id tu = INV_TEST_UNIT_ID, bool continue_test = true ); -/// Initiates test execution. Same as other overload -BOOST_TEST_DECL void run( test_unit const* tu, bool continue_test = true ); -/// @} - -/// @name Test events dispatchers -/// @{ -/// Reports results of assertion to all test observers -BOOST_TEST_DECL void assertion_result( unit_test::assertion_result ar ); -/// Reports uncaught exception to all test observers -BOOST_TEST_DECL void exception_caught( execution_exception const& ); -/// Reports aborted test unit to all test observers -BOOST_TEST_DECL void test_unit_aborted( test_unit const& ); -/// Reports aborted test module to all test observers -BOOST_TEST_DECL void test_aborted( ); -/// @} - -namespace impl { -// exclusively for self test -BOOST_TEST_DECL void setup_for_execution( test_unit const& ); -BOOST_TEST_DECL void setup_loggers( ); -} // namespace impl - -// ************************************************************************** // -// ************** framework errors ************** // -// ************************************************************************** // - -/// This exception type is used to report internal Boost.Test framework errors. -struct BOOST_TEST_DECL internal_error : public std::runtime_error { - internal_error( const_string m ) : std::runtime_error( std::string( m.begin(), m.size() ) ) {} -}; - -//____________________________________________________________________________// - -/// This exception type is used to report test module setup errors. -struct BOOST_TEST_DECL setup_error : public std::runtime_error { - setup_error( const_string m ) : std::runtime_error( std::string( m.begin(), m.size() ) ) {} -}; - -#define BOOST_TEST_SETUP_ASSERT( cond, msg ) BOOST_TEST_I_ASSRT( cond, unit_test::framework::setup_error( msg ) ) - -//____________________________________________________________________________// - -struct nothing_to_test { - explicit nothing_to_test( int rc ) : m_result_code( rc ) {} - - int m_result_code; -}; - -//____________________________________________________________________________// - -} // namespace framework -} // unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_FRAMEWORK_HPP_020805GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/compiler_log_formatter.ipp b/src/third_party/boost-1.69.0/boost/test/impl/compiler_log_formatter.ipp deleted file mode 100644 index cd7de1fe766..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/compiler_log_formatter.ipp +++ /dev/null @@ -1,293 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : implements compiler like Log formatter -// *************************************************************************** - -#ifndef BOOST_TEST_COMPILER_LOG_FORMATTER_IPP_020105GER -#define BOOST_TEST_COMPILER_LOG_FORMATTER_IPP_020105GER - -// Boost.Test -#include <boost/test/output/compiler_log_formatter.hpp> - -#include <boost/test/framework.hpp> -#include <boost/test/execution_monitor.hpp> -#include <boost/test/unit_test_parameters.hpp> - -#include <boost/test/tree/test_unit.hpp> - -#include <boost/test/utils/basic_cstring/io.hpp> -#include <boost/test/utils/lazy_ostream.hpp> -#include <boost/test/utils/setcolor.hpp> - - -// Boost -#include <boost/version.hpp> - -// STL -#include <iostream> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace output { - -// ************************************************************************** // -// ************** compiler_log_formatter ************** // -// ************************************************************************** // - -namespace { - -std::string -test_phase_identifier() -{ - return framework::test_in_progress() ? framework::current_test_unit().full_name() : std::string( "Test setup" ); -} - -} // local namespace - -//____________________________________________________________________________// - -void -compiler_log_formatter::log_start( std::ostream& output, counter_t test_cases_amount ) -{ - m_color_output = runtime_config::get<bool>( runtime_config::btrt_color_output ); - - if( test_cases_amount > 0 ) - output << "Running " << test_cases_amount << " test " - << (test_cases_amount > 1 ? "cases" : "case") << "...\n"; -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::log_finish( std::ostream& ostr ) -{ - ostr.flush(); -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::log_build_info( std::ostream& output ) -{ - output << "Platform: " << BOOST_PLATFORM << '\n' - << "Compiler: " << BOOST_COMPILER << '\n' - << "STL : " << BOOST_STDLIB << '\n' - << "Boost : " << BOOST_VERSION/100000 << "." - << BOOST_VERSION/100 % 1000 << "." - << BOOST_VERSION % 100 << std::endl; -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::test_unit_start( std::ostream& output, test_unit const& tu ) -{ - BOOST_TEST_SCOPE_SETCOLOR( m_color_output, output, term_attr::BRIGHT, term_color::BLUE ); - - print_prefix( output, tu.p_file_name, tu.p_line_num ); - - output << "Entering test " << tu.p_type_name << " \"" << tu.p_name << "\"" << std::endl; -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::test_unit_finish( std::ostream& output, test_unit const& tu, unsigned long elapsed ) -{ - BOOST_TEST_SCOPE_SETCOLOR( m_color_output, output, term_attr::BRIGHT, term_color::BLUE ); - - print_prefix( output, tu.p_file_name, tu.p_line_num ); - - output << "Leaving test " << tu.p_type_name << " \"" << tu.p_name << "\""; - - if( elapsed > 0 ) { - output << "; testing time: "; - if( elapsed % 1000 == 0 ) - output << elapsed/1000 << "ms"; - else - output << elapsed << "us"; - } - - output << std::endl; -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::test_unit_skipped( std::ostream& output, test_unit const& tu, const_string reason ) -{ - BOOST_TEST_SCOPE_SETCOLOR( m_color_output, output, term_attr::BRIGHT, term_color::YELLOW ); - - print_prefix( output, tu.p_file_name, tu.p_line_num ); - - output << "Test " << tu.p_type_name << " \"" << tu.full_name() << "\"" << " is skipped because " << reason << std::endl; -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::log_exception_start( std::ostream& output, log_checkpoint_data const& checkpoint_data, execution_exception const& ex ) -{ - execution_exception::location const& loc = ex.where(); - - print_prefix( output, loc.m_file_name, loc.m_line_num ); - - { - BOOST_TEST_SCOPE_SETCOLOR( m_color_output, output, term_attr::UNDERLINE, term_color::RED ); - - output << "fatal error: in \"" << (loc.m_function.is_empty() ? test_phase_identifier() : loc.m_function ) << "\": " - << ex.what(); - } - - if( !checkpoint_data.m_file_name.is_empty() ) { - output << '\n'; - print_prefix( output, checkpoint_data.m_file_name, checkpoint_data.m_line_num ); - - BOOST_TEST_SCOPE_SETCOLOR( m_color_output, output, term_attr::BRIGHT, term_color::CYAN ); - - output << "last checkpoint"; - if( !checkpoint_data.m_message.empty() ) - output << ": " << checkpoint_data.m_message; - } -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::log_exception_finish( std::ostream& output ) -{ - output << std::endl; -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::log_entry_start( std::ostream& output, log_entry_data const& entry_data, log_entry_types let ) -{ - using namespace utils; - - switch( let ) { - case BOOST_UTL_ET_INFO: - print_prefix( output, entry_data.m_file_name, entry_data.m_line_num ); - output << setcolor( m_color_output, term_attr::BRIGHT, term_color::GREEN ); - output << "info: "; - break; - case BOOST_UTL_ET_MESSAGE: - output << setcolor( m_color_output, term_attr::BRIGHT, term_color::CYAN ); - break; - case BOOST_UTL_ET_WARNING: - print_prefix( output, entry_data.m_file_name, entry_data.m_line_num ); - output << setcolor( m_color_output, term_attr::BRIGHT, term_color::YELLOW ); - output << "warning: in \"" << test_phase_identifier() << "\": "; - break; - case BOOST_UTL_ET_ERROR: - print_prefix( output, entry_data.m_file_name, entry_data.m_line_num ); - output << setcolor( m_color_output, term_attr::BRIGHT, term_color::RED ); - output << "error: in \"" << test_phase_identifier() << "\": "; - break; - case BOOST_UTL_ET_FATAL_ERROR: - print_prefix( output, entry_data.m_file_name, entry_data.m_line_num ); - output << setcolor( m_color_output, term_attr::UNDERLINE, term_color::RED ); - output << "fatal error: in \"" << test_phase_identifier() << "\": "; - break; - } -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::log_entry_value( std::ostream& output, const_string value ) -{ - output << value; -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::log_entry_value( std::ostream& output, lazy_ostream const& value ) -{ - output << value; -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::log_entry_finish( std::ostream& output ) -{ - if( m_color_output ) - output << utils::setcolor(m_color_output); - - output << std::endl; -} - - -//____________________________________________________________________________// - -void -compiler_log_formatter::print_prefix( std::ostream& output, const_string file_name, std::size_t line_num ) -{ - if( !file_name.empty() ) { -#ifdef __APPLE_CC__ - // Xcode-compatible logging format, idea by Richard Dingwall at - // <http://richarddingwall.name/2008/06/01/using-the-boost-unit-test-framework-with-xcode-3/>. - output << file_name << ':' << line_num << ": "; -#else - output << file_name << '(' << line_num << "): "; -#endif - } -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::entry_context_start( std::ostream& output, log_level l ) -{ - if( l == log_messages ) { - output << "\n[context:"; - } - else { - output << (l == log_successful_tests ? "\nAssertion" : "\nFailure" ) << " occurred in a following context:"; - } -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::entry_context_finish( std::ostream& output, log_level l ) -{ - if( l == log_messages ) { - output << "]"; - } - output.flush(); -} - -//____________________________________________________________________________// - -void -compiler_log_formatter::log_entry_context( std::ostream& output, log_level /*l*/, const_string context_descr ) -{ - output << "\n " << context_descr; -} - -//____________________________________________________________________________// - -} // namespace output -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_COMPILER_LOG_FORMATTER_IPP_020105GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/cpp_main.ipp b/src/third_party/boost-1.69.0/boost/test/impl/cpp_main.ipp deleted file mode 100644 index aaa5cabfc51..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/cpp_main.ipp +++ /dev/null @@ -1,136 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// (C) Copyright Beman Dawes 1995-2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : main function implementation for Program Executon Monitor -// *************************************************************************** - -#ifndef BOOST_TEST_CPP_MAIN_IPP_012205GER -#define BOOST_TEST_CPP_MAIN_IPP_012205GER - -// Boost.Test -#include <boost/test/execution_monitor.hpp> -#include <boost/test/detail/config.hpp> -#include <boost/test/utils/basic_cstring/io.hpp> - -// Boost -#include <boost/cstdlib.hpp> // for exit codes -#include <boost/config.hpp> // for workarounds - -// STL -#include <iostream> -#include <cstdlib> // std::getenv -#include <cstring> // std::strerror - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std { using ::getenv; using ::strerror; } -#endif - -namespace { - -struct cpp_main_caller { - cpp_main_caller( int (*cpp_main_func)( int argc, char* argv[] ), int argc, char** argv ) - : m_cpp_main_func( cpp_main_func ) - , m_argc( argc ) - , m_argv( argv ) {} - - int operator()() { return (*m_cpp_main_func)( m_argc, m_argv ); } - -private: - // Data members - int (*m_cpp_main_func)( int argc, char* argv[] ); - int m_argc; - char** m_argv; -}; - -} // local namespace - -// ************************************************************************** // -// ************** prg_exec_monitor_main ************** // -// ************************************************************************** // - -namespace boost { - -int BOOST_TEST_DECL -prg_exec_monitor_main( int (*cpp_main)( int argc, char* argv[] ), int argc, char* argv[] ) -{ - int result = 0; - - BOOST_TEST_I_TRY { - boost::unit_test::const_string p( std::getenv( "BOOST_TEST_CATCH_SYSTEM_ERRORS" ) ); - ::boost::execution_monitor ex_mon; - - ex_mon.p_catch_system_errors.value = p != "no"; - - result = ex_mon.execute( cpp_main_caller( cpp_main, argc, argv ) ); - - if( result == 0 ) - result = ::boost::exit_success; - else if( result != ::boost::exit_success ) { - std::cout << "\n**** error return code: " << result << std::endl; - result = ::boost::exit_failure; - } - } - BOOST_TEST_I_CATCH( ::boost::execution_exception, exex ) { - std::cout << "\n**** exception(" << exex.code() << "): " << exex.what() << std::endl; - result = ::boost::exit_exception_failure; - } - BOOST_TEST_I_CATCH( ::boost::system_error, ex ) { - std::cout << "\n**** failed to initialize execution monitor." - << "\n**** expression at fault: " << ex.p_failed_exp - << "\n**** error(" << ex.p_errno << "): " << std::strerror( ex.p_errno ) << std::endl; - result = ::boost::exit_exception_failure; - } - - if( result != ::boost::exit_success ) { - std::cerr << "******** errors detected; see standard output for details ********" << std::endl; - } - else { - // Some prefer a confirming message when all is well, while others don't - // like the clutter. Use an environment variable to avoid command - // line argument modifications; for use in production programs - // that's a no-no in some organizations. - ::boost::unit_test::const_string p( std::getenv( "BOOST_PRG_MON_CONFIRM" ) ); - if( p != "no" ) { - std::cerr << std::flush << "no errors detected" << std::endl; - } - } - - return result; -} - -} // namespace boost - -#if !defined(BOOST_TEST_DYN_LINK) && !defined(BOOST_TEST_NO_MAIN) - -// ************************************************************************** // -// ************** main function for tests using lib ************** // -// ************************************************************************** // - -int cpp_main( int argc, char* argv[] ); // prototype for user's cpp_main() - -int BOOST_TEST_CALL_DECL -main( int argc, char* argv[] ) -{ - return ::boost::prg_exec_monitor_main( &cpp_main, argc, argv ); -} - -//____________________________________________________________________________// - -#endif // !BOOST_TEST_DYN_LINK && !BOOST_TEST_NO_MAIN - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_CPP_MAIN_IPP_012205GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/debug.ipp b/src/third_party/boost-1.69.0/boost/test/impl/debug.ipp deleted file mode 100644 index a5e5f6da06d..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/debug.ipp +++ /dev/null @@ -1,1009 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Use, modification, and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : debug interfaces implementation -// *************************************************************************** - -#ifndef BOOST_TEST_DEBUG_API_IPP_112006GER -#define BOOST_TEST_DEBUG_API_IPP_112006GER - -// Boost.Test -#include <boost/test/detail/config.hpp> -#include <boost/test/detail/workaround.hpp> -#include <boost/test/detail/global_typedef.hpp> - -#include <boost/test/debug.hpp> -#include <boost/test/debug_config.hpp> - -// Implementation on Windows -#if defined(_WIN32) && !defined(UNDER_CE) && !defined(BOOST_DISABLE_WIN32) // ******* WIN32 - -# define BOOST_WIN32_BASED_DEBUG - -// SYSTEM API -# include <windows.h> -# include <winreg.h> -# include <cstdio> -# include <cstring> - -# if !defined(NDEBUG) && defined(_MSC_VER) -# define BOOST_MS_CRT_BASED_DEBUG -# include <crtdbg.h> -# endif - - -# ifdef BOOST_NO_STDC_NAMESPACE -namespace std { using ::memset; using ::sprintf; } -# endif - -#elif defined(unix) || defined(__unix) // ********************* UNIX - -# define BOOST_UNIX_BASED_DEBUG - -// Boost.Test -#include <boost/test/utils/class_properties.hpp> -#include <boost/test/utils/algorithm.hpp> - -// STL -#include <cstring> // std::memcpy -#include <map> -#include <cstdio> -#include <stdarg.h> // !! ?? cstdarg - -// SYSTEM API -# include <unistd.h> -# include <signal.h> -# include <fcntl.h> - -# include <sys/types.h> -# include <sys/stat.h> -# include <sys/wait.h> -# include <sys/time.h> -# include <stdio.h> -# include <stdlib.h> - -# if defined(sun) || defined(__sun) - -# define BOOST_SUN_BASED_DEBUG - -# ifndef BOOST_TEST_DBG_LIST -# define BOOST_TEST_DBG_LIST dbx;gdb -# endif - -# define BOOST_TEST_CNL_DBG dbx -# define BOOST_TEST_GUI_DBG dbx-ddd - -# include <procfs.h> - -# elif defined(linux) || defined(__linux) - -# define BOOST_LINUX_BASED_DEBUG - -# include <sys/ptrace.h> - -# ifndef BOOST_TEST_STAT_LINE_MAX -# define BOOST_TEST_STAT_LINE_MAX 500 -# endif - -# ifndef BOOST_TEST_DBG_LIST -# define BOOST_TEST_DBG_LIST gdb -# endif - -# define BOOST_TEST_CNL_DBG gdb -# define BOOST_TEST_GUI_DBG gdb-xterm - -# endif - -#endif - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace debug { - -using unit_test::const_string; - -// ************************************************************************** // -// ************** debug::info_t ************** // -// ************************************************************************** // - -namespace { - -#if defined(BOOST_WIN32_BASED_DEBUG) // *********************** WIN32 - -template<typename T> -inline void -dyn_symbol( T& res, char const* module_name, char const* symbol_name ) -{ - HMODULE m = ::GetModuleHandleA( module_name ); - - if( !m ) - m = ::LoadLibraryA( module_name ); - - res = reinterpret_cast<T>( ::GetProcAddress( m, symbol_name ) ); -} - -//____________________________________________________________________________// - -static struct info_t { - typedef BOOL (WINAPI* IsDebuggerPresentT)(); - typedef LONG (WINAPI* RegQueryValueExT)( HKEY, char const* /*LPTSTR*/, LPDWORD, LPDWORD, LPBYTE, LPDWORD ); - typedef LONG (WINAPI* RegOpenKeyT)( HKEY, char const* /*LPCTSTR*/, PHKEY ); - typedef LONG (WINAPI* RegCloseKeyT)( HKEY ); - - info_t(); - - IsDebuggerPresentT m_is_debugger_present; - RegOpenKeyT m_reg_open_key; - RegQueryValueExT m_reg_query_value; - RegCloseKeyT m_reg_close_key; - -} s_info; - -//____________________________________________________________________________// - -info_t::info_t() -{ - dyn_symbol( m_is_debugger_present, "kernel32", "IsDebuggerPresent" ); - dyn_symbol( m_reg_open_key, "advapi32", "RegOpenKeyA" ); - dyn_symbol( m_reg_query_value, "advapi32", "RegQueryValueExA" ); - dyn_symbol( m_reg_close_key, "advapi32", "RegCloseKey" ); -} - -//____________________________________________________________________________// - -#elif defined(BOOST_UNIX_BASED_DEBUG) - -// ************************************************************************** // -// ************** fd_holder ************** // -// ************************************************************************** // - -struct fd_holder { - explicit fd_holder( int fd ) : m_fd( fd ) {} - ~fd_holder() - { - if( m_fd != -1 ) - ::close( m_fd ); - } - - operator int() { return m_fd; } - -private: - // Data members - int m_fd; -}; - - -// ************************************************************************** // -// ************** process_info ************** // -// ************************************************************************** // - -struct process_info { - // Constructor - explicit process_info( int pid ); - - // access methods - int parent_pid() const { return m_parent_pid; } - const_string binary_name() const { return m_binary_name; } - const_string binary_path() const { return m_binary_path; } - -private: - // Data members - int m_parent_pid; - const_string m_binary_name; - const_string m_binary_path; - -#if defined(BOOST_SUN_BASED_DEBUG) - struct psinfo m_psi; - char m_binary_path_buff[500+1]; // !! ?? -#elif defined(BOOST_LINUX_BASED_DEBUG) - char m_stat_line[BOOST_TEST_STAT_LINE_MAX+1]; - char m_binary_path_buff[500+1]; // !! ?? -#endif -}; - -//____________________________________________________________________________// - -process_info::process_info( int pid ) -: m_parent_pid( 0 ) -{ -#if defined(BOOST_SUN_BASED_DEBUG) - char fname_buff[30]; - - ::snprintf( fname_buff, sizeof(fname_buff), "/proc/%d/psinfo", pid ); - - fd_holder psinfo_fd( ::open( fname_buff, O_RDONLY ) ); - - if( psinfo_fd == -1 ) - return; - - if( ::read( psinfo_fd, &m_psi, sizeof(m_psi) ) == -1 ) - return; - - m_parent_pid = m_psi.pr_ppid; - - m_binary_name.assign( m_psi.pr_fname ); - - //-------------------------- // - - ::snprintf( fname_buff, sizeof(fname_buff), "/proc/%d/as", pid ); - - fd_holder as_fd( ::open( fname_buff, O_RDONLY ) ); - uintptr_t binary_name_pos; - - // !! ?? could we avoid reading whole m_binary_path_buff? - if( as_fd == -1 || - ::lseek( as_fd, m_psi.pr_argv, SEEK_SET ) == -1 || - ::read ( as_fd, &binary_name_pos, sizeof(binary_name_pos) ) == -1 || - ::lseek( as_fd, binary_name_pos, SEEK_SET ) == -1 || - ::read ( as_fd, m_binary_path_buff, sizeof(m_binary_path_buff) ) == -1 ) - return; - - m_binary_path.assign( m_binary_path_buff ); - -#elif defined(BOOST_LINUX_BASED_DEBUG) - char fname_buff[30]; - - ::snprintf( fname_buff, sizeof(fname_buff), "/proc/%d/stat", pid ); - - fd_holder psinfo_fd( ::open( fname_buff, O_RDONLY ) ); - - if( psinfo_fd == -1 ) - return; - - ssize_t num_read = ::read( psinfo_fd, m_stat_line, sizeof(m_stat_line)-1 ); - if( num_read == -1 ) - return; - - m_stat_line[num_read] = 0; - - char const* name_beg = m_stat_line; - while( *name_beg && *name_beg != '(' ) - ++name_beg; - - char const* name_end = name_beg+1; - while( *name_end && *name_end != ')' ) - ++name_end; - - std::sscanf( name_end+1, "%*s%d", &m_parent_pid ); - - m_binary_name.assign( name_beg+1, name_end ); - - ::snprintf( fname_buff, sizeof(fname_buff), "/proc/%d/exe", pid ); - num_read = ::readlink( fname_buff, m_binary_path_buff, sizeof(m_binary_path_buff)-1 ); - - if( num_read == -1 ) - return; - - m_binary_path_buff[num_read] = 0; - m_binary_path.assign( m_binary_path_buff, num_read ); -#endif -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** prepare_window_title ************** // -// ************************************************************************** // - -static char* -prepare_window_title( dbg_startup_info const& dsi ) -{ - typedef unit_test::const_string str_t; - - static char title_str[50]; - - str_t path_sep( "\\/" ); - - str_t::iterator it = unit_test::utils::find_last_of( dsi.binary_path.begin(), dsi.binary_path.end(), - path_sep.begin(), path_sep.end() ); - - if( it == dsi.binary_path.end() ) - it = dsi.binary_path.begin(); - else - ++it; - - ::snprintf( title_str, sizeof(title_str), "%*s %ld", (int)(dsi.binary_path.end()-it), it, dsi.pid ); - - return title_str; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** save_execlp ************** // -// ************************************************************************** // - -typedef unit_test::basic_cstring<char> mbuffer; - -inline char* -copy_arg( mbuffer& dest, const_string arg ) -{ - if( dest.size() < arg.size()+1 ) - return 0; - - char* res = dest.begin(); - - std::memcpy( res, arg.begin(), arg.size()+1 ); - - dest.trim_left( arg.size()+1 ); - - return res; -} - -//____________________________________________________________________________// - -bool -safe_execlp( char const* file, ... ) -{ - static char* argv_buff[200]; - - va_list args; - char const* arg; - - // first calculate actual number of arguments - int num_args = 2; // file name and 0 at least - - va_start( args, file ); - while( !!(arg = va_arg( args, char const* )) ) - num_args++; - va_end( args ); - - // reserve space for the argument pointers array - char** argv_it = argv_buff; - mbuffer work_buff( reinterpret_cast<char*>(argv_buff), sizeof(argv_buff) ); - work_buff.trim_left( num_args * sizeof(char*) ); - - // copy all the argument values into local storage - if( !(*argv_it++ = copy_arg( work_buff, file )) ) - return false; - - printf( "!! %s\n", file ); - - va_start( args, file ); - while( !!(arg = va_arg( args, char const* )) ) { - printf( "!! %s\n", arg ); - if( !(*argv_it++ = copy_arg( work_buff, arg )) ) { - va_end( args ); - return false; - } - } - va_end( args ); - - *argv_it = 0; - - return ::execvp( file, argv_buff ) != -1; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** start_debugger_in_emacs ************** // -// ************************************************************************** // - -static void -start_debugger_in_emacs( dbg_startup_info const& dsi, char const* emacs_name, char const* dbg_command ) -{ - char const* title = prepare_window_title( dsi ); - - if( !title ) - return; - - dsi.display.is_empty() - ? safe_execlp( emacs_name, "-title", title, "--eval", dbg_command, 0 ) - : safe_execlp( emacs_name, "-title", title, "-display", dsi.display.begin(), "--eval", dbg_command, 0 ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** gdb starters ************** // -// ************************************************************************** // - -static char const* -prepare_gdb_cmnd_file( dbg_startup_info const& dsi ) -{ - // prepare pid value - char pid_buff[16]; - ::snprintf( pid_buff, sizeof(pid_buff), "%ld", dsi.pid ); - unit_test::const_string pid_str( pid_buff ); - - static char cmd_file_name[] = "/tmp/btl_gdb_cmd_XXXXXX"; // !! ?? - - // prepare commands - fd_holder cmd_fd( ::mkstemp( cmd_file_name ) ); - - if( cmd_fd == -1 ) - return 0; - -#define WRITE_STR( str ) if( ::write( cmd_fd, str.begin(), str.size() ) == -1 ) return 0; -#define WRITE_CSTR( str ) if( ::write( cmd_fd, str, sizeof( str )-1 ) == -1 ) return 0; - - WRITE_CSTR( "file " ); - WRITE_STR( dsi.binary_path ); - WRITE_CSTR( "\nattach " ); - WRITE_STR( pid_str ); - WRITE_CSTR( "\nshell unlink " ); - WRITE_STR( dsi.init_done_lock ); - WRITE_CSTR( "\ncont" ); - if( dsi.break_or_continue ) - WRITE_CSTR( "\nup 4" ); - - WRITE_CSTR( "\necho \\n" ); // !! ?? - WRITE_CSTR( "\nlist -" ); - WRITE_CSTR( "\nlist" ); - WRITE_CSTR( "\nshell unlink " ); - WRITE_CSTR( cmd_file_name ); - - return cmd_file_name; -} - -//____________________________________________________________________________// - -static void -start_gdb_in_console( dbg_startup_info const& dsi ) -{ - char const* cmnd_file_name = prepare_gdb_cmnd_file( dsi ); - - if( !cmnd_file_name ) - return; - - safe_execlp( "gdb", "-q", "-x", cmnd_file_name, 0 ); -} - -//____________________________________________________________________________// - -static void -start_gdb_in_xterm( dbg_startup_info const& dsi ) -{ - char const* title = prepare_window_title( dsi ); - char const* cmnd_file_name = prepare_gdb_cmnd_file( dsi ); - - if( !title || !cmnd_file_name ) - return; - - safe_execlp( "xterm", "-T", title, "-display", dsi.display.begin(), - "-bg", "black", "-fg", "white", "-geometry", "88x30+10+10", "-fn", "9x15", "-e", - "gdb", "-q", "-x", cmnd_file_name, 0 ); -} - -//____________________________________________________________________________// - -static void -start_gdb_in_emacs( dbg_startup_info const& dsi ) -{ - char const* cmnd_file_name = prepare_gdb_cmnd_file( dsi ); - if( !cmnd_file_name ) - return; - - char dbg_cmd_buff[500]; // !! ?? - ::snprintf( dbg_cmd_buff, sizeof(dbg_cmd_buff), "(progn (gdb \"gdb -q -x %s\"))", cmnd_file_name ); - - start_debugger_in_emacs( dsi, "emacs", dbg_cmd_buff ); -} - -//____________________________________________________________________________// - -static void -start_gdb_in_xemacs( dbg_startup_info const& ) -{ - // !! ?? -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** dbx starters ************** // -// ************************************************************************** // - -static char const* -prepare_dbx_cmd_line( dbg_startup_info const& dsi, bool list_source = true ) -{ - static char cmd_line_buff[500]; // !! ?? - - ::snprintf( cmd_line_buff, sizeof(cmd_line_buff), "unlink %s;cont;%s%s", - dsi.init_done_lock.begin(), - dsi.break_or_continue ? "up 2;": "", - list_source ? "echo \" \";list -w3;" : "" ); - - return cmd_line_buff; -} - -//____________________________________________________________________________// - -static void -start_dbx_in_console( dbg_startup_info const& dsi ) -{ - char pid_buff[16]; - ::snprintf( pid_buff, sizeof(pid_buff), "%ld", dsi.pid ); - - safe_execlp( "dbx", "-q", "-c", prepare_dbx_cmd_line( dsi ), dsi.binary_path.begin(), pid_buff, 0 ); -} - -//____________________________________________________________________________// - -static void -start_dbx_in_xterm( dbg_startup_info const& dsi ) -{ - char const* title = prepare_window_title( dsi ); - if( !title ) - return; - - char pid_buff[16]; // !! ?? - ::snprintf( pid_buff, sizeof(pid_buff), "%ld", dsi.pid ); - - safe_execlp( "xterm", "-T", title, "-display", dsi.display.begin(), - "-bg", "black", "-fg", "white", "-geometry", "88x30+10+10", "-fn", "9x15", "-e", - "dbx", "-q", "-c", prepare_dbx_cmd_line( dsi ), dsi.binary_path.begin(), pid_buff, 0 ); -} - -//____________________________________________________________________________// - -static void -start_dbx_in_emacs( dbg_startup_info const& /*dsi*/ ) -{ -// char dbg_cmd_buff[500]; // !! ?? -// -// ::snprintf( dbg_cmd_buff, sizeof(dbg_cmd_buff), "(progn (dbx \"dbx -q -c cont %s %ld\"))", dsi.binary_path.begin(), dsi.pid ); - -// start_debugger_in_emacs( dsi, "emacs", dbg_cmd_buff ); -} - -//____________________________________________________________________________// - -static void -start_dbx_in_xemacs( dbg_startup_info const& ) -{ - // !! ?? -} - -//____________________________________________________________________________// - -static void -start_dbx_in_ddd( dbg_startup_info const& dsi ) -{ - char const* title = prepare_window_title( dsi ); - if( !title ) - return; - - char pid_buff[16]; // !! ?? - ::snprintf( pid_buff, sizeof(pid_buff), "%ld", dsi.pid ); - - safe_execlp( "ddd", "-display", dsi.display.begin(), - "--dbx", "-q", "-c", prepare_dbx_cmd_line( dsi, false ), dsi.binary_path.begin(), pid_buff, 0 ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** debug::info_t ************** // -// ************************************************************************** // - -static struct info_t { - // Constructor - info_t(); - - // Public properties - unit_test::readwrite_property<std::string> p_dbg; - - // Data members - std::map<std::string,dbg_starter> m_dbg_starter_reg; -} s_info; - -//____________________________________________________________________________// - -info_t::info_t() -{ - p_dbg.value = ::getenv( "DISPLAY" ) - ? std::string( BOOST_STRINGIZE( BOOST_TEST_GUI_DBG ) ) - : std::string( BOOST_STRINGIZE( BOOST_TEST_CNL_DBG ) ); - - m_dbg_starter_reg[std::string("gdb")] = &start_gdb_in_console; - m_dbg_starter_reg[std::string("gdb-emacs")] = &start_gdb_in_emacs; - m_dbg_starter_reg[std::string("gdb-xterm")] = &start_gdb_in_xterm; - m_dbg_starter_reg[std::string("gdb-xemacs")] = &start_gdb_in_xemacs; - - m_dbg_starter_reg[std::string("dbx")] = &start_dbx_in_console; - m_dbg_starter_reg[std::string("dbx-emacs")] = &start_dbx_in_emacs; - m_dbg_starter_reg[std::string("dbx-xterm")] = &start_dbx_in_xterm; - m_dbg_starter_reg[std::string("dbx-xemacs")] = &start_dbx_in_xemacs; - m_dbg_starter_reg[std::string("dbx-ddd")] = &start_dbx_in_ddd; -} - -//____________________________________________________________________________// - -#endif - -} // local namespace - -// ************************************************************************** // -// ************** check if program is running under debugger ************** // -// ************************************************************************** // - -bool -under_debugger() -{ -#if defined(BOOST_WIN32_BASED_DEBUG) // *********************** WIN32 - - return !!s_info.m_is_debugger_present && s_info.m_is_debugger_present(); - -#elif defined(BOOST_UNIX_BASED_DEBUG) // ********************** UNIX - - // !! ?? could/should we cache the result somehow? - const_string dbg_list = BOOST_TEST_STRINGIZE( BOOST_TEST_DBG_LIST ); - - pid_t pid = ::getpid(); - - while( pid != 0 ) { - process_info pi( pid ); - - // !! ?? should we use tokenizer here instead? - if( dbg_list.find( pi.binary_name() ) != const_string::npos ) - return true; - - pid = (pi.parent_pid() == pid ? 0 : pi.parent_pid()); - } - - return false; - -#else // ****************************************************** default - - return false; - -#endif -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** cause program to break execution ************** // -// ************** in debugger at call point ************** // -// ************************************************************************** // - -void -debugger_break() -{ - // !! ?? auto-start debugger? - -#if defined(BOOST_WIN32_BASED_DEBUG) // *********************** WIN32 - -#if defined(__GNUC__) && !defined(__MINGW32__) || \ - defined(__INTEL_COMPILER) -# define BOOST_DEBUG_BREAK __debugbreak -#else -# define BOOST_DEBUG_BREAK DebugBreak -#endif - -#ifndef __MINGW32__ - if( !under_debugger() ) { - __try { - __try { - BOOST_DEBUG_BREAK(); - } - __except( UnhandledExceptionFilter(GetExceptionInformation()) ) - { - // User opted to ignore the breakpoint - return; - } - } - __except (EXCEPTION_EXECUTE_HANDLER) - { - // If we got here, the user has pushed Debug. Debugger is already attached to our process and we - // continue to let the another BOOST_DEBUG_BREAK to be called. - } - } -#endif - - BOOST_DEBUG_BREAK(); - -#elif defined(BOOST_UNIX_BASED_DEBUG) // ********************** UNIX - - ::kill( ::getpid(), SIGTRAP ); - -#else // ****************************************************** default - -#endif -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** console debugger setup ************** // -// ************************************************************************** // - -#if defined(BOOST_UNIX_BASED_DEBUG) // ************************ UNIX - -std::string -set_debugger( unit_test::const_string dbg_id, dbg_starter s ) -{ - std::string old = s_info.p_dbg; - - assign_op( s_info.p_dbg.value, dbg_id, 0 ); - - if( !!s ) - s_info.m_dbg_starter_reg[s_info.p_dbg.get()] = s; - - return old; -} - -#else // ***************************************************** default - -std::string -set_debugger( unit_test::const_string, dbg_starter ) -{ - return std::string(); -} - -#endif - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** attach debugger to the current process ************** // -// ************************************************************************** // - -#if defined(BOOST_WIN32_BASED_DEBUG) - -struct safe_handle_helper -{ - HANDLE& handle; - safe_handle_helper(HANDLE &handle_) : handle(handle_) {} - - void close_handle() - { - if( handle != INVALID_HANDLE_VALUE ) - { - ::CloseHandle( handle ); - handle = INVALID_HANDLE_VALUE; - } - } - - ~safe_handle_helper() - { - close_handle(); - } -}; -#endif - -bool -attach_debugger( bool break_or_continue ) -{ - if( under_debugger() ) - return false; - -#if defined(BOOST_WIN32_BASED_DEBUG) // *********************** WIN32 - - const int MAX_CMD_LINE = 200; - - // *************************************************** // - // Debugger "ready" event - - SECURITY_ATTRIBUTES attr; - attr.nLength = sizeof(attr); - attr.lpSecurityDescriptor = NULL; - attr.bInheritHandle = true; - - // manual resettable, initially non signaled, unnamed event, - // that will signal me that debugger initialization is done - HANDLE dbg_init_done_ev = ::CreateEvent( - &attr, // pointer to security attributes - true, // flag for manual-reset event - false, // flag for initial state - NULL // pointer to event-object name - ); - - if( !dbg_init_done_ev ) - return false; - - safe_handle_helper safe_handle_obj( dbg_init_done_ev ); - - // *************************************************** // - // Debugger command line format - - HKEY reg_key; - - if( !s_info.m_reg_open_key || (*s_info.m_reg_open_key)( - HKEY_LOCAL_MACHINE, // handle of open key - "Software\\Microsoft\\Windows NT\\CurrentVersion\\AeDebug", // name of subkey to open - ®_key ) != ERROR_SUCCESS ) // address of handle of open key - return false; - - char format[MAX_CMD_LINE]; - DWORD format_size = MAX_CMD_LINE; - DWORD type = REG_SZ; - - bool b_read_key = s_info.m_reg_query_value && - ((*s_info.m_reg_query_value)( - reg_key, // handle of open key - "Debugger", // name of subkey to query - 0, // reserved - &type, // value type - (LPBYTE)format, // buffer for returned string - &format_size ) == ERROR_SUCCESS ); // in: buffer size; out: actual size of returned string - - if( !s_info.m_reg_close_key || (*s_info.m_reg_close_key)( reg_key ) != ERROR_SUCCESS ) - return false; - - if( !b_read_key ) - return false; - - // *************************************************** // - // Debugger command line - - char cmd_line[MAX_CMD_LINE]; - std::sprintf( cmd_line, format, ::GetCurrentProcessId(), dbg_init_done_ev ); - - // *************************************************** // - // Debugger window parameters - - STARTUPINFOA startup_info; - std::memset( &startup_info, 0, sizeof(startup_info) ); - - startup_info.cb = sizeof(startup_info); - startup_info.dwFlags = STARTF_USESHOWWINDOW; - startup_info.wShowWindow = SW_SHOWNORMAL; - - // debugger process s_info - PROCESS_INFORMATION debugger_info; - - bool created = !!::CreateProcessA( - NULL, // pointer to name of executable module; NULL - use the one in command line - cmd_line, // pointer to command line string - NULL, // pointer to process security attributes; NULL - debugger's handle can't be inherited - NULL, // pointer to thread security attributes; NULL - debugger's handle can't be inherited - true, // debugger inherit opened handles - 0, // priority flags; 0 - normal priority - NULL, // pointer to new environment block; NULL - use this process environment - NULL, // pointer to current directory name; NULL - use this process correct directory - &startup_info, // pointer to STARTUPINFO that specifies main window appearance - &debugger_info // pointer to PROCESS_INFORMATION that will contain the new process identification - ); - - bool debugger_run_ok = false; - if( created ) - { - DWORD ret_code = ::WaitForSingleObject( dbg_init_done_ev, INFINITE ); - debugger_run_ok = ( ret_code == WAIT_OBJECT_0 ); - } - - safe_handle_obj.close_handle(); - - if( !created || !debugger_run_ok ) - return false; - - if( break_or_continue ) - debugger_break(); - - return true; - -#elif defined(BOOST_UNIX_BASED_DEBUG) // ********************** UNIX - - char init_done_lock_fn[] = "/tmp/btl_dbg_init_done_XXXXXX"; - fd_holder init_done_lock_fd( ::mkstemp( init_done_lock_fn ) ); - - if( init_done_lock_fd == -1 ) - return false; - - pid_t child_pid = fork(); - - if( child_pid == -1 ) - return false; - - if( child_pid != 0 ) { // parent process - here we will start the debugger - dbg_startup_info dsi; - - process_info pi( child_pid ); - if( pi.binary_path().is_empty() ) - ::exit( -1 ); - - dsi.pid = child_pid; - dsi.break_or_continue = break_or_continue; - dsi.binary_path = pi.binary_path(); - dsi.display = ::getenv( "DISPLAY" ); - dsi.init_done_lock = init_done_lock_fn; - - dbg_starter starter = s_info.m_dbg_starter_reg[s_info.p_dbg]; - if( !!starter ) - starter( dsi ); - - ::perror( "Boost.Test execution monitor failed to start a debugger:" ); - - ::exit( -1 ); - } - - // child process - here we will continue our test module execution ; // !! ?? should it be vice versa - - while( ::access( init_done_lock_fn, F_OK ) == 0 ) { - struct timeval to = { 0, 100 }; - - ::select( 0, 0, 0, 0, &to ); - } - -// char dummy; -// while( ::read( init_done_lock_fd, &dummy, sizeof(char) ) == 0 ); - - if( break_or_continue ) - debugger_break(); - - return true; - -#else // ****************************************************** default - (void) break_or_continue; // silence 'unused variable' warning - return false; - -#endif -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** switch on/off detect memory leaks feature ************** // -// ************************************************************************** // - -void -detect_memory_leaks( bool on_off, unit_test::const_string report_file ) -{ - unit_test::ut_detail::ignore_unused_variable_warning( on_off ); - -#ifdef BOOST_MS_CRT_BASED_DEBUG - int flags = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG ); - - if( !on_off ) - flags &= ~_CRTDBG_LEAK_CHECK_DF; - else { - flags |= _CRTDBG_LEAK_CHECK_DF; - _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); - - if( report_file.is_empty() ) - _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); - else { - HANDLE hreport_f = ::CreateFileA( report_file.begin(), - GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - _CrtSetReportFile(_CRT_WARN, hreport_f ); - } - } - - _CrtSetDbgFlag ( flags ); -#else - unit_test::ut_detail::ignore_unused_variable_warning( report_file ); -#endif // BOOST_MS_CRT_BASED_DEBUG -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** cause program to break execution in ************** // -// ************** debugger at specific allocation point ************** // -// ************************************************************************** // - -void -break_memory_alloc( long mem_alloc_order_num ) -{ - unit_test::ut_detail::ignore_unused_variable_warning( mem_alloc_order_num ); - -#ifdef BOOST_MS_CRT_BASED_DEBUG - // only set the value if one was supplied (do not use default used by UTF just as a indicator to enable leak detection) - if( mem_alloc_order_num > 1 ) - _CrtSetBreakAlloc( mem_alloc_order_num ); -#endif // BOOST_MS_CRT_BASED_DEBUG -} - -//____________________________________________________________________________// - -} // namespace debug -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_DEBUG_API_IPP_112006GER - diff --git a/src/third_party/boost-1.69.0/boost/test/impl/decorator.ipp b/src/third_party/boost-1.69.0/boost/test/impl/decorator.ipp deleted file mode 100644 index e4bf11ee268..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/decorator.ipp +++ /dev/null @@ -1,214 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : unit test decorators implementation -// *************************************************************************** - -#ifndef BOOST_TEST_TREE_DECORATOR_IPP_091911GER -#define BOOST_TEST_TREE_DECORATOR_IPP_091911GER - -// Boost.Test -#include <boost/test/tree/decorator.hpp> -#include <boost/test/tree/test_unit.hpp> - -#include <boost/test/framework.hpp> -#if BOOST_TEST_SUPPORT_TOKEN_ITERATOR -#include <boost/test/utils/iterator/token_iterator.hpp> -#endif - -#include <boost/test/detail/throw_exception.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace decorator { - -// ************************************************************************** // -// ************** decorator::collector_t ************** // -// ************************************************************************** // - -// singleton pattern -BOOST_TEST_SINGLETON_CONS_IMPL(collector_t) - - -collector_t& -collector_t::operator*( base const& d ) -{ - m_tu_decorators.push_back( d.clone() ); - - return *this; -} - -//____________________________________________________________________________// - -void -collector_t::store_in( test_unit& tu ) -{ - tu.p_decorators.value.insert( tu.p_decorators.value.end(), m_tu_decorators.begin(), m_tu_decorators.end() ); -} - -//____________________________________________________________________________// - -void -collector_t::reset() -{ - m_tu_decorators.clear(); -} - -//____________________________________________________________________________// - -std::vector<base_ptr> -collector_t::get_lazy_decorators() const -{ - return m_tu_decorators; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** decorator::base ************** // -// ************************************************************************** // - -collector_t& -base::operator*() const -{ - return collector_t::instance() * *this; -} - -// ************************************************************************** // -// ************** decorator::label ************** // -// ************************************************************************** // - -void -label::apply( test_unit& tu ) -{ - tu.add_label( m_label ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** decorator::expected_failures ************** // -// ************************************************************************** // - -void -expected_failures::apply( test_unit& tu ) -{ - tu.increase_exp_fail( m_exp_fail ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** decorator::timeout ************** // -// ************************************************************************** // - -void -timeout::apply( test_unit& tu ) -{ - tu.p_timeout.value = m_timeout; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** decorator::description ************** // -// ************************************************************************** // - -void -description::apply( test_unit& tu ) -{ - tu.p_description.value += m_description; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** decorator::depends_on ************** // -// ************************************************************************** // - -void -depends_on::apply( test_unit& tu ) -{ -#if !BOOST_TEST_SUPPORT_TOKEN_ITERATOR - BOOST_TEST_SETUP_ASSERT( false, "depends_on decorator is not supported on this platform" ); -#else - utils::string_token_iterator tit( m_dependency, (utils::dropped_delimeters = "/", utils::kept_delimeters = utils::dt_none) ); - - test_unit* dep = &framework::master_test_suite(); - while( tit != utils::string_token_iterator() ) { - BOOST_TEST_SETUP_ASSERT( dep->p_type == TUT_SUITE, std::string( "incorrect dependency specification " ) + m_dependency ); - - test_unit_id next_id = static_cast<test_suite*>(dep)->get( *tit ); - - BOOST_TEST_SETUP_ASSERT( next_id != INV_TEST_UNIT_ID, - std::string( "incorrect dependency specification " ) + m_dependency ); - - dep = &framework::get( next_id, TUT_ANY ); - ++tit; - } - - tu.depends_on( dep ); -#endif -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** decorator::enable_if/enabled/disabled ************** // -// ************************************************************************** // - -void -enable_if_impl::apply_impl( test_unit& tu, bool condition ) -{ - BOOST_TEST_SETUP_ASSERT(tu.p_default_status == test_unit::RS_INHERIT, - "Can't apply multiple enabled/disabled decorators " - "to the same test unit " + tu.full_name()); - - tu.p_default_status.value = condition ? test_unit::RS_ENABLED : test_unit::RS_DISABLED; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** decorator::fixture ************** // -// ************************************************************************** // - -void -fixture_t::apply( test_unit& tu ) -{ - tu.p_fixtures.value.push_back( m_impl ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** decorator::depends_on ************** // -// ************************************************************************** // - -void -precondition::apply( test_unit& tu ) -{ - tu.add_precondition( m_precondition ); -} - -//____________________________________________________________________________// - -} // namespace decorator -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TREE_DECORATOR_IPP_091911GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/execution_monitor.ipp b/src/third_party/boost-1.69.0/boost/test/impl/execution_monitor.ipp deleted file mode 100644 index 9b7c5965b4a..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/execution_monitor.ipp +++ /dev/null @@ -1,1450 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// (C) Copyright Beman Dawes and Ullrich Koethe 1995-2001. -// Use, modification, and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// Provides execution monitor implementation for all supported -/// configurations, including Microsoft structured exception based, unix signals -/// based and special workarounds for borland -/// -/// Note that when testing requirements or user wishes preclude use of this -/// file as a separate compilation unit, it may be included as a header file. -/// -/// Header dependencies are deliberately restricted to reduce coupling to other -/// boost libraries. -// *************************************************************************** - -#ifndef BOOST_TEST_EXECUTION_MONITOR_IPP_012205GER -#define BOOST_TEST_EXECUTION_MONITOR_IPP_012205GER - -// Boost.Test -#include <boost/test/detail/config.hpp> -#include <boost/test/detail/workaround.hpp> -#include <boost/test/detail/throw_exception.hpp> -#include <boost/test/execution_monitor.hpp> -#include <boost/test/debug.hpp> - -// Boost -#include <boost/cstdlib.hpp> // for exit codes -#include <boost/config.hpp> // for workarounds -#include <boost/core/ignore_unused.hpp> // for ignore_unused -#ifndef BOOST_NO_EXCEPTIONS -#include <boost/exception/get_error_info.hpp> // for get_error_info -#include <boost/exception/current_exception_cast.hpp> // for current_exception_cast -#include <boost/exception/diagnostic_information.hpp> -#endif - -// STL -#include <string> // for std::string -#include <new> // for std::bad_alloc -#include <typeinfo> // for std::bad_cast, std::bad_typeid -#include <exception> // for std::exception, std::bad_exception -#include <stdexcept> // for std exception hierarchy -#include <cstring> // for C string API -#include <cassert> // for assert -#include <cstddef> // for NULL -#include <cstdio> // for vsnprintf -#include <cstdarg> // for varargs - -#include <iostream> // for varargs - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std { using ::strerror; using ::strlen; using ::strncat; } -#endif - -// to use vsnprintf -#if defined(__SUNPRO_CC) || defined(__SunOS) -# include <stdio.h> -# include <stdarg.h> -using std::va_list; -#endif - -// to use vsnprintf -#if defined(__QNXNTO__) || defined(__VXWORKS__) -# include <stdio.h> -using std::va_list; -#endif - -#if defined(__VXWORKS__) -# define BOOST_TEST_LIMITED_SIGNAL_DETAILS -#endif - -#ifdef BOOST_SEH_BASED_SIGNAL_HANDLING -# include <windows.h> - -# if defined(__MWERKS__) || (defined(_MSC_VER) && !defined(UNDER_CE)) -# include <eh.h> -# endif - -# if defined(__BORLANDC__) && __BORLANDC__ >= 0x560 || defined(__MWERKS__) -# include <stdint.h> -# endif - -# if defined(__BORLANDC__) && __BORLANDC__ < 0x560 - typedef unsigned uintptr_t; -# endif - -# if defined(UNDER_CE) && BOOST_WORKAROUND(_MSC_VER, < 1500 ) - typedef void* uintptr_t; -# elif defined(UNDER_CE) -# include <crtdefs.h> -# endif - -# if !defined(NDEBUG) && defined(_MSC_VER) && !defined(UNDER_CE) -# include <crtdbg.h> -# define BOOST_TEST_CRT_HOOK_TYPE _CRT_REPORT_HOOK -# define BOOST_TEST_CRT_ASSERT _CRT_ASSERT -# define BOOST_TEST_CRT_ERROR _CRT_ERROR -# define BOOST_TEST_CRT_SET_HOOK(H) _CrtSetReportHook(H) -# else -# define BOOST_TEST_CRT_HOOK_TYPE void* -# define BOOST_TEST_CRT_ASSERT 2 -# define BOOST_TEST_CRT_ERROR 1 -# define BOOST_TEST_CRT_SET_HOOK(H) (void*)(H) -# endif - -# if (!BOOST_WORKAROUND(_MSC_VER, >= 1400 ) && \ - !defined(BOOST_COMO)) || defined(UNDER_CE) - -typedef void* _invalid_parameter_handler; - -inline _invalid_parameter_handler -_set_invalid_parameter_handler( _invalid_parameter_handler arg ) -{ - return arg; -} - -# endif - -# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0564)) || defined(UNDER_CE) - -namespace { void _set_se_translator( void* ) {} } - -# endif - -#elif defined(BOOST_HAS_SIGACTION) - -# define BOOST_SIGACTION_BASED_SIGNAL_HANDLING - -# include <unistd.h> -# include <signal.h> -# include <setjmp.h> - -# if defined(__FreeBSD__) - -# include <osreldate.h> - -# ifndef SIGPOLL -# define SIGPOLL SIGIO -# endif - -# if (__FreeBSD_version < 70100) - -# define ILL_ILLADR 0 // ILL_RESAD_FAULT -# define ILL_PRVOPC ILL_PRIVIN_FAULT -# define ILL_ILLOPN 2 // ILL_RESOP_FAULT -# define ILL_COPROC ILL_FPOP_FAULT - -# define BOOST_TEST_LIMITED_SIGNAL_DETAILS - -# endif -# endif - -# if defined(__ANDROID__) -# include <android/api-level.h> -# endif - -// documentation of BOOST_TEST_DISABLE_ALT_STACK in execution_monitor.hpp -# if !defined(__CYGWIN__) && !defined(__QNXNTO__) && !defined(__bgq__) && \ - (!defined(__ANDROID__) || __ANDROID_API__ >= 8) && \ - !defined(BOOST_TEST_DISABLE_ALT_STACK) -# define BOOST_TEST_USE_ALT_STACK -# endif - -# if defined(SIGPOLL) && !defined(__CYGWIN__) && \ - !(defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)) && \ - !defined(__NetBSD__) && \ - !defined(__QNXNTO__) -# define BOOST_TEST_CATCH_SIGPOLL -# endif - -# ifdef BOOST_TEST_USE_ALT_STACK -# define BOOST_TEST_ALT_STACK_SIZE SIGSTKSZ -# endif - - -#else - -# define BOOST_NO_SIGNAL_HANDLING - -#endif - -#ifndef UNDER_CE -#include <errno.h> -#endif - -#if !defined(BOOST_NO_TYPEID) && !defined(BOOST_NO_RTTI) -# include <boost/core/demangle.hpp> -#endif - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { - -// ************************************************************************** // -// ************** throw_exception ************** // -// ************************************************************************** // - -#ifdef BOOST_NO_EXCEPTIONS -void throw_exception( std::exception const & e ) { abort(); } -#endif - -// ************************************************************************** // -// ************** report_error ************** // -// ************************************************************************** // - -namespace detail { - -#ifdef __BORLANDC__ -# define BOOST_TEST_VSNPRINTF( a1, a2, a3, a4 ) std::vsnprintf( (a1), (a2), (a3), (a4) ) -#elif BOOST_WORKAROUND(_MSC_VER, <= 1310) || \ - BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3000)) || \ - defined(UNDER_CE) -# define BOOST_TEST_VSNPRINTF( a1, a2, a3, a4 ) _vsnprintf( (a1), (a2), (a3), (a4) ) -#else -# define BOOST_TEST_VSNPRINTF( a1, a2, a3, a4 ) vsnprintf( (a1), (a2), (a3), (a4) ) -#endif - -#ifndef BOOST_NO_EXCEPTIONS - -template <typename ErrorInfo> -typename ErrorInfo::value_type -extract( boost::exception const* ex ) -{ - if( !ex ) - return 0; - - typename ErrorInfo::value_type const * val = boost::get_error_info<ErrorInfo>( *ex ); - - return val ? *val : 0; -} - -//____________________________________________________________________________// - -static void -report_error( execution_exception::error_code ec, boost::exception const* be, char const* format, va_list* args ) -{ - static const int REPORT_ERROR_BUFFER_SIZE = 4096; - static char buf[REPORT_ERROR_BUFFER_SIZE]; - - BOOST_TEST_VSNPRINTF( buf, sizeof(buf)-1, format, *args ); - buf[sizeof(buf)-1] = 0; - - va_end( *args ); - - BOOST_TEST_I_THROW(execution_exception( ec, buf, execution_exception::location( extract<throw_file>( be ), - (size_t)extract<throw_line>( be ), - extract<throw_function>( be ) ) )); -} - -//____________________________________________________________________________// - -static void -report_error( execution_exception::error_code ec, boost::exception const* be, char const* format, ... ) -{ - va_list args; - va_start( args, format ); - - report_error( ec, be, format, &args ); -} - -#endif - -//____________________________________________________________________________// - -static void -report_error( execution_exception::error_code ec, char const* format, ... ) -{ - va_list args; - va_start( args, format ); - - report_error( ec, 0, format, &args ); -} - -//____________________________________________________________________________// - -template<typename Tr,typename Functor> -inline int -do_invoke( Tr const& tr, Functor const& F ) -{ - return tr ? (*tr)( F ) : F(); -} - -//____________________________________________________________________________// - -struct fpe_except_guard { - explicit fpe_except_guard( unsigned detect_fpe ) - : m_detect_fpe( detect_fpe ) - { - // prepare fp exceptions control - m_previously_enabled = fpe::disable( fpe::BOOST_FPE_ALL ); - if( m_previously_enabled != fpe::BOOST_FPE_INV && detect_fpe != fpe::BOOST_FPE_OFF ) - fpe::enable( detect_fpe ); - } - ~fpe_except_guard() - { - if( m_detect_fpe != fpe::BOOST_FPE_OFF ) - fpe::disable( m_detect_fpe ); - if( m_previously_enabled != fpe::BOOST_FPE_INV ) - fpe::enable( m_previously_enabled ); - } - - unsigned m_detect_fpe; - unsigned m_previously_enabled; -}; - - -// ************************************************************************** // -// ************** typeid_name ************** // -// ************************************************************************** // - -#if !defined(BOOST_NO_TYPEID) && !defined(BOOST_NO_RTTI) -template<typename T> -std::string -typeid_name( T const& t ) -{ - return boost::core::demangle(typeid(t).name()); -} -#endif - -} // namespace detail - -#if defined(BOOST_SIGACTION_BASED_SIGNAL_HANDLING) - -// ************************************************************************** // -// ************** Sigaction based signal handling ************** // -// ************************************************************************** // - -namespace detail { - -// ************************************************************************** // -// ************** boost::detail::system_signal_exception ************** // -// ************************************************************************** // - -class system_signal_exception { -public: - // Constructor - system_signal_exception() - : m_sig_info( 0 ) - , m_context( 0 ) - {} - - // Access methods - void operator()( siginfo_t* i, void* c ) - { - m_sig_info = i; - m_context = c; - } - void report() const; - -private: - // Data members - siginfo_t* m_sig_info; // system signal detailed info - void* m_context; // signal context -}; - -//____________________________________________________________________________// - -void -system_signal_exception::report() const -{ - if( !m_sig_info ) - return; // no error actually occur? - - switch( m_sig_info->si_code ) { -#ifdef __VXWORKS__ -// a bit of a hack to adapt code to small m_sig_info VxWorks uses -#define si_addr si_value.sival_int -#define si_band si_value.sival_int -#else - case SI_USER: - report_error( execution_exception::system_error, - "signal: generated by kill() (or family); uid=%d; pid=%d", - (int)m_sig_info->si_uid, (int)m_sig_info->si_pid ); - break; -#endif - case SI_QUEUE: - report_error( execution_exception::system_error, - "signal: sent by sigqueue()" ); - break; - case SI_TIMER: - report_error( execution_exception::system_error, - "signal: the expiration of a timer set by timer_settimer()" ); - break; - case SI_ASYNCIO: - report_error( execution_exception::system_error, - "signal: generated by the completion of an asynchronous I/O request" ); - break; - case SI_MESGQ: - report_error( execution_exception::system_error, - "signal: generated by the the arrival of a message on an empty message queue" ); - break; - default: - break; - } - - switch( m_sig_info->si_signo ) { - case SIGILL: - switch( m_sig_info->si_code ) { -#ifndef BOOST_TEST_LIMITED_SIGNAL_DETAILS - case ILL_ILLOPC: - report_error( execution_exception::system_fatal_error, - "signal: illegal opcode; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - case ILL_ILLTRP: - report_error( execution_exception::system_fatal_error, - "signal: illegal trap; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - case ILL_PRVREG: - report_error( execution_exception::system_fatal_error, - "signal: privileged register; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - case ILL_BADSTK: - report_error( execution_exception::system_fatal_error, - "signal: internal stack error; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; -#endif - case ILL_ILLOPN: - report_error( execution_exception::system_fatal_error, - "signal: illegal operand; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - case ILL_ILLADR: - report_error( execution_exception::system_fatal_error, - "signal: illegal addressing mode; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - case ILL_PRVOPC: - report_error( execution_exception::system_fatal_error, - "signal: privileged opcode; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - case ILL_COPROC: - report_error( execution_exception::system_fatal_error, - "signal: co-processor error; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - default: - report_error( execution_exception::system_fatal_error, - "signal: SIGILL, si_code: %d (illegal instruction; address of failing instruction: 0x%08lx)", - m_sig_info->si_addr, m_sig_info->si_code ); - break; - } - break; - - case SIGFPE: - switch( m_sig_info->si_code ) { - case FPE_INTDIV: - report_error( execution_exception::system_error, - "signal: integer divide by zero; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - case FPE_INTOVF: - report_error( execution_exception::system_error, - "signal: integer overflow; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - case FPE_FLTDIV: - report_error( execution_exception::system_error, - "signal: floating point divide by zero; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - case FPE_FLTOVF: - report_error( execution_exception::system_error, - "signal: floating point overflow; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - case FPE_FLTUND: - report_error( execution_exception::system_error, - "signal: floating point underflow; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - case FPE_FLTRES: - report_error( execution_exception::system_error, - "signal: floating point inexact result; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - case FPE_FLTINV: - report_error( execution_exception::system_error, - "signal: invalid floating point operation; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - case FPE_FLTSUB: - report_error( execution_exception::system_error, - "signal: subscript out of range; address of failing instruction: 0x%08lx", - m_sig_info->si_addr ); - break; - default: - report_error( execution_exception::system_error, - "signal: SIGFPE, si_code: %d (errnoneous arithmetic operations; address of failing instruction: 0x%08lx)", - m_sig_info->si_addr, m_sig_info->si_code ); - break; - } - break; - - case SIGSEGV: - switch( m_sig_info->si_code ) { -#ifndef BOOST_TEST_LIMITED_SIGNAL_DETAILS - case SEGV_MAPERR: - report_error( execution_exception::system_fatal_error, - "memory access violation at address: 0x%08lx: no mapping at fault address", - m_sig_info->si_addr ); - break; - case SEGV_ACCERR: - report_error( execution_exception::system_fatal_error, - "memory access violation at address: 0x%08lx: invalid permissions", - m_sig_info->si_addr ); - break; -#endif - default: - report_error( execution_exception::system_fatal_error, - "signal: SIGSEGV, si_code: %d (memory access violation at address: 0x%08lx)", - m_sig_info->si_addr, m_sig_info->si_code ); - break; - } - break; - - case SIGBUS: - switch( m_sig_info->si_code ) { -#ifndef BOOST_TEST_LIMITED_SIGNAL_DETAILS - case BUS_ADRALN: - report_error( execution_exception::system_fatal_error, - "memory access violation at address: 0x%08lx: invalid address alignment", - m_sig_info->si_addr ); - break; - case BUS_ADRERR: - report_error( execution_exception::system_fatal_error, - "memory access violation at address: 0x%08lx: non-existent physical address", - m_sig_info->si_addr ); - break; - case BUS_OBJERR: - report_error( execution_exception::system_fatal_error, - "memory access violation at address: 0x%08lx: object specific hardware error", - m_sig_info->si_addr ); - break; -#endif - default: - report_error( execution_exception::system_fatal_error, - "signal: SIGSEGV, si_code: %d (memory access violation at address: 0x%08lx)", - m_sig_info->si_addr, m_sig_info->si_code ); - break; - } - break; - -#if defined(BOOST_TEST_CATCH_SIGPOLL) - - case SIGPOLL: - switch( m_sig_info->si_code ) { -#ifndef BOOST_TEST_LIMITED_SIGNAL_DETAILS - case POLL_IN: - report_error( execution_exception::system_error, - "data input available; band event %d", - (int)m_sig_info->si_band ); - break; - case POLL_OUT: - report_error( execution_exception::system_error, - "output buffers available; band event %d", - (int)m_sig_info->si_band ); - break; - case POLL_MSG: - report_error( execution_exception::system_error, - "input message available; band event %d", - (int)m_sig_info->si_band ); - break; - case POLL_ERR: - report_error( execution_exception::system_error, - "i/o error; band event %d", - (int)m_sig_info->si_band ); - break; - case POLL_PRI: - report_error( execution_exception::system_error, - "high priority input available; band event %d", - (int)m_sig_info->si_band ); - break; -#if defined(POLL_ERR) && defined(POLL_HUP) && (POLL_ERR - POLL_HUP) - case POLL_HUP: - report_error( execution_exception::system_error, - "device disconnected; band event %d", - (int)m_sig_info->si_band ); - break; -#endif -#endif - default: - report_error( execution_exception::system_error, - "signal: SIGPOLL, si_code: %d (asynchronous I/O event occurred; band event %d)", - (int)m_sig_info->si_band, m_sig_info->si_code ); - break; - } - break; - -#endif - - case SIGABRT: - report_error( execution_exception::system_error, - "signal: SIGABRT (application abort requested)" ); - break; - - case SIGALRM: - report_error( execution_exception::timeout_error, - "signal: SIGALRM (timeout while executing function)" ); - break; - - default: - report_error( execution_exception::system_error, - "unrecognized signal %d", m_sig_info->si_signo ); - } -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** boost::detail::signal_action ************** // -// ************************************************************************** // - -// Forward declaration -extern "C" { -static void boost_execution_monitor_jumping_signal_handler( int sig, siginfo_t* info, void* context ); -static void boost_execution_monitor_attaching_signal_handler( int sig, siginfo_t* info, void* context ); -} - -class signal_action { - typedef struct sigaction* sigaction_ptr; -public: - //Constructor - signal_action(); - signal_action( int sig, bool install, bool attach_dbg, char* alt_stack ); - ~signal_action(); - -private: - // Data members - int m_sig; - bool m_installed; - struct sigaction m_new_action; - struct sigaction m_old_action; -}; - -//____________________________________________________________________________// - -signal_action::signal_action() -: m_installed( false ) -{} - -//____________________________________________________________________________// - -signal_action::signal_action( int sig, bool install, bool attach_dbg, char* alt_stack ) -: m_sig( sig ) -, m_installed( install ) -{ - if( !install ) - return; - - std::memset( &m_new_action, 0, sizeof(struct sigaction) ); - - BOOST_TEST_SYS_ASSERT( ::sigaction( m_sig , sigaction_ptr(), &m_new_action ) != -1 ); - - if( m_new_action.sa_sigaction || m_new_action.sa_handler ) { - m_installed = false; - return; - } - - m_new_action.sa_flags |= SA_SIGINFO; - m_new_action.sa_sigaction = attach_dbg ? &boost_execution_monitor_attaching_signal_handler - : &boost_execution_monitor_jumping_signal_handler; - BOOST_TEST_SYS_ASSERT( sigemptyset( &m_new_action.sa_mask ) != -1 ); - -#ifdef BOOST_TEST_USE_ALT_STACK - if( alt_stack ) - m_new_action.sa_flags |= SA_ONSTACK; -#endif - - BOOST_TEST_SYS_ASSERT( ::sigaction( m_sig, &m_new_action, &m_old_action ) != -1 ); -} - -//____________________________________________________________________________// - -signal_action::~signal_action() -{ - if( m_installed ) - ::sigaction( m_sig, &m_old_action , sigaction_ptr() ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** boost::detail::signal_handler ************** // -// ************************************************************************** // - -class signal_handler { -public: - // Constructor - explicit signal_handler( bool catch_system_errors, bool detect_fpe, unsigned timeout, bool attach_dbg, char* alt_stack ); - - // Destructor - ~signal_handler(); - - // access methods - static sigjmp_buf& jump_buffer() - { - assert( !!s_active_handler ); - - return s_active_handler->m_sigjmp_buf; - } - - static system_signal_exception& sys_sig() - { - assert( !!s_active_handler ); - - return s_active_handler->m_sys_sig; - } - -private: - // Data members - signal_handler* m_prev_handler; - unsigned m_timeout; - - // Note: We intentionality do not catch SIGCHLD. Users have to deal with it themselves - signal_action m_ILL_action; - signal_action m_FPE_action; - signal_action m_SEGV_action; - signal_action m_BUS_action; - signal_action m_CHLD_action; - signal_action m_POLL_action; - signal_action m_ABRT_action; - signal_action m_ALRM_action; - - sigjmp_buf m_sigjmp_buf; - system_signal_exception m_sys_sig; - - static signal_handler* s_active_handler; -}; - -// !! need to be placed in thread specific storage -typedef signal_handler* signal_handler_ptr; -signal_handler* signal_handler::s_active_handler = signal_handler_ptr(); - -//____________________________________________________________________________// - -signal_handler::signal_handler( bool catch_system_errors, bool detect_fpe, unsigned timeout, bool attach_dbg, char* alt_stack ) -: m_prev_handler( s_active_handler ) -, m_timeout( timeout ) -, m_ILL_action ( SIGILL , catch_system_errors, attach_dbg, alt_stack ) -, m_FPE_action ( SIGFPE , detect_fpe , attach_dbg, alt_stack ) -, m_SEGV_action( SIGSEGV, catch_system_errors, attach_dbg, alt_stack ) -, m_BUS_action ( SIGBUS , catch_system_errors, attach_dbg, alt_stack ) -#ifdef BOOST_TEST_CATCH_SIGPOLL -, m_POLL_action( SIGPOLL, catch_system_errors, attach_dbg, alt_stack ) -#endif -, m_ABRT_action( SIGABRT, catch_system_errors, attach_dbg, alt_stack ) -, m_ALRM_action( SIGALRM, timeout > 0 , attach_dbg, alt_stack ) -{ - s_active_handler = this; - - if( m_timeout > 0 ) { - ::alarm( 0 ); - ::alarm( timeout ); - } - -#ifdef BOOST_TEST_USE_ALT_STACK - if( alt_stack ) { - stack_t sigstk; - std::memset( &sigstk, 0, sizeof(stack_t) ); - - BOOST_TEST_SYS_ASSERT( ::sigaltstack( 0, &sigstk ) != -1 ); - - if( sigstk.ss_flags & SS_DISABLE ) { - sigstk.ss_sp = alt_stack; - sigstk.ss_size = BOOST_TEST_ALT_STACK_SIZE; - sigstk.ss_flags = 0; - BOOST_TEST_SYS_ASSERT( ::sigaltstack( &sigstk, 0 ) != -1 ); - } - } -#endif -} - -//____________________________________________________________________________// - -signal_handler::~signal_handler() -{ - assert( s_active_handler == this ); - - if( m_timeout > 0 ) - ::alarm( 0 ); - -#ifdef BOOST_TEST_USE_ALT_STACK -#ifdef __GNUC__ - // We shouldn't need to explicitly initialize all the members here, - // but gcc warns if we don't, so add initializers for each of the - // members specified in the POSIX std: - stack_t sigstk = { 0, 0, 0 }; -#else - stack_t sigstk = { }; -#endif - - sigstk.ss_size = MINSIGSTKSZ; - sigstk.ss_flags = SS_DISABLE; - if( ::sigaltstack( &sigstk, 0 ) == -1 ) { - int error_n = errno; - std::cerr << "******** errors disabling the alternate stack:" << std::endl - << "\t#error:" << error_n << std::endl - << "\t" << std::strerror( error_n ) << std::endl; - } -#endif - - s_active_handler = m_prev_handler; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** execution_monitor_signal_handler ************** // -// ************************************************************************** // - -extern "C" { - -static void boost_execution_monitor_jumping_signal_handler( int sig, siginfo_t* info, void* context ) -{ - signal_handler::sys_sig()( info, context ); - - siglongjmp( signal_handler::jump_buffer(), sig ); -} - -//____________________________________________________________________________// - -static void boost_execution_monitor_attaching_signal_handler( int sig, siginfo_t* info, void* context ) -{ - if( !debug::attach_debugger( false ) ) - boost_execution_monitor_jumping_signal_handler( sig, info, context ); - - // debugger attached; it will handle the signal - BOOST_TEST_SYS_ASSERT( ::signal( sig, SIG_DFL ) != SIG_ERR ); -} - -//____________________________________________________________________________// - -} - -} // namespace detail - -// ************************************************************************** // -// ************** execution_monitor::catch_signals ************** // -// ************************************************************************** // - -int -execution_monitor::catch_signals( boost::function<int ()> const& F ) -{ - using namespace detail; - -#if defined(__CYGWIN__) - p_catch_system_errors.value = false; -#endif - -#ifdef BOOST_TEST_USE_ALT_STACK - if( !!p_use_alt_stack && !m_alt_stack ) - m_alt_stack.reset( new char[BOOST_TEST_ALT_STACK_SIZE] ); -#else - p_use_alt_stack.value = false; -#endif - - signal_handler local_signal_handler( p_catch_system_errors, - p_catch_system_errors || (p_detect_fp_exceptions != fpe::BOOST_FPE_OFF), - p_timeout, - p_auto_start_dbg, - !p_use_alt_stack ? 0 : m_alt_stack.get() ); - - if( !sigsetjmp( signal_handler::jump_buffer(), 1 ) ) - return detail::do_invoke( m_custom_translators , F ); - else - BOOST_TEST_I_THROW( local_signal_handler.sys_sig() ); -} - -//____________________________________________________________________________// - -#elif defined(BOOST_SEH_BASED_SIGNAL_HANDLING) - -// ************************************************************************** // -// ************** Microsoft structured exception handling ************** // -// ************************************************************************** // - -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0564)) -namespace { void _set_se_translator( void* ) {} } -#endif - -namespace detail { - -// ************************************************************************** // -// ************** boost::detail::system_signal_exception ************** // -// ************************************************************************** // - -class system_signal_exception { -public: - // Constructor - explicit system_signal_exception( execution_monitor* em ) - : m_em( em ) - , m_se_id( 0 ) - , m_fault_address( 0 ) - , m_dir( false ) - {} - - void report() const; - int operator()( unsigned id, _EXCEPTION_POINTERS* exps ); - -private: - // Data members - execution_monitor* m_em; - - unsigned m_se_id; - void* m_fault_address; - bool m_dir; -}; - -//____________________________________________________________________________// - -#if BOOST_WORKAROUND( BOOST_MSVC, <= 1310) -static void -seh_catch_preventer( unsigned /* id */, _EXCEPTION_POINTERS* /* exps */ ) -{ - throw; -} -#endif - -//____________________________________________________________________________// - -int -system_signal_exception::operator()( unsigned id, _EXCEPTION_POINTERS* exps ) -{ - const unsigned MSFT_CPP_EXCEPT = 0xE06d7363; // EMSC - - // C++ exception - allow to go through - if( id == MSFT_CPP_EXCEPT ) - return EXCEPTION_CONTINUE_SEARCH; - - // FPE detection is enabled, while system exception detection is not - check if this is actually FPE - if( !m_em->p_catch_system_errors ) { - if( !m_em->p_detect_fp_exceptions ) - return EXCEPTION_CONTINUE_SEARCH; - - switch( id ) { - case EXCEPTION_FLT_DIVIDE_BY_ZERO: - case EXCEPTION_FLT_STACK_CHECK: - case EXCEPTION_FLT_DENORMAL_OPERAND: - case EXCEPTION_FLT_INEXACT_RESULT: - case EXCEPTION_FLT_OVERFLOW: - case EXCEPTION_FLT_UNDERFLOW: - case EXCEPTION_FLT_INVALID_OPERATION: - case STATUS_FLOAT_MULTIPLE_FAULTS: - case STATUS_FLOAT_MULTIPLE_TRAPS: - break; - default: - return EXCEPTION_CONTINUE_SEARCH; - } - } - - if( !!m_em->p_auto_start_dbg && debug::attach_debugger( false ) ) { - m_em->p_catch_system_errors.value = false; -#if BOOST_WORKAROUND( BOOST_MSVC, <= 1310) - _set_se_translator( &seh_catch_preventer ); -#endif - return EXCEPTION_CONTINUE_EXECUTION; - } - - m_se_id = id; - if( m_se_id == EXCEPTION_ACCESS_VIOLATION && exps->ExceptionRecord->NumberParameters == 2 ) { - m_fault_address = (void*)exps->ExceptionRecord->ExceptionInformation[1]; - m_dir = exps->ExceptionRecord->ExceptionInformation[0] == 0; - } - - return EXCEPTION_EXECUTE_HANDLER; -} - -//____________________________________________________________________________// - -void -system_signal_exception::report() const -{ - switch( m_se_id ) { - // cases classified as system_fatal_error - case EXCEPTION_ACCESS_VIOLATION: { - if( !m_fault_address ) - detail::report_error( execution_exception::system_fatal_error, "memory access violation" ); - else - detail::report_error( - execution_exception::system_fatal_error, - "memory access violation occurred at address 0x%08lx, while attempting to %s", - m_fault_address, - m_dir ? " read inaccessible data" - : " write to an inaccessible (or protected) address" - ); - break; - } - - case EXCEPTION_ILLEGAL_INSTRUCTION: - detail::report_error( execution_exception::system_fatal_error, "illegal instruction" ); - break; - - case EXCEPTION_PRIV_INSTRUCTION: - detail::report_error( execution_exception::system_fatal_error, "tried to execute an instruction whose operation is not allowed in the current machine mode" ); - break; - - case EXCEPTION_IN_PAGE_ERROR: - detail::report_error( execution_exception::system_fatal_error, "access to a memory page that is not present" ); - break; - - case EXCEPTION_STACK_OVERFLOW: - detail::report_error( execution_exception::system_fatal_error, "stack overflow" ); - break; - - case EXCEPTION_NONCONTINUABLE_EXCEPTION: - detail::report_error( execution_exception::system_fatal_error, "tried to continue execution after a non continuable exception occurred" ); - break; - - // cases classified as (non-fatal) system_trap - case EXCEPTION_DATATYPE_MISALIGNMENT: - detail::report_error( execution_exception::system_error, "data misalignment" ); - break; - - case EXCEPTION_INT_DIVIDE_BY_ZERO: - detail::report_error( execution_exception::system_error, "integer divide by zero" ); - break; - - case EXCEPTION_INT_OVERFLOW: - detail::report_error( execution_exception::system_error, "integer overflow" ); - break; - - case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: - detail::report_error( execution_exception::system_error, "array bounds exceeded" ); - break; - - case EXCEPTION_FLT_DIVIDE_BY_ZERO: - detail::report_error( execution_exception::system_error, "floating point divide by zero" ); - break; - - case EXCEPTION_FLT_STACK_CHECK: - detail::report_error( execution_exception::system_error, - "stack overflowed or underflowed as the result of a floating-point operation" ); - break; - - case EXCEPTION_FLT_DENORMAL_OPERAND: - detail::report_error( execution_exception::system_error, - "operand of floating point operation is denormal" ); - break; - - case EXCEPTION_FLT_INEXACT_RESULT: - detail::report_error( execution_exception::system_error, - "result of a floating-point operation cannot be represented exactly" ); - break; - - case EXCEPTION_FLT_OVERFLOW: - detail::report_error( execution_exception::system_error, - "exponent of a floating-point operation is greater than the magnitude allowed by the corresponding type" ); - break; - - case EXCEPTION_FLT_UNDERFLOW: - detail::report_error( execution_exception::system_error, - "exponent of a floating-point operation is less than the magnitude allowed by the corresponding type" ); - break; - - case EXCEPTION_FLT_INVALID_OPERATION: - detail::report_error( execution_exception::system_error, "floating point error" ); - break; - - case STATUS_FLOAT_MULTIPLE_FAULTS: - detail::report_error( execution_exception::system_error, "multiple floating point errors" ); - break; - - case STATUS_FLOAT_MULTIPLE_TRAPS: - detail::report_error( execution_exception::system_error, "multiple floating point errors" ); - break; - - case EXCEPTION_BREAKPOINT: - detail::report_error( execution_exception::system_error, "breakpoint encountered" ); - break; - - default: - detail::report_error( execution_exception::system_error, "unrecognized exception. Id: 0x%08lx", m_se_id ); - break; - } -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** assert_reporting_function ************** // -// ************************************************************************** // - -int BOOST_TEST_CALL_DECL -assert_reporting_function( int reportType, char* userMessage, int* ) -{ - // write this way instead of switch to avoid unreachable statements - if( reportType == BOOST_TEST_CRT_ASSERT || reportType == BOOST_TEST_CRT_ERROR ) - detail::report_error( reportType == BOOST_TEST_CRT_ASSERT ? execution_exception::user_error : execution_exception::system_error, userMessage ); - - return 0; -} // assert_reporting_function - -//____________________________________________________________________________// - -void BOOST_TEST_CALL_DECL -invalid_param_handler( wchar_t const* /* expr */, - wchar_t const* /* func */, - wchar_t const* /* file */, - unsigned /* line */, - uintptr_t /* reserved */) -{ - detail::report_error( execution_exception::user_error, - "Invalid parameter detected by C runtime library" ); -} - -//____________________________________________________________________________// - -} // namespace detail - -// ************************************************************************** // -// ************** execution_monitor::catch_signals ************** // -// ************************************************************************** // - -int -execution_monitor::catch_signals( boost::function<int ()> const& F ) -{ - _invalid_parameter_handler old_iph = _invalid_parameter_handler(); - BOOST_TEST_CRT_HOOK_TYPE old_crt_hook = 0; - - if( p_catch_system_errors ) { - old_crt_hook = BOOST_TEST_CRT_SET_HOOK( &detail::assert_reporting_function ); - - old_iph = _set_invalid_parameter_handler( - reinterpret_cast<_invalid_parameter_handler>( &detail::invalid_param_handler ) ); - } else if( !p_detect_fp_exceptions ) { -#if BOOST_WORKAROUND( BOOST_MSVC, <= 1310) - _set_se_translator( &detail::seh_catch_preventer ); -#endif - } - - detail::system_signal_exception SSE( this ); - - int ret_val = 0; - // clang windows workaround: this not available in __finally scope - bool l_catch_system_errors = p_catch_system_errors; - - __try { - __try { - ret_val = detail::do_invoke( m_custom_translators, F ); - } - __except( SSE( GetExceptionCode(), GetExceptionInformation() ) ) { - throw SSE; - } - } - __finally { - if( l_catch_system_errors ) { - BOOST_TEST_CRT_SET_HOOK( old_crt_hook ); - - _set_invalid_parameter_handler( old_iph ); - } - } - - return ret_val; -} - -//____________________________________________________________________________// - -#else // default signal handler - -namespace detail { - -class system_signal_exception { -public: - void report() const {} -}; - -} // namespace detail - -int -execution_monitor::catch_signals( boost::function<int ()> const& F ) -{ - return detail::do_invoke( m_custom_translators , F ); -} - -//____________________________________________________________________________// - -#endif // choose signal handler - -// ************************************************************************** // -// ************** execution_monitor ************** // -// ************************************************************************** // - -execution_monitor::execution_monitor() -: p_catch_system_errors( true ) -, p_auto_start_dbg( false ) -, p_timeout( 0 ) -, p_use_alt_stack( true ) -, p_detect_fp_exceptions( fpe::BOOST_FPE_OFF ) -{} - -//____________________________________________________________________________// - -int -execution_monitor::execute( boost::function<int ()> const& F ) -{ - if( debug::under_debugger() ) - p_catch_system_errors.value = false; - - BOOST_TEST_I_TRY { - detail::fpe_except_guard G( p_detect_fp_exceptions ); - unit_test::ut_detail::ignore_unused_variable_warning( G ); - - return catch_signals( F ); - } - -#ifndef BOOST_NO_EXCEPTIONS - - // Catch-clause reference arguments are a bit different from function - // arguments (ISO 15.3 paragraphs 18 & 19). Apparently const isn't - // required. Programmers ask for const anyhow, so we supply it. That's - // easier than answering questions about non-const usage. - - catch( char const* ex ) - { detail::report_error( execution_exception::cpp_exception_error, - "C string: %s", ex ); } - catch( std::string const& ex ) - { detail::report_error( execution_exception::cpp_exception_error, - "std::string: %s", ex.c_str() ); } - - // boost::exception (before std::exception, with extended diagnostic) - catch( boost::exception const& ex ) - { detail::report_error( execution_exception::cpp_exception_error, - &ex, -#if defined(BOOST_NO_TYPEID) || defined(BOOST_NO_RTTI) - "unknown boost::exception" ); } -#else - boost::diagnostic_information(ex).c_str() ); } -#endif - - // std:: exceptions -#if defined(BOOST_NO_TYPEID) || defined(BOOST_NO_RTTI) -#define CATCH_AND_REPORT_STD_EXCEPTION( ex_name ) \ - catch( ex_name const& ex ) \ - { detail::report_error( execution_exception::cpp_exception_error, \ - current_exception_cast<boost::exception const>(), \ - #ex_name ": %s", ex.what() ); } \ -/**/ -#else -#define CATCH_AND_REPORT_STD_EXCEPTION( ex_name ) \ - catch( ex_name const& ex ) \ - { detail::report_error( execution_exception::cpp_exception_error, \ - current_exception_cast<boost::exception const>(), \ - "%s: %s", detail::typeid_name(ex).c_str(), ex.what() ); } \ -/**/ -#endif - - CATCH_AND_REPORT_STD_EXCEPTION( std::bad_alloc ) - -#if BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) - CATCH_AND_REPORT_STD_EXCEPTION( std::bad_cast ) - CATCH_AND_REPORT_STD_EXCEPTION( std::bad_typeid ) -#else - CATCH_AND_REPORT_STD_EXCEPTION( std::bad_cast ) - CATCH_AND_REPORT_STD_EXCEPTION( std::bad_typeid ) -#endif - - CATCH_AND_REPORT_STD_EXCEPTION( std::bad_exception ) - CATCH_AND_REPORT_STD_EXCEPTION( std::domain_error ) - CATCH_AND_REPORT_STD_EXCEPTION( std::invalid_argument ) - CATCH_AND_REPORT_STD_EXCEPTION( std::length_error ) - CATCH_AND_REPORT_STD_EXCEPTION( std::out_of_range ) - CATCH_AND_REPORT_STD_EXCEPTION( std::range_error ) - CATCH_AND_REPORT_STD_EXCEPTION( std::overflow_error ) - CATCH_AND_REPORT_STD_EXCEPTION( std::underflow_error ) - CATCH_AND_REPORT_STD_EXCEPTION( std::logic_error ) - CATCH_AND_REPORT_STD_EXCEPTION( std::runtime_error ) - CATCH_AND_REPORT_STD_EXCEPTION( std::exception ) -#undef CATCH_AND_REPORT_STD_EXCEPTION - - // system errors - catch( system_error const& ex ) - { detail::report_error( execution_exception::cpp_exception_error, - "system_error produced by: %s: %s", ex.p_failed_exp, std::strerror( ex.p_errno ) ); } - catch( detail::system_signal_exception const& ex ) - { ex.report(); } - - // not an error - catch( execution_aborted const& ) - { return 0; } - - // just forward - catch( execution_exception const& ) - { throw; } - - // unknown error - catch( ... ) - { detail::report_error( execution_exception::cpp_exception_error, "unknown type" ); } - -#endif // !BOOST_NO_EXCEPTIONS - - return 0; // never reached; supplied to quiet compiler warnings -} // execute - -//____________________________________________________________________________// - -namespace detail { - -struct forward { - explicit forward( boost::function<void ()> const& F ) : m_F( F ) {} - - int operator()() { m_F(); return 0; } - - boost::function<void ()> const& m_F; -}; - -} // namespace detail -void -execution_monitor::vexecute( boost::function<void ()> const& F ) -{ - execute( detail::forward( F ) ); -} - -// ************************************************************************** // -// ************** system_error ************** // -// ************************************************************************** // - -system_error::system_error( char const* exp ) -#ifdef UNDER_CE -: p_errno( GetLastError() ) -#else -: p_errno( errno ) -#endif -, p_failed_exp( exp ) -{} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** execution_exception ************** // -// ************************************************************************** // - -execution_exception::execution_exception( error_code ec_, const_string what_msg_, location const& location_ ) -: m_error_code( ec_ ) -, m_what( what_msg_.empty() ? BOOST_TEST_L( "uncaught exception, system error or abort requested" ) : what_msg_ ) -, m_location( location_ ) -{} - -//____________________________________________________________________________// - -execution_exception::location::location( char const* file_name, size_t line_num, char const* func ) -: m_file_name( file_name ? file_name : "unknown location" ) -, m_line_num( line_num ) -, m_function( func ) -{} - -execution_exception::location::location(const_string file_name, size_t line_num, char const* func ) -: m_file_name( file_name ) -, m_line_num( line_num ) -, m_function( func ) -{} - -//____________________________________________________________________________// - -// ************************************************************************** // -// **************Floating point exception management interface ************** // -// ************************************************************************** // - -namespace fpe { - -unsigned -enable( unsigned mask ) -{ - boost::ignore_unused(mask); -#if defined(BOOST_TEST_FPE_SUPPORT_WITH_SEH__) - _clearfp(); - -#if BOOST_WORKAROUND( BOOST_MSVC, <= 1310) - unsigned old_cw = ::_controlfp( 0, 0 ); - ::_controlfp( old_cw & ~mask, BOOST_FPE_ALL ); -#else - unsigned old_cw; - if( ::_controlfp_s( &old_cw, 0, 0 ) != 0 ) - return BOOST_FPE_INV; - - // Set the control word - if( ::_controlfp_s( 0, old_cw & ~mask, BOOST_FPE_ALL ) != 0 ) - return BOOST_FPE_INV; -#endif - return ~old_cw & BOOST_FPE_ALL; - -#elif defined(BOOST_TEST_FPE_SUPPORT_WITH_GLIBC_EXTENSIONS__) - // same macro definition as in execution_monitor.hpp - if (BOOST_FPE_ALL == BOOST_FPE_OFF) - /* Not Implemented */ - return BOOST_FPE_OFF; - feclearexcept(BOOST_FPE_ALL); - int res = feenableexcept( mask ); - return res == -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res; -#else - /* Not Implemented */ - return BOOST_FPE_OFF; -#endif -} - -//____________________________________________________________________________// - -unsigned -disable( unsigned mask ) -{ - boost::ignore_unused(mask); - -#if defined(BOOST_TEST_FPE_SUPPORT_WITH_SEH__) - _clearfp(); -#if BOOST_WORKAROUND( BOOST_MSVC, <= 1310) - unsigned old_cw = ::_controlfp( 0, 0 ); - ::_controlfp( old_cw | mask, BOOST_FPE_ALL ); -#else - unsigned old_cw; - if( ::_controlfp_s( &old_cw, 0, 0 ) != 0 ) - return BOOST_FPE_INV; - - // Set the control word - if( ::_controlfp_s( 0, old_cw | mask, BOOST_FPE_ALL ) != 0 ) - return BOOST_FPE_INV; -#endif - return ~old_cw & BOOST_FPE_ALL; - -#elif defined(BOOST_TEST_FPE_SUPPORT_WITH_GLIBC_EXTENSIONS__) - if (BOOST_FPE_ALL == BOOST_FPE_OFF) - /* Not Implemented */ - return BOOST_FPE_INV; - feclearexcept(BOOST_FPE_ALL); - int res = fedisableexcept( mask ); - return res == -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res; -#else - /* Not Implemented */ - return BOOST_FPE_INV; -#endif -} - -//____________________________________________________________________________// - -} // namespace fpe - -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_EXECUTION_MONITOR_IPP_012205GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/framework.ipp b/src/third_party/boost-1.69.0/boost/test/impl/framework.ipp deleted file mode 100644 index 60ba4accfeb..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/framework.ipp +++ /dev/null @@ -1,1725 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : implements framework API - main driver for the test -// *************************************************************************** - -#ifndef BOOST_TEST_FRAMEWORK_IPP_021005GER -#define BOOST_TEST_FRAMEWORK_IPP_021005GER - -// Boost.Test -#include <boost/test/framework.hpp> -#include <boost/test/execution_monitor.hpp> -#include <boost/test/debug.hpp> -#include <boost/test/unit_test_parameters.hpp> - -#include <boost/test/unit_test_log.hpp> -#include <boost/test/unit_test_log_formatter.hpp> -#include <boost/test/unit_test_monitor.hpp> -#include <boost/test/results_collector.hpp> -#include <boost/test/progress_monitor.hpp> -#include <boost/test/results_reporter.hpp> -#include <boost/test/test_framework_init_observer.hpp> - -#include <boost/test/tree/observer.hpp> -#include <boost/test/tree/test_unit.hpp> -#include <boost/test/tree/visitor.hpp> -#include <boost/test/tree/traverse.hpp> -#include <boost/test/tree/test_case_counter.hpp> - -#if BOOST_TEST_SUPPORT_TOKEN_ITERATOR -#include <boost/test/utils/iterator/token_iterator.hpp> -#endif - -#include <boost/test/utils/foreach.hpp> -#include <boost/test/utils/basic_cstring/io.hpp> -#include <boost/test/utils/basic_cstring/compare.hpp> - -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/detail/throw_exception.hpp> - -// Boost -#include <boost/timer.hpp> -#include <boost/bind.hpp> - -// STL -#include <limits> -#include <map> -#include <set> -#include <cstdlib> -#include <ctime> -#include <numeric> -#ifdef BOOST_NO_CXX98_RANDOM_SHUFFLE -#include <iterator> -#endif - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std { using ::time; using ::srand; } -#endif - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace framework { - -namespace impl { - -// ************************************************************************** // -// ************** order detection helpers ************** // -// ************************************************************************** // - -struct order_info { - order_info() : depth(-1) {} - - int depth; - std::vector<test_unit_id> dependant_siblings; -}; - -typedef std::set<test_unit_id> tu_id_set; -typedef std::map<test_unit_id,order_info> order_info_per_tu; // !! ?? unordered map - -//____________________________________________________________________________// - -static test_unit_id -get_tu_parent( test_unit_id tu_id ) -{ - return framework::get( tu_id, TUT_ANY ).p_parent_id; -} - -//____________________________________________________________________________// - -static int -tu_depth( test_unit_id tu_id, test_unit_id master_tu_id, order_info_per_tu& tuoi ) -{ - if( tu_id == master_tu_id ) - return 0; - - order_info& info = tuoi[tu_id]; - - if( info.depth == -1 ) - info.depth = tu_depth( get_tu_parent( tu_id ), master_tu_id, tuoi ) + 1; - - return info.depth; -} - -//____________________________________________________________________________// - -static void -collect_dependant_siblings( test_unit_id from, test_unit_id to, test_unit_id master_tu_id, order_info_per_tu& tuoi ) -{ - int from_depth = tu_depth( from, master_tu_id, tuoi ); - int to_depth = tu_depth( to, master_tu_id, tuoi ); - - while(from_depth > to_depth) { - from = get_tu_parent( from ); - --from_depth; - } - - while(from_depth < to_depth) { - to = get_tu_parent( to ); - --to_depth; - } - - while(true) { - test_unit_id from_parent = get_tu_parent( from ); - test_unit_id to_parent = get_tu_parent( to ); - if( from_parent == to_parent ) - break; - from = from_parent; - to = to_parent; - } - - tuoi[from].dependant_siblings.push_back( to ); -} - -//____________________________________________________________________________// - -static counter_t -assign_sibling_rank( test_unit_id tu_id, order_info_per_tu& tuoi ) -{ - test_unit& tu = framework::get( tu_id, TUT_ANY ); - - BOOST_TEST_SETUP_ASSERT( tu.p_sibling_rank != (std::numeric_limits<counter_t>::max)(), - "Cyclic dependency detected involving test unit \"" + tu.full_name() + "\"" ); - - if( tu.p_sibling_rank != 0 ) - return tu.p_sibling_rank; - - order_info const& info = tuoi[tu_id]; - - // indicate in progress - tu.p_sibling_rank.value = (std::numeric_limits<counter_t>::max)(); - - counter_t new_rank = 1; - BOOST_TEST_FOREACH( test_unit_id, sibling_id, info.dependant_siblings ) - new_rank = (std::max)(new_rank, assign_sibling_rank( sibling_id, tuoi ) + 1); - - return tu.p_sibling_rank.value = new_rank; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** test_init call wrapper ************** // -// ************************************************************************** // - -static void -invoke_init_func( init_unit_test_func init_func ) -{ -#ifdef BOOST_TEST_ALTERNATIVE_INIT_API - BOOST_TEST_I_ASSRT( (*init_func)(), std::runtime_error( "test module initialization failed" ) ); -#else - test_suite* manual_test_units = (*init_func)( framework::master_test_suite().argc, framework::master_test_suite().argv ); - - if( manual_test_units ) - framework::master_test_suite().add( manual_test_units ); -#endif -} - -// ************************************************************************** // -// ************** name_filter ************** // -// ************************************************************************** // - -class name_filter : public test_tree_visitor { - struct component { - component( const_string name ) // has to be implicit - { - if( name == "*" ) - m_kind = SFK_ALL; - else if( first_char( name ) == '*' && last_char( name ) == '*' ) { - m_kind = SFK_SUBSTR; - m_name = name.substr( 1, name.size()-1 ); - } - else if( first_char( name ) == '*' ) { - m_kind = SFK_TRAILING; - m_name = name.substr( 1 ); - } - else if( last_char( name ) == '*' ) { - m_kind = SFK_LEADING; - m_name = name.substr( 0, name.size()-1 ); - } - else { - m_kind = SFK_MATCH; - m_name = name; - } - } - - bool pass( test_unit const& tu ) const - { - const_string name( tu.p_name ); - - switch( m_kind ) { - default: - case SFK_ALL: - return true; - case SFK_LEADING: - return name.substr( 0, m_name.size() ) == m_name; - case SFK_TRAILING: - return name.size() >= m_name.size() && name.substr( name.size() - m_name.size() ) == m_name; - case SFK_SUBSTR: - return name.find( m_name ) != const_string::npos; - case SFK_MATCH: - return m_name == tu.p_name.get(); - } - } - enum kind { SFK_ALL, SFK_LEADING, SFK_TRAILING, SFK_SUBSTR, SFK_MATCH }; - - kind m_kind; - const_string m_name; - }; - -public: - // Constructor - name_filter( test_unit_id_list& targ_list, const_string filter_expr ) : m_targ_list( targ_list ), m_depth( 0 ) - { -#ifdef BOOST_TEST_SUPPORT_TOKEN_ITERATOR - utils::string_token_iterator tit( filter_expr, (utils::dropped_delimeters = "/", - utils::kept_delimeters = utils::dt_none) ); - - while( tit != utils::string_token_iterator() ) { - m_components.push_back( - std::vector<component>( utils::string_token_iterator( *tit, (utils::dropped_delimeters = ",", - utils::kept_delimeters = utils::dt_none) ), - utils::string_token_iterator() ) ); - - ++tit; - } -#endif - } - -private: - bool filter_unit( test_unit const& tu ) - { - // skip master test suite - if( m_depth == 0 ) - return true; - - // corresponding name filters are at level m_depth-1 - std::vector<component> const& filters = m_components[m_depth-1]; - - // look for match - using namespace boost::placeholders; - return std::find_if( filters.begin(), filters.end(), bind( &component::pass, _1, boost::ref(tu) ) ) != filters.end(); - } - - // test_tree_visitor interface - virtual void visit( test_case const& tc ) - { - // make sure we only accept test cases if we match last component of the filter - if( m_depth == m_components.size() && filter_unit( tc ) ) - m_targ_list.push_back( tc.p_id ); // found a test case - } - virtual bool test_suite_start( test_suite const& ts ) - { - if( !filter_unit( ts ) ) - return false; - - if( m_depth < m_components.size() ) { - ++m_depth; - return true; - } - - m_targ_list.push_back( ts.p_id ); // found a test suite - - return false; - } - virtual void test_suite_finish( test_suite const& /*ts*/ ) - { - --m_depth; - } - - // Data members - typedef std::vector<std::vector<component> > components_per_level; - - components_per_level m_components; - test_unit_id_list& m_targ_list; - unsigned m_depth; -}; - -// ************************************************************************** // -// ************** label_filter ************** // -// ************************************************************************** // - -class label_filter : public test_tree_visitor { -public: - label_filter( test_unit_id_list& targ_list, const_string label ) - : m_targ_list( targ_list ) - , m_label( label ) - {} - -private: - // test_tree_visitor interface - virtual bool visit( test_unit const& tu ) - { - if( tu.has_label( m_label ) ) { - // found a test unit; add it to list of tu to enable with children and stop recursion in case of suites - m_targ_list.push_back( tu.p_id ); - return false; - } - - return true; - } - - // Data members - test_unit_id_list& m_targ_list; - const_string m_label; -}; - -// ************************************************************************** // -// ************** set_run_status ************** // -// ************************************************************************** // - -class set_run_status : public test_tree_visitor { -public: - explicit set_run_status( test_unit::run_status rs, test_unit_id_list* dep_collector = 0 ) - : m_new_status( rs ) - , m_dep_collector( dep_collector ) - {} - - // test_tree_visitor interface - virtual bool visit( test_unit const& tu ) - { - const_cast<test_unit&>(tu).p_run_status.value = m_new_status == test_unit::RS_INVALID ? tu.p_default_status : m_new_status; - if( m_dep_collector ) { - BOOST_TEST_FOREACH( test_unit_id, dep_id, tu.p_dependencies.get() ) { - test_unit const& dep = framework::get( dep_id, TUT_ANY ); - - if( dep.p_run_status == tu.p_run_status ) - continue; - - BOOST_TEST_FRAMEWORK_MESSAGE( "Including test " << dep.p_type_name << ' ' << dep.full_name() << - " as a dependency of test " << tu.p_type_name << ' ' << tu.full_name() ); - - m_dep_collector->push_back( dep_id ); - } - } - return true; - } - -private: - // Data members - test_unit::run_status m_new_status; - test_unit_id_list* m_dep_collector; -}; - -// ************************************************************************** // -// ************** parse_filters ************** // -// ************************************************************************** // - -static void -add_filtered_test_units( test_unit_id master_tu_id, const_string filter, test_unit_id_list& targ ) -{ - // Choose between two kinds of filters - if( filter[0] == '@' ) { - filter.trim_left( 1 ); - label_filter lf( targ, filter ); - traverse_test_tree( master_tu_id, lf, true ); - } - else { - name_filter nf( targ, filter ); - traverse_test_tree( master_tu_id, nf, true ); - } -} - -//____________________________________________________________________________// - -static bool -parse_filters( test_unit_id master_tu_id, test_unit_id_list& tu_to_enable, test_unit_id_list& tu_to_disable ) -{ - // 10. collect tu to enable and disable based on filters - bool had_selector_filter = false; - - std::vector<std::string> const& filters = runtime_config::get<std::vector<std::string> >( runtime_config::btrt_run_filters ); - - BOOST_TEST_FOREACH( const_string, filter, filters ) { - BOOST_TEST_SETUP_ASSERT( !filter.is_empty(), "Invalid filter specification" ); - - // each --run_test command may also be separated by a ':' (environment variable) - utils::string_token_iterator t_filter_it( filter, (utils::dropped_delimeters = ":", - utils::kept_delimeters = utils::dt_none) ); - - while( t_filter_it != utils::string_token_iterator() ) { - const_string filter_token = *t_filter_it; - - enum { SELECTOR, ENABLER, DISABLER } filter_type = SELECTOR; - - // 11. Deduce filter type - if( filter_token[0] == '!' || filter_token[0] == '+' ) { - filter_type = filter_token[0] == '+' ? ENABLER : DISABLER; - filter_token.trim_left( 1 ); - BOOST_TEST_SETUP_ASSERT( !filter_token.is_empty(), "Invalid filter specification" ); - } - - had_selector_filter |= filter_type == SELECTOR; - - // 12. Add test units to corresponding list - switch( filter_type ) { - case SELECTOR: - case ENABLER: add_filtered_test_units( master_tu_id, filter_token, tu_to_enable ); break; - case DISABLER: add_filtered_test_units( master_tu_id, filter_token, tu_to_disable ); break; - } - - ++t_filter_it; - } - } - - return had_selector_filter; -} - -//____________________________________________________________________________// - -#ifdef BOOST_NO_CXX98_RANDOM_SHUFFLE - -// a poor man's implementation of random_shuffle -template< class RandomIt, class RandomFunc > -void random_shuffle( RandomIt first, RandomIt last, RandomFunc &r ) -{ - typedef typename std::iterator_traits<RandomIt>::difference_type difference_type; - difference_type n = last - first; - for (difference_type i = n-1; i > 0; --i) { - difference_type j = r(i+1); - if (j != i) { - using std::swap; - swap(first[i], first[j]); - } - } -} - -#endif - - -// A simple handle for registering the global fixtures to the master test suite -// without deleting an existing static object (the global fixture itself) when the program -// terminates (shared_ptr). -class global_fixture_handle : public test_unit_fixture { -public: - global_fixture_handle(test_unit_fixture* fixture) : m_global_fixture(fixture) {} - ~global_fixture_handle() {} - - virtual void setup() { - m_global_fixture->setup(); - } - virtual void teardown() { - m_global_fixture->teardown(); - } - -private: - test_unit_fixture* m_global_fixture; -}; - - -} // namespace impl - -// ************************************************************************** // -// ************** framework::state ************** // -// ************************************************************************** // - -unsigned const TIMEOUT_EXCEEDED = static_cast<unsigned>( -1 ); - -class state { -public: - state() - : m_master_test_suite( 0 ) - , m_curr_test_unit( INV_TEST_UNIT_ID ) - , m_next_test_case_id( MIN_TEST_CASE_ID ) - , m_next_test_suite_id( MIN_TEST_SUITE_ID ) - , m_test_in_progress( false ) - , m_context_idx( 0 ) - , m_log_sinks( ) - , m_report_sink( std::cerr ) - { - } - - ~state() { clear(); } - - void clear() - { - while( !m_test_units.empty() ) { - test_unit_store::value_type const& tu = *m_test_units.begin(); - test_unit const* tu_ptr = tu.second; - - // the delete will erase this element from map - if( ut_detail::test_id_2_unit_type( tu.second->p_id ) == TUT_SUITE ) - delete static_cast<test_suite const*>(tu_ptr); - else - delete static_cast<test_case const*>(tu_ptr); - } - } - - void set_tu_id( test_unit& tu, test_unit_id id ) { tu.p_id.value = id; } - - ////////////////////////////////////////////////////////////////// - - // Validates the dependency graph and deduces the sibling dependency rank for each child - void deduce_siblings_order( test_unit_id tu_id, test_unit_id master_tu_id, impl::order_info_per_tu& tuoi ) - { - test_unit& tu = framework::get( tu_id, TUT_ANY ); - - // collect all sibling dependancy from tu own list - BOOST_TEST_FOREACH( test_unit_id, dep_id, tu.p_dependencies.get() ) - collect_dependant_siblings( tu_id, dep_id, master_tu_id, tuoi ); - - if( tu.p_type != TUT_SUITE ) - return; - - test_suite& ts = static_cast<test_suite&>(tu); - - // recursive call to children first - BOOST_TEST_FOREACH( test_unit_id, chld_id, ts.m_children ) - deduce_siblings_order( chld_id, master_tu_id, tuoi ); - - ts.m_ranked_children.clear(); - BOOST_TEST_FOREACH( test_unit_id, chld_id, ts.m_children ) { - counter_t rank = assign_sibling_rank( chld_id, tuoi ); - ts.m_ranked_children.insert( std::make_pair( rank, chld_id ) ); - } - } - - ////////////////////////////////////////////////////////////////// - - // Finalize default run status: - // 1) inherit run status from parent where applicable - // 2) if any of test units in test suite enabled enable it as well - bool finalize_default_run_status( test_unit_id tu_id, test_unit::run_status parent_status ) - { - test_unit& tu = framework::get( tu_id, TUT_ANY ); - - if( tu.p_default_status == test_suite::RS_INHERIT ) - tu.p_default_status.value = parent_status; - - // go through list of children - if( tu.p_type == TUT_SUITE ) { - bool has_enabled_child = false; - BOOST_TEST_FOREACH( test_unit_id, chld_id, static_cast<test_suite const&>(tu).m_children ) - has_enabled_child |= finalize_default_run_status( chld_id, tu.p_default_status ); - - tu.p_default_status.value = has_enabled_child ? test_suite::RS_ENABLED : test_suite::RS_DISABLED; - } - - return tu.p_default_status == test_suite::RS_ENABLED; - } - - ////////////////////////////////////////////////////////////////// - - bool finalize_run_status( test_unit_id tu_id ) - { - test_unit& tu = framework::get( tu_id, TUT_ANY ); - - // go through list of children - if( tu.p_type == TUT_SUITE ) { - bool has_enabled_child = false; - BOOST_TEST_FOREACH( test_unit_id, chld_id, static_cast<test_suite const&>(tu).m_children) - has_enabled_child |= finalize_run_status( chld_id ); - - tu.p_run_status.value = has_enabled_child ? test_suite::RS_ENABLED : test_suite::RS_DISABLED; - } - - return tu.is_enabled(); - } - - ////////////////////////////////////////////////////////////////// - - void deduce_run_status( test_unit_id master_tu_id ) - { - using namespace framework::impl; - test_unit_id_list tu_to_enable; - test_unit_id_list tu_to_disable; - - // 10. If there are any filters supplied, figure out lists of test units to enable/disable - bool had_selector_filter = !runtime_config::get<std::vector<std::string> >( runtime_config::btrt_run_filters ).empty() && - parse_filters( master_tu_id, tu_to_enable, tu_to_disable ); - - // 20. Set the stage: either use default run status or disable all test units - set_run_status initial_setter( had_selector_filter ? test_unit::RS_DISABLED : test_unit::RS_INVALID ); - traverse_test_tree( master_tu_id, initial_setter, true ); - - // 30. Apply all selectors and enablers. - while( !tu_to_enable.empty() ) { - test_unit& tu = framework::get( tu_to_enable.back(), TUT_ANY ); - - tu_to_enable.pop_back(); - - // 35. Ignore test units which are already enabled - if( tu.is_enabled() ) - continue; - - // set new status and add all dependencies into tu_to_enable - set_run_status enabler( test_unit::RS_ENABLED, &tu_to_enable ); - traverse_test_tree( tu.p_id, enabler, true ); - - // Add the dependencies of the parent suites, see trac #13149 - test_unit_id parent_id = tu.p_parent_id; - while( parent_id != INV_TEST_UNIT_ID - && parent_id != master_tu_id ) - { - // we do not use the traverse_test_tree as otherwise it would enable the sibblings and subtree - // of the test case we want to enable (we need to enable the parent suites and their dependencies only) - // the parent_id needs to be enabled in order to be properly parsed by finalize_run_status, the visit - // does the job - test_unit& tu_parent = framework::get( parent_id, TUT_ANY ); - enabler.visit( tu_parent ); - parent_id = tu_parent.p_parent_id; - } - } - - // 40. Apply all disablers - while( !tu_to_disable.empty() ) { - test_unit const& tu = framework::get( tu_to_disable.back(), TUT_ANY ); - - tu_to_disable.pop_back(); - - // 35. Ignore test units which already disabled - if( !tu.is_enabled() ) - continue; - - set_run_status disabler( test_unit::RS_DISABLED ); - traverse_test_tree( tu.p_id, disabler, true ); - } - - // 50. Make sure parents of enabled test units are also enabled - finalize_run_status( master_tu_id ); - } - - ////////////////////////////////////////////////////////////////// - - typedef unit_test_monitor_t::error_level execution_result; - - // Random generator using the std::rand function (seeded prior to the call) - struct random_generator_helper { - size_t operator()(size_t i) const { - return std::rand() % i; - } - }; - - // Executes the test tree with the root at specified test unit - execution_result execute_test_tree( test_unit_id tu_id, - unsigned timeout = 0, - random_generator_helper const * const p_random_generator = 0) - { - test_unit const& tu = framework::get( tu_id, TUT_ANY ); - - execution_result result = unit_test_monitor_t::test_ok; - - if( !tu.is_enabled() ) - return result; - - // 10. Check preconditions, including zero time left for execution and - // successful execution of all dependencies - if( timeout == TIMEOUT_EXCEEDED ) { - // notify all observers about skipped test unit - BOOST_TEST_FOREACH( test_observer*, to, m_observers ) - to->test_unit_skipped( tu, "timeout for the test unit is exceeded" ); - - return unit_test_monitor_t::os_timeout; - } - else if( timeout == 0 || timeout > tu.p_timeout ) // deduce timeout for this test unit - timeout = tu.p_timeout; - - test_tools::assertion_result const precondition_res = tu.check_preconditions(); - if( !precondition_res ) { - // notify all observers about skipped test unit - BOOST_TEST_FOREACH( test_observer*, to, m_observers ) - to->test_unit_skipped( tu, precondition_res.message() ); - - // It is not an error to skip the test if any of the parent tests - // have failed. This one should be reported as skipped as if it was - // disabled - return unit_test_monitor_t::test_ok; - } - - // 20. Notify all observers about the start of the test unit - BOOST_TEST_FOREACH( test_observer*, to, m_observers ) - to->test_unit_start( tu ); - - // 30. Execute setup fixtures if any; any failure here leads to test unit abortion - BOOST_TEST_FOREACH( test_unit_fixture_ptr, F, tu.p_fixtures.get() ) { - ut_detail::test_unit_id_restore restore_current_test_unit(m_curr_test_unit, tu.p_id); - result = unit_test_monitor.execute_and_translate( boost::bind( &test_unit_fixture::setup, F ) ); - if( result != unit_test_monitor_t::test_ok ) - break; - test_results const& test_rslt = unit_test::results_collector.results( m_curr_test_unit ); - if( test_rslt.aborted() ) { - result = unit_test_monitor_t::test_setup_failure; - break; - } - } - - // This is the time we are going to spend executing the test unit - unsigned long elapsed = 0; - - if( result == unit_test_monitor_t::test_ok ) { - // 40. We are going to time the execution - boost::timer tu_timer; - - // we pass the random generator - const random_generator_helper& rand_gen = p_random_generator ? *p_random_generator : random_generator_helper(); - - if( tu.p_type == TUT_SUITE ) { - test_suite const& ts = static_cast<test_suite const&>( tu ); - - if( runtime_config::get<unsigned>( runtime_config::btrt_random_seed ) == 0 ) { - typedef std::pair<counter_t,test_unit_id> value_type; - - BOOST_TEST_FOREACH( value_type, chld, ts.m_ranked_children ) { - unsigned chld_timeout = child_timeout( timeout, tu_timer.elapsed() ); - - result = (std::min)( result, execute_test_tree( chld.second, chld_timeout, &rand_gen ) ); - - if( unit_test_monitor.is_critical_error( result ) ) - break; - } - } - else { - // Go through ranges of children with the same dependency rank and shuffle them - // independently. Execute each subtree in this order - test_unit_id_list children_with_the_same_rank; - - typedef test_suite::children_per_rank::const_iterator it_type; - it_type it = ts.m_ranked_children.begin(); - while( it != ts.m_ranked_children.end() ) { - children_with_the_same_rank.clear(); - - std::pair<it_type,it_type> range = ts.m_ranked_children.equal_range( it->first ); - it = range.first; - while( it != range.second ) { - children_with_the_same_rank.push_back( it->second ); - it++; - } - -#ifdef BOOST_NO_CXX98_RANDOM_SHUFFLE - impl::random_shuffle( children_with_the_same_rank.begin(), children_with_the_same_rank.end(), rand_gen ); -#else - std::random_shuffle( children_with_the_same_rank.begin(), children_with_the_same_rank.end(), rand_gen ); -#endif - - BOOST_TEST_FOREACH( test_unit_id, chld, children_with_the_same_rank ) { - unsigned chld_timeout = child_timeout( timeout, tu_timer.elapsed() ); - - result = (std::min)( result, execute_test_tree( chld, chld_timeout, &rand_gen ) ); - - if( unit_test_monitor.is_critical_error( result ) ) - break; - } - } - } - - elapsed = static_cast<unsigned long>( tu_timer.elapsed() * 1e6 ); - } - else { // TUT_CASE - test_case const& tc = static_cast<test_case const&>( tu ); - - // setup contexts - m_context_idx = 0; - - // setup current test case - ut_detail::test_unit_id_restore restore_current_test_unit(m_curr_test_unit, tc.p_id); - - // execute the test case body - result = unit_test_monitor.execute_and_translate( tc.p_test_func, timeout ); - elapsed = static_cast<unsigned long>( tu_timer.elapsed() * 1e6 ); - - // cleanup leftover context - m_context.clear(); - - // restore state (scope exit) and abort if necessary - } - } - - // if run error is critical skip teardown, who knows what the state of the program at this point - if( !unit_test_monitor.is_critical_error( result ) ) { - // execute teardown fixtures if any in reverse order - BOOST_TEST_REVERSE_FOREACH( test_unit_fixture_ptr, F, tu.p_fixtures.get() ) { - ut_detail::test_unit_id_restore restore_current_test_unit(m_curr_test_unit, tu.p_id); - result = (std::min)( result, unit_test_monitor.execute_and_translate( boost::bind( &test_unit_fixture::teardown, F ), 0 ) ); - - if( unit_test_monitor.is_critical_error( result ) ) - break; - } - } - - // notify all observers about abortion - if( unit_test_monitor.is_critical_error( result ) ) { - BOOST_TEST_FOREACH( test_observer*, to, m_observers ) - to->test_aborted(); - } - - // notify all observers about completion - BOOST_TEST_REVERSE_FOREACH( test_observer*, to, m_observers ) - to->test_unit_finish( tu, elapsed ); - - return result; - } - - ////////////////////////////////////////////////////////////////// - - unsigned child_timeout( unsigned tu_timeout, double elapsed ) - { - if( tu_timeout == 0U ) - return 0U; - - unsigned elpsed_sec = static_cast<unsigned>(elapsed); // rounding to number of whole seconds - - return tu_timeout > elpsed_sec ? tu_timeout - elpsed_sec : TIMEOUT_EXCEEDED; - } - - struct priority_order { - bool operator()( test_observer* lhs, test_observer* rhs ) const - { - return (lhs->priority() < rhs->priority()) || ((lhs->priority() == rhs->priority()) && (lhs < rhs)); - } - }; - - // Data members - typedef std::map<test_unit_id,test_unit*> test_unit_store; - typedef std::set<test_observer*,priority_order> observer_store; - struct context_frame { - context_frame( std::string const& d, int id, bool sticky ) - : descr( d ) - , frame_id( id ) - , is_sticky( sticky ) - {} - - std::string descr; - int frame_id; - bool is_sticky; - }; - typedef std::vector<context_frame> context_data; - - master_test_suite_t* m_master_test_suite; - std::vector<test_suite*> m_auto_test_suites; - - test_unit_id m_curr_test_unit; - test_unit_store m_test_units; - - test_unit_id m_next_test_case_id; - test_unit_id m_next_test_suite_id; - - bool m_test_in_progress; - - observer_store m_observers; - context_data m_context; - int m_context_idx; - - std::set<test_unit_fixture*> m_global_fixtures; - - boost::execution_monitor m_aux_em; - - std::map<output_format, runtime_config::stream_holder> m_log_sinks; - runtime_config::stream_holder m_report_sink; -}; - -//____________________________________________________________________________// - -namespace impl { -namespace { - -#if defined(__CYGWIN__) -framework::state& s_frk_state() { static framework::state* the_inst = 0; if(!the_inst) the_inst = new framework::state; return *the_inst; } -#else -framework::state& s_frk_state() { static framework::state the_inst; return the_inst; } -#endif - -} // local namespace - -void -setup_for_execution( test_unit const& tu ) -{ - s_frk_state().deduce_run_status( tu.p_id ); -} - -struct sum_to_first_only { - sum_to_first_only() : is_first(true) {} - template <class T, class U> - T operator()(T const& l_, U const& r_) { - if(is_first) { - is_first = false; - return l_ + r_.first; - } - return l_ + ", " + r_.first; - } - - bool is_first; -}; - -void -shutdown_loggers_and_reports() -{ - s_frk_state().m_log_sinks.clear(); - s_frk_state().m_report_sink.setup( "stderr" ); -} - -void -setup_loggers() -{ - - BOOST_TEST_I_TRY { - -#ifdef BOOST_TEST_SUPPORT_TOKEN_ITERATOR - bool has_combined_logger = runtime_config::has( runtime_config::btrt_combined_logger ) - && !runtime_config::get< std::vector<std::string> >( runtime_config::btrt_combined_logger ).empty(); -#else - bool has_combined_logger = false; -#endif - - if( !has_combined_logger ) { - unit_test_log.set_threshold_level( runtime_config::get<log_level>( runtime_config::btrt_log_level ) ); - const output_format format = runtime_config::get<output_format>( runtime_config::btrt_log_format ); - unit_test_log.set_format( format ); - - runtime_config::stream_holder& stream_logger = s_frk_state().m_log_sinks[format]; - if( runtime_config::has( runtime_config::btrt_log_sink ) ) { - // we remove all streams in this case, so we do not specify the format - boost::function< void () > log_cleaner = boost::bind( &unit_test_log_t::set_stream, - &unit_test_log, - boost::ref(std::cout) - ); - stream_logger.setup( runtime_config::get<std::string>( runtime_config::btrt_log_sink ), - log_cleaner ); - } - unit_test_log.set_stream( stream_logger.ref() ); - } - else - { - - const std::vector<std::string>& v_output_format = runtime_config::get< std::vector<std::string> >( runtime_config::btrt_combined_logger ) ; - - static const std::pair<const char*, log_level> all_log_levels[] = { - std::make_pair( "all" , log_successful_tests ), - std::make_pair( "success" , log_successful_tests ), - std::make_pair( "test_suite" , log_test_units ), - std::make_pair( "unit_scope" , log_test_units ), - std::make_pair( "message" , log_messages ), - std::make_pair( "warning" , log_warnings ), - std::make_pair( "error" , log_all_errors ), - std::make_pair( "cpp_exception" , log_cpp_exception_errors ), - std::make_pair( "system_error" , log_system_errors ), - std::make_pair( "fatal_error" , log_fatal_errors ), - std::make_pair( "nothing" , log_nothing ) - }; - - static const std::pair<const char*, output_format> all_formats[] = { - std::make_pair( "HRF" , OF_CLF ), - std::make_pair( "CLF" , OF_CLF ), - std::make_pair( "XML" , OF_XML ), - std::make_pair( "JUNIT", OF_JUNIT ) - }; - - - bool is_first = true; - - BOOST_TEST_FOREACH( const_string, current_multi_config, v_output_format ) { - - #ifdef BOOST_TEST_SUPPORT_TOKEN_ITERATOR - - // ':' may be used for file names: C:/tmp/mylogsink.xml - // we merge the tokens that start with / or \ with the previous one. - std::vector<std::string> v_processed_tokens; - - { - utils::string_token_iterator current_config( current_multi_config, (utils::dropped_delimeters = ":", - utils::kept_delimeters = utils::dt_none) ); - - for( ; current_config != utils::string_token_iterator() ; ++current_config) { - std::string str_copy(current_config->begin(), current_config->end()); - if( ( str_copy[0] == '\\' || str_copy[0] == '/' ) - && v_processed_tokens.size() > 0) { - v_processed_tokens.back() += ":" + str_copy; // ':' has been eaten up - } - else { - v_processed_tokens.push_back(str_copy); - } - } - } - - BOOST_TEST_FOREACH( std::string const&, current_config, v_processed_tokens ) { - - utils::string_token_iterator current_format_specs( current_config, (utils::keep_empty_tokens, - utils::dropped_delimeters = ",", - utils::kept_delimeters = utils::dt_none) ); - - output_format format = OF_INVALID ; // default - if( current_format_specs != utils::string_token_iterator() && - current_format_specs->size() ) { - - for(size_t elem=0; elem < sizeof(all_formats)/sizeof(all_formats[0]); elem++) { - if(const_string(all_formats[elem].first) == *current_format_specs) { - format = all_formats[elem].second; - break; - } - } - } - - BOOST_TEST_I_ASSRT( format != OF_INVALID, - boost::runtime::access_to_missing_argument() - << "Unable to determine the logger type from '" - << current_config - << "'. Possible choices are: " - << std::accumulate(all_formats, - all_formats + sizeof(all_formats)/sizeof(all_formats[0]), - std::string(""), - sum_to_first_only()) - ); - - // activates this format - if( is_first ) { - unit_test_log.set_format( format ); - } - else { - unit_test_log.add_format( format ); - } - is_first = false; - - unit_test_log_formatter * const formatter = unit_test_log.get_formatter(format); - BOOST_TEST_SETUP_ASSERT( formatter, "Logger setup error" ); - - log_level formatter_log_level = invalid_log_level; - ++current_format_specs ; - if( !current_format_specs->size() ) { - formatter_log_level = formatter->get_log_level(); // default log level given by the formatter - } - else if( current_format_specs != utils::string_token_iterator() ) { - - for(size_t elem=0; elem < sizeof(all_log_levels)/sizeof(all_log_levels[0]); elem++) { - if(const_string(all_log_levels[elem].first) == *current_format_specs) { - formatter_log_level = all_log_levels[elem].second; - break; - } - } - } - - BOOST_TEST_I_ASSRT( formatter_log_level != invalid_log_level, - boost::runtime::access_to_missing_argument() - << "Unable to determine the log level from '" - << current_config - << "'. Possible choices are: " - << std::accumulate(all_log_levels, - all_log_levels + sizeof(all_log_levels)/sizeof(all_log_levels[0]), - std::string(""), - sum_to_first_only()) - ); - - unit_test_log.set_threshold_level( format, formatter_log_level ); - - runtime_config::stream_holder& stream_logger = s_frk_state().m_log_sinks[format]; - boost::function< void () > log_cleaner = boost::bind( &unit_test_log_t::set_stream, - &unit_test_log, - format, - boost::ref(std::cout) ); - if( ++current_format_specs != utils::string_token_iterator() && - current_format_specs->size() ) { - stream_logger.setup( *current_format_specs, - log_cleaner ); - } - else { - stream_logger.setup( formatter->get_default_stream_description(), - log_cleaner ); - } - unit_test_log.set_stream( format, stream_logger.ref() ); - } - #endif - } // for each logger - - } // if/else new logger API - } // BOOST_TEST_I_TRY - BOOST_TEST_I_CATCH( boost::runtime::init_error, ex ) { - BOOST_TEST_SETUP_ASSERT( false, ex.msg ); - } - BOOST_TEST_I_CATCH( boost::runtime::input_error, ex ) { - std::cerr << ex.msg << "\n\n"; - - BOOST_TEST_I_THROW( framework::nothing_to_test( boost::exit_exception_failure ) ); - } - - -} - -//____________________________________________________________________________// - -} // namespace impl - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** framework::init ************** // -// ************************************************************************** // - -void -init( init_unit_test_func init_func, int argc, char* argv[] ) -{ - using namespace impl; - - // 10. Set up runtime parameters - runtime_config::init( argc, argv ); - - // 20. Set the desired log level, format and sink - impl::setup_loggers(); - - // 30. Set the desired report level, format and sink - results_reporter::set_level( runtime_config::get<report_level>( runtime_config::btrt_report_level ) ); - results_reporter::set_format( runtime_config::get<output_format>( runtime_config::btrt_report_format ) ); - - if( runtime_config::has( runtime_config::btrt_report_sink ) ) { - boost::function< void () > report_cleaner = boost::bind( &results_reporter::set_stream, - boost::ref(std::cerr) - ); - s_frk_state().m_report_sink.setup( runtime_config::get<std::string>( runtime_config::btrt_report_sink ), - report_cleaner ); - } - - results_reporter::set_stream( s_frk_state().m_report_sink.ref() ); - - // 40. Register default test observers - register_observer( results_collector ); - register_observer( unit_test_log ); - register_observer( framework_init_observer ); - - if( runtime_config::get<bool>( runtime_config::btrt_show_progress ) ) { - progress_monitor.set_stream( std::cout ); // defaults to stdout - register_observer( progress_monitor ); - } - - // 50. Set up memory leak detection - unsigned long detect_mem_leak = runtime_config::get<unsigned long>( runtime_config::btrt_detect_mem_leaks ); - if( detect_mem_leak > 0 ) { - debug::detect_memory_leaks( true, runtime_config::get<std::string>( runtime_config::btrt_report_mem_leaks ) ); - debug::break_memory_alloc( (long)detect_mem_leak ); - } - - // 60. Initialize master unit test suite - master_test_suite().argc = argc; - master_test_suite().argv = argv; - - // 70. Invoke test module initialization routine - BOOST_TEST_I_TRY { - s_frk_state().m_aux_em.vexecute( boost::bind( &impl::invoke_init_func, init_func ) ); - } - BOOST_TEST_I_CATCH( execution_exception, ex ) { - BOOST_TEST_SETUP_ASSERT( false, ex.what() ); - } -} - -//____________________________________________________________________________// - -void -finalize_setup_phase( test_unit_id master_tu_id ) -{ - if( master_tu_id == INV_TEST_UNIT_ID ) - master_tu_id = master_test_suite().p_id; - - // 10. Apply all decorators to the auto test units - // 10. checks for consistency (duplicate names, etc) - class apply_decorators : public test_tree_visitor { - private: - // test_tree_visitor interface - - virtual bool test_suite_start( test_suite const& ts) - { - const_cast<test_suite&>(ts).generate(); - const_cast<test_suite&>(ts).check_for_duplicate_test_cases(); - return test_tree_visitor::test_suite_start(ts); - } - - virtual bool visit( test_unit const& tu ) - { - BOOST_TEST_FOREACH( decorator::base_ptr, d, tu.p_decorators.get() ) - d->apply( const_cast<test_unit&>(tu) ); - - return true; - } - } ad; - traverse_test_tree( master_tu_id, ad, true ); - - // 20. Finalize setup phase - impl::order_info_per_tu tuoi; - impl::s_frk_state().deduce_siblings_order( master_tu_id, master_tu_id, tuoi ); - impl::s_frk_state().finalize_default_run_status( master_tu_id, test_unit::RS_INVALID ); -} - -// ************************************************************************** // -// ************** test_in_progress ************** // -// ************************************************************************** // - -bool -test_in_progress() -{ - return impl::s_frk_state().m_test_in_progress; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** framework::shutdown ************** // -// ************************************************************************** // - -void -shutdown() -{ - impl::shutdown_loggers_and_reports(); - // eliminating some fake memory leak reports. See for more details: - // http://connect.microsoft.com/VisualStudio/feedback/details/106937/memory-leaks-reported-by-debug-crt-inside-typeinfo-name - -# if BOOST_WORKAROUND(BOOST_MSVC, <= 1600 ) && !defined(_DLL) && defined(_DEBUG) -# if BOOST_WORKAROUND(BOOST_MSVC, < 1600 ) -#define _Next next -#define _MemPtr memPtr -#endif - __type_info_node* pNode = __type_info_root_node._Next; - __type_info_node* tmpNode = &__type_info_root_node; - - for( ; pNode!=NULL; pNode = tmpNode ) { - tmpNode = pNode->_Next; - delete pNode->_MemPtr; - delete pNode; - } -# if BOOST_WORKAROUND(BOOST_MSVC, < 1600 ) -#undef _Next -#undef _MemPtr -#endif -# endif -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** register_test_unit ************** // -// ************************************************************************** // - -void -register_test_unit( test_case* tc ) -{ - BOOST_TEST_SETUP_ASSERT( tc->p_id == INV_TEST_UNIT_ID, BOOST_TEST_L( "test case already registered" ) ); - - test_unit_id new_id = impl::s_frk_state().m_next_test_case_id; - - BOOST_TEST_SETUP_ASSERT( new_id != MAX_TEST_CASE_ID, BOOST_TEST_L( "too many test cases" ) ); - - typedef state::test_unit_store::value_type map_value_type; - - impl::s_frk_state().m_test_units.insert( map_value_type( new_id, tc ) ); - impl::s_frk_state().m_next_test_case_id++; - - impl::s_frk_state().set_tu_id( *tc, new_id ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** register_test_unit ************** // -// ************************************************************************** // - -void -register_test_unit( test_suite* ts ) -{ - BOOST_TEST_SETUP_ASSERT( ts->p_id == INV_TEST_UNIT_ID, BOOST_TEST_L( "test suite already registered" ) ); - - test_unit_id new_id = impl::s_frk_state().m_next_test_suite_id; - - BOOST_TEST_SETUP_ASSERT( new_id != MAX_TEST_SUITE_ID, BOOST_TEST_L( "too many test suites" ) ); - - typedef state::test_unit_store::value_type map_value_type; - - impl::s_frk_state().m_test_units.insert( map_value_type( new_id, ts ) ); - impl::s_frk_state().m_next_test_suite_id++; - - impl::s_frk_state().set_tu_id( *ts, new_id ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** deregister_test_unit ************** // -// ************************************************************************** // - -void -deregister_test_unit( test_unit* tu ) -{ - impl::s_frk_state().m_test_units.erase( tu->p_id ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** clear ************** // -// ************************************************************************** // - -void -clear() -{ - impl::s_frk_state().clear(); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** register_observer ************** // -// ************************************************************************** // - -void -register_observer( test_observer& to ) -{ - impl::s_frk_state().m_observers.insert( &to ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** deregister_observer ************** // -// ************************************************************************** // - -void -deregister_observer( test_observer& to ) -{ - impl::s_frk_state().m_observers.erase( &to ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** register_global_fixture ************** // -// ************************************************************************** // - -void -register_global_fixture( test_unit_fixture& tuf ) -{ - impl::s_frk_state().m_global_fixtures.insert( &tuf ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** deregister_global_fixture ************** // -// ************************************************************************** // - -void -deregister_global_fixture( test_unit_fixture &tuf ) -{ - impl::s_frk_state().m_global_fixtures.erase( &tuf ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** add_context ************** // -// ************************************************************************** // - -int -add_context( ::boost::unit_test::lazy_ostream const& context_descr, bool sticky ) -{ - std::stringstream buffer; - context_descr( buffer ); - int res_idx = impl::s_frk_state().m_context_idx++; - - impl::s_frk_state().m_context.push_back( state::context_frame( buffer.str(), res_idx, sticky ) ); - - return res_idx; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** clear_context ************** // -// ************************************************************************** // - -struct frame_with_id { - explicit frame_with_id( int id ) : m_id( id ) {} - - bool operator()( state::context_frame const& f ) - { - return f.frame_id == m_id; - } - int m_id; -}; - -//____________________________________________________________________________// - -void -clear_context( int frame_id ) -{ - if( frame_id == -1 ) { // clear all non sticky frames - for( int i=static_cast<int>(impl::s_frk_state().m_context.size())-1; i>=0; i-- ) - if( !impl::s_frk_state().m_context[i].is_sticky ) - impl::s_frk_state().m_context.erase( impl::s_frk_state().m_context.begin()+i ); - } - - else { // clear specific frame - state::context_data::iterator it = - std::find_if( impl::s_frk_state().m_context.begin(), impl::s_frk_state().m_context.end(), frame_with_id( frame_id ) ); - - if( it != impl::s_frk_state().m_context.end() ) // really an internal error if this is not true - impl::s_frk_state().m_context.erase( it ); - } -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** get_context ************** // -// ************************************************************************** // - -context_generator -get_context() -{ - return context_generator(); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** context_generator ************** // -// ************************************************************************** // - -bool -context_generator::is_empty() const -{ - return impl::s_frk_state().m_context.empty(); -} - -//____________________________________________________________________________// - -const_string -context_generator::next() const -{ - return m_curr_frame < impl::s_frk_state().m_context.size() ? impl::s_frk_state().m_context[m_curr_frame++].descr : const_string(); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** master_test_suite ************** // -// ************************************************************************** // - -master_test_suite_t& -master_test_suite() -{ - if( !impl::s_frk_state().m_master_test_suite ) - impl::s_frk_state().m_master_test_suite = new master_test_suite_t; - - return *impl::s_frk_state().m_master_test_suite; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** current_auto_test_suite ************** // -// ************************************************************************** // - -test_suite& -current_auto_test_suite( test_suite* ts, bool push_or_pop ) -{ - if( impl::s_frk_state().m_auto_test_suites.empty() ) - impl::s_frk_state().m_auto_test_suites.push_back( &framework::master_test_suite() ); - - if( !push_or_pop ) - impl::s_frk_state().m_auto_test_suites.pop_back(); - else if( ts ) - impl::s_frk_state().m_auto_test_suites.push_back( ts ); - - return *impl::s_frk_state().m_auto_test_suites.back(); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** current_test_case ************** // -// ************************************************************************** // - -test_case const& -current_test_case() -{ - return get<test_case>( impl::s_frk_state().m_curr_test_unit ); -} - - -test_unit const& -current_test_unit() -{ - return *impl::s_frk_state().m_test_units[impl::s_frk_state().m_curr_test_unit]; -} - -//____________________________________________________________________________// - -test_unit_id -current_test_case_id() -{ - return impl::s_frk_state().m_curr_test_unit; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** framework::get ************** // -// ************************************************************************** // - -test_unit& -get( test_unit_id id, test_unit_type t ) -{ - test_unit* res = impl::s_frk_state().m_test_units[id]; - - BOOST_TEST_I_ASSRT( (res->p_type & t) != 0, internal_error( "Invalid test unit type" ) ); - - return *res; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** framework::run ************** // -// ************************************************************************** // - -template <class Cont> -struct swap_on_delete { - swap_on_delete(Cont& c1, Cont& c2) : m_c1(c1), m_c2(c2){} - ~swap_on_delete() { - m_c1.swap(m_c2); - } - - Cont& m_c1; - Cont& m_c2; -}; - -void -run( test_unit_id id, bool continue_test ) -{ - if( id == INV_TEST_UNIT_ID ) - id = master_test_suite().p_id; - - // Figure out run status for execution phase - impl::s_frk_state().deduce_run_status( id ); - - test_case_counter tcc; - traverse_test_tree( id, tcc ); - - BOOST_TEST_SETUP_ASSERT( tcc.p_count != 0 , runtime_config::get<std::vector<std::string> >( runtime_config::btrt_run_filters ).empty() - ? BOOST_TEST_L( "test tree is empty" ) - : BOOST_TEST_L( "no test cases matching filter or all test cases were disabled" ) ); - - bool was_in_progress = framework::test_in_progress(); - bool call_start_finish = !continue_test || !was_in_progress; - bool init_ok = true; - const_string setup_error; - - if( call_start_finish ) { - // indicates the framework that no test is in progress now if observers need to be notified - impl::s_frk_state().m_test_in_progress = false; - // unit_test::framework_init_observer will get cleared first - BOOST_TEST_FOREACH( test_observer*, to, impl::s_frk_state().m_observers ) { - BOOST_TEST_I_TRY { - ut_detail::test_unit_id_restore restore_current_test_unit(impl::s_frk_state().m_curr_test_unit, id); - unit_test_monitor_t::error_level result = unit_test_monitor.execute_and_translate( boost::bind( &test_observer::test_start, to, tcc.p_count ) ); - if( init_ok ) { - if( result != unit_test_monitor_t::test_ok ) { - init_ok = false; - } - else { - if( unit_test::framework_init_observer.has_failed() ) { - init_ok = false; - } - } - } - } - BOOST_TEST_I_CATCH( execution_exception, ex ) { - if( init_ok ) { - // log only the first error - init_ok = false; - setup_error = ex.what(); - } - // break; // we should continue otherwise loggers may have improper structure (XML start missing for instance) - } - } - } - - if( init_ok ) { - - // attaching the global fixtures to the main entry point - test_unit& entry_test_unit = framework::get( id, TUT_ANY ); - std::vector<test_unit_fixture_ptr> v_saved_fixture(entry_test_unit.p_fixtures.value.begin(), - entry_test_unit.p_fixtures.value.end()); - - BOOST_TEST_FOREACH( test_unit_fixture*, tuf, impl::s_frk_state().m_global_fixtures ) { - entry_test_unit.p_fixtures.value.insert( entry_test_unit.p_fixtures.value.begin(), - test_unit_fixture_ptr(new impl::global_fixture_handle(tuf)) ); - } - - swap_on_delete< std::vector<test_unit_fixture_ptr> > raii_fixture(v_saved_fixture, entry_test_unit.p_fixtures.value); - - // now work in progress - impl::s_frk_state().m_test_in_progress = true; - unsigned seed = runtime_config::get<unsigned>( runtime_config::btrt_random_seed ); - switch( seed ) { - case 0: - break; - case 1: - seed = static_cast<unsigned>( std::rand() ^ std::time( 0 ) ); // better init using std::rand() ^ ... - BOOST_FALLTHROUGH; - default: - BOOST_TEST_FRAMEWORK_MESSAGE( "Test cases order is shuffled using seed: " << seed ); - std::srand( seed ); - } - - // executing the test tree - impl::s_frk_state().execute_test_tree( id ); - - // removing previously added global fixtures: dtor raii_fixture - } - - impl::s_frk_state().m_test_in_progress = false; - - results_reporter::make_report( INV_REPORT_LEVEL, id ); - - unit_test::framework_init_observer.clear(); - if( call_start_finish ) { - // indicates the framework that no test is in progress anymore if observers need to be notified - // and this is a teardown, so assertions should not raise any exception otherwise an exception - // might be raised in a dtor of a global fixture - impl::s_frk_state().m_test_in_progress = false; - BOOST_TEST_REVERSE_FOREACH( test_observer*, to, impl::s_frk_state().m_observers ) { - ut_detail::test_unit_id_restore restore_current_test_unit(impl::s_frk_state().m_curr_test_unit, id); - to->test_finish(); - } - } - - impl::s_frk_state().m_test_in_progress = was_in_progress; - - // propagates the init/teardown error if any - BOOST_TEST_SETUP_ASSERT( init_ok && !unit_test::framework_init_observer.has_failed(), setup_error ); -} - -//____________________________________________________________________________// - -void -run( test_unit const* tu, bool continue_test ) -{ - run( tu->p_id, continue_test ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** assertion_result ************** // -// ************************************************************************** // - -void -assertion_result( unit_test::assertion_result ar ) -{ - BOOST_TEST_FOREACH( test_observer*, to, impl::s_frk_state().m_observers ) - to->assertion_result( ar ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** exception_caught ************** // -// ************************************************************************** // - -void -exception_caught( execution_exception const& ex ) -{ - BOOST_TEST_FOREACH( test_observer*, to, impl::s_frk_state().m_observers ) - to->exception_caught( ex ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** test_unit_aborted ************** // -// ************************************************************************** // - -void -test_unit_aborted( test_unit const& tu ) -{ - BOOST_TEST_FOREACH( test_observer*, to, impl::s_frk_state().m_observers ) - to->test_unit_aborted( tu ); -} - -// ************************************************************************** // -// ************** test_aborted ************** // -// ************************************************************************** // - -void -test_aborted( ) -{ - BOOST_TEST_FOREACH( test_observer*, to, impl::s_frk_state().m_observers ) - to->test_aborted( ); -} - - -//____________________________________________________________________________// - -} // namespace framework -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_FRAMEWORK_IPP_021005GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/junit_log_formatter.ipp b/src/third_party/boost-1.69.0/boost/test/impl/junit_log_formatter.ipp deleted file mode 100644 index e82e2bd1b02..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/junit_log_formatter.ipp +++ /dev/null @@ -1,840 +0,0 @@ -// (C) Copyright 2016 Raffi Enficiaud. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -///@file -///@brief Contains the implementatoin of the Junit log formatter (OF_JUNIT) -// *************************************************************************** - -#ifndef BOOST_TEST_JUNIT_LOG_FORMATTER_IPP__ -#define BOOST_TEST_JUNIT_LOG_FORMATTER_IPP__ - -// Boost.Test -#include <boost/test/output/junit_log_formatter.hpp> -#include <boost/test/execution_monitor.hpp> -#include <boost/test/framework.hpp> -#include <boost/test/tree/test_unit.hpp> -#include <boost/test/utils/basic_cstring/io.hpp> -#include <boost/test/utils/xml_printer.hpp> -#include <boost/test/utils/string_cast.hpp> -#include <boost/test/framework.hpp> - -#include <boost/test/tree/visitor.hpp> -#include <boost/test/tree/test_case_counter.hpp> -#include <boost/test/tree/traverse.hpp> -#include <boost/test/results_collector.hpp> - -#include <boost/test/utils/algorithm.hpp> -#include <boost/test/utils/string_cast.hpp> - -//#include <boost/test/results_reporter.hpp> - - -// Boost -#include <boost/version.hpp> - -// STL -#include <iostream> -#include <fstream> -#include <set> - -#include <boost/test/detail/suppress_warnings.hpp> - - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace output { - - -struct s_replace_chars { - template <class T> - void operator()(T& to_replace) - { - if(to_replace == '/') - to_replace = '.'; - else if(to_replace == ' ') - to_replace = '_'; - } -}; - -inline std::string tu_name_normalize(std::string full_name) -{ - // maybe directly using normalize_test_case_name instead? - std::for_each(full_name.begin(), full_name.end(), s_replace_chars()); - return full_name; -} - -inline std::string tu_name_remove_newlines(std::string full_name) -{ - full_name.erase(std::remove(full_name.begin(), full_name.end(), '\n'), full_name.end()); - return full_name; -} - -const_string file_basename(const_string filename) { - - const_string path_sep( "\\/" ); - const_string::iterator it = unit_test::utils::find_last_of( filename.begin(), filename.end(), - path_sep.begin(), path_sep.end() ); - if( it != filename.end() ) - filename.trim_left( it + 1 ); - - return filename; - -} - -// ************************************************************************** // -// ************** junit_log_formatter ************** // -// ************************************************************************** // - -void -junit_log_formatter::log_start( std::ostream& /*ostr*/, counter_t /*test_cases_amount*/) -{ - map_tests.clear(); - list_path_to_root.clear(); - runner_log_entry.clear(); -} - -//____________________________________________________________________________// - -class junit_result_helper : public test_tree_visitor { -private: - typedef junit_impl::junit_log_helper::assertion_entry assertion_entry; - typedef std::vector< assertion_entry >::const_iterator vect_assertion_entry_citerator; - typedef std::list<std::string>::const_iterator list_str_citerator; - -public: - explicit junit_result_helper( - std::ostream& stream, - test_unit const& ts, - junit_log_formatter::map_trace_t const& mt, - junit_impl::junit_log_helper const& runner_log_, - bool display_build_info ) - : m_stream(stream) - , m_ts( ts ) - , m_map_test( mt ) - , runner_log( runner_log_ ) - , m_id( 0 ) - , m_display_build_info(display_build_info) - { } - - void add_log_entry(assertion_entry const& log) const - { - std::string entry_type; - if( log.log_entry == assertion_entry::log_entry_failure ) { - entry_type = "failure"; - } - else if( log.log_entry == assertion_entry::log_entry_error ) { - entry_type = "error"; - } - else { - return; - } - - m_stream - << "<" << entry_type - << " message" << utils::attr_value() << log.logentry_message - << " type" << utils::attr_value() << log.logentry_type - << ">"; - - if(!log.output.empty()) { - m_stream << utils::cdata() << "\n" + log.output; - } - - m_stream << "</" << entry_type << ">"; - } - - struct conditional_cdata_helper { - std::ostream &ostr; - std::string const field; - bool empty; - - conditional_cdata_helper(std::ostream &ostr_, std::string field_) - : ostr(ostr_) - , field(field_) - , empty(true) - {} - - ~conditional_cdata_helper() { - if(!empty) { - ostr << BOOST_TEST_L( "]]>" ) << "</" << field << '>' << std::endl; - } - } - - void operator()(const std::string& s) { - bool current_empty = s.empty(); - if(empty) { - if(!current_empty) { - empty = false; - ostr << '<' << field << '>' << BOOST_TEST_L( "<![CDATA[" ); - } - } - if(!current_empty) { - ostr << s; - } - } - }; - - std::list<std::string> build_skipping_chain(test_unit const & tu) const - { - // we enter here because we know that the tu has been skipped. - // either junit has not seen this tu, or it is indicated as disabled - assert(m_map_test.count(tu.p_id) == 0 || results_collector.results( tu.p_id ).p_skipped); - - std::list<std::string> out; - - test_unit_id id(tu.p_id); - while( id != m_ts.p_id && id != INV_TEST_UNIT_ID) { - test_unit const& tu_hierarchy = boost::unit_test::framework::get( id, TUT_ANY ); - out.push_back("- disabled test unit: '" + tu_name_remove_newlines(tu_hierarchy.full_name()) + "'\n"); - if(m_map_test.count(id) > 0) - { - // junit has seen the reason: this is enough for constructing the chain - break; - } - id = tu_hierarchy.p_parent_id; - } - junit_log_formatter::map_trace_t::const_iterator it_element_stack(m_map_test.find(id)); - if( it_element_stack != m_map_test.end() ) - { - out.push_back("- reason: '" + it_element_stack->second.skipping_reason + "'"); - out.push_front("Test case disabled because of the following chain of decision:\n"); - } - - return out; - } - - std::string get_class_name(test_unit const & tu_class) const { - std::string classname; - test_unit_id id(tu_class.p_parent_id); - while( id != m_ts.p_id && id != INV_TEST_UNIT_ID ) { - test_unit const& tu = boost::unit_test::framework::get( id, TUT_ANY ); - classname = tu_name_normalize(tu.p_name) + "." + classname; - id = tu.p_parent_id; - } - - // removes the trailing dot - if(!classname.empty() && *classname.rbegin() == '.') { - classname.erase(classname.size()-1); - } - - return classname; - } - - void write_testcase_header(test_unit const & tu, - test_results const *tr, - int nb_assertions) const - { - std::string name; - std::string classname; - - if(tu.p_id == m_ts.p_id ) { - name = "boost_test"; - } - else { - classname = get_class_name(tu); - name = tu_name_normalize(tu.p_name); - } - - if( tu.p_type == TUT_SUITE ) { - name += "-setup-teardown"; - } - - m_stream << "<testcase assertions" << utils::attr_value() << nb_assertions; - if(!classname.empty()) - m_stream << " classname" << utils::attr_value() << classname; - - // test case name and time taken - m_stream - << " name" << utils::attr_value() << name - << " time" << utils::attr_value() << double(tr->p_duration_microseconds) * 1E-6 - << ">" << std::endl; - } - - void write_testcase_system_out(junit_impl::junit_log_helper const &detailed_log, - test_unit const * tu, - bool skipped) const - { - // system-out + all info/messages, the object skips the empty entries - conditional_cdata_helper system_out_helper(m_stream, "system-out"); - - // indicate why the test has been skipped first - if( skipped ) { - std::list<std::string> skipping_decision_chain = build_skipping_chain(*tu); - for(list_str_citerator it(skipping_decision_chain.begin()), ite(skipping_decision_chain.end()); - it != ite; - ++it) - { - system_out_helper(*it); - } - } - - // stdout - for(list_str_citerator it(detailed_log.system_out.begin()), ite(detailed_log.system_out.end()); - it != ite; - ++it) - { - system_out_helper(*it); - } - - // warning/info message last - for(vect_assertion_entry_citerator it(detailed_log.assertion_entries.begin()); - it != detailed_log.assertion_entries.end(); - ++it) - { - if(it->log_entry != assertion_entry::log_entry_info) - continue; - system_out_helper(it->output); - } - } - - void write_testcase_system_err(junit_impl::junit_log_helper const &detailed_log, - test_unit const * tu, - test_results const *tr) const - { - // system-err output + test case informations - bool has_failed = (tr != 0) ? !tr->p_skipped && !tr->passed() : false; - if(!detailed_log.system_err.empty() || has_failed) - { - std::ostringstream o; - if(has_failed) { - o << "Failures detected in:" << std::endl; - } - else { - o << "ERROR STREAM:" << std::endl; - } - - if(tu->p_type == TUT_SUITE) { - if( tu->p_id == m_ts.p_id ) { - o << " boost.test global setup/teardown" << std::endl; - } else { - o << "- test suite: " << tu_name_remove_newlines(tu->full_name()) << std::endl; - } - } - else { - o << "- test case: " << tu_name_remove_newlines(tu->full_name()); - if(!tu->p_description.value.empty()) - o << " '" << tu->p_description << "'"; - - o << std::endl - << "- file: " << file_basename(tu->p_file_name) << std::endl - << "- line: " << tu->p_line_num << std::endl - ; - } - - if(!detailed_log.system_err.empty()) - o << std::endl << "STDERR BEGIN: ------------" << std::endl; - - for(list_str_citerator it(detailed_log.system_err.begin()), ite(detailed_log.system_err.end()); - it != ite; - ++it) - { - o << *it; - } - - if(!detailed_log.system_err.empty()) - o << std::endl << "STDERR END ------------" << std::endl; - - conditional_cdata_helper system_err_helper(m_stream, "system-err"); - system_err_helper(o.str()); - } - } - - int get_nb_assertions(junit_impl::junit_log_helper const &detailed_log, - test_unit const & tu, - test_results const *tr) const { - int nb_assertions(-1); - if( tu.p_type == TUT_SUITE ) { - nb_assertions = 0; - for(vect_assertion_entry_citerator it(detailed_log.assertion_entries.begin()); - it != detailed_log.assertion_entries.end(); - ++it) - { - if(it->log_entry != assertion_entry::log_entry_info) - nb_assertions++; - } - } - else { - nb_assertions = tr->p_assertions_passed + tr->p_assertions_failed; - } - - return nb_assertions; - } - - void output_detailed_logs(junit_impl::junit_log_helper const &detailed_log, - test_unit const & tu, - bool skipped, - test_results const *tr) const - { - int nb_assertions = get_nb_assertions(detailed_log, tu, tr); - if(!nb_assertions && tu.p_type == TUT_SUITE) - return; - - write_testcase_header(tu, tr, nb_assertions); - - if( skipped ) { - m_stream << "<skipped/>" << std::endl; - } - else { - - for(vect_assertion_entry_citerator it(detailed_log.assertion_entries.begin()); - it != detailed_log.assertion_entries.end(); - ++it) - { - add_log_entry(*it); - } - } - - write_testcase_system_out(detailed_log, &tu, skipped); - write_testcase_system_err(detailed_log, &tu, tr); - m_stream << "</testcase>" << std::endl; - } - - void visit( test_case const& tc ) - { - - test_results const& tr = results_collector.results( tc.p_id ); - junit_log_formatter::map_trace_t::const_iterator it_find = m_map_test.find(tc.p_id); - if(it_find == m_map_test.end()) - { - // test has been skipped and not seen by the logger - output_detailed_logs(junit_impl::junit_log_helper(), tc, true, &tr); - } - else { - output_detailed_logs(it_find->second, tc, tr.p_skipped, &tr); - } - } - - bool test_suite_start( test_suite const& ts ) - { - test_results const& tr = results_collector.results( ts.p_id ); - - // unique test suite, without s, nesting not supported in CI - if( m_ts.p_id == ts.p_id ) { - m_stream << "<testsuite"; - - m_stream - // << "disabled=\"" << tr.p_test_cases_skipped << "\" " - << " tests" << utils::attr_value() << tr.p_test_cases_passed - << " skipped" << utils::attr_value() << tr.p_test_cases_skipped - << " errors" << utils::attr_value() << tr.p_test_cases_aborted - << " failures" << utils::attr_value() << tr.p_test_cases_failed - << " id" << utils::attr_value() << m_id++ - << " name" << utils::attr_value() << tu_name_normalize(ts.p_name) - << " time" << utils::attr_value() << (tr.p_duration_microseconds * 1E-6) - << ">" << std::endl; - - if(m_display_build_info) - { - m_stream << "<properties>" << std::endl; - m_stream << "<property name=\"platform\" value" << utils::attr_value() << BOOST_PLATFORM << " />" << std::endl; - m_stream << "<property name=\"compiler\" value" << utils::attr_value() << BOOST_COMPILER << " />" << std::endl; - m_stream << "<property name=\"stl\" value" << utils::attr_value() << BOOST_STDLIB << " />" << std::endl; - - std::ostringstream o; - o << BOOST_VERSION/100000 << "." << BOOST_VERSION/100 % 1000 << "." << BOOST_VERSION % 100; - m_stream << "<property name=\"boost\" value" << utils::attr_value() << o.str() << " />" << std::endl; - m_stream << "</properties>" << std::endl; - } - } - - if( !tr.p_skipped ) { - // if we land here, then this is a chance that we are logging the fixture setup/teardown of a test-suite. - // the setup/teardown logging of a test-case is part of the test case. - // we do not care about the test-suite that were skipped (really??) - junit_log_formatter::map_trace_t::const_iterator it_find = m_map_test.find(ts.p_id); - if(it_find != m_map_test.end()) { - output_detailed_logs(it_find->second, ts, false, &tr); - } - } - - return true; // indicates that the children should also be parsed - } - - virtual void test_suite_finish( test_suite const& ts ) - { - if( m_ts.p_id == ts.p_id ) { - write_testcase_system_out(runner_log, 0, false); - write_testcase_system_err(runner_log, 0, 0); - - m_stream << "</testsuite>"; - return; - } - } - -private: - // Data members - std::ostream& m_stream; - test_unit const& m_ts; - junit_log_formatter::map_trace_t const& m_map_test; - junit_impl::junit_log_helper const& runner_log; - size_t m_id; - bool m_display_build_info; -}; - - - -void -junit_log_formatter::log_finish( std::ostream& ostr ) -{ - ostr << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << std::endl; - - // getting the root test suite - if(!map_tests.empty()) { - test_unit* root = &boost::unit_test::framework::get( map_tests.begin()->first, TUT_ANY ); - - // looking for the root of the SUBtree (we stay in the subtree) - while(root->p_parent_id != INV_TEST_UNIT_ID && map_tests.count(root->p_parent_id) > 0) { - root = &boost::unit_test::framework::get( root->p_parent_id, TUT_ANY ); - } - junit_result_helper ch( ostr, *root, map_tests, this->runner_log_entry, m_display_build_info ); - traverse_test_tree( root->p_id, ch, true ); // last is to ignore disabled suite special handling - } - else { - ostr << "<testsuites errors=\"1\">"; - ostr << "<testsuite errors=\"1\" name=\"boost-test-framework\">"; - ostr << "<testcase assertions=\"1\" name=\"test-setup\">"; - ostr << "<system-out>Incorrect setup: no test case executed</system-out>"; - ostr << "</testcase></testsuite></testsuites>"; - } - return; -} - -//____________________________________________________________________________// - -void -junit_log_formatter::log_build_info( std::ostream& /*ostr*/ ) -{ - m_display_build_info = true; -} - -//____________________________________________________________________________// - -void -junit_log_formatter::test_unit_start( std::ostream& /*ostr*/, test_unit const& tu ) -{ - list_path_to_root.push_back( tu.p_id ); - map_tests.insert(std::make_pair(tu.p_id, junit_impl::junit_log_helper())); // current_test_case_id not working here -} - - - -//____________________________________________________________________________// - -void -junit_log_formatter::test_unit_finish( std::ostream& /*ostr*/, test_unit const& tu, unsigned long /*elapsed*/ ) -{ - // the time is already stored in the result_reporter - assert( tu.p_id == list_path_to_root.back() ); - list_path_to_root.pop_back(); -} - -void -junit_log_formatter::test_unit_aborted( std::ostream& /*ostr*/, test_unit const& tu ) -{ - assert( tu.p_id == list_path_to_root.back() ); - //list_path_to_root.pop_back(); -} - -//____________________________________________________________________________// - -void -junit_log_formatter::test_unit_skipped( std::ostream& /*ostr*/, test_unit const& tu, const_string reason ) -{ - // if a test unit is skipped, then the start of this TU has not been called yet. - // we cannot use get_current_log_entry here, but the TU id should appear in the map. - // The "skip" boolean is given by the boost.test framework - junit_impl::junit_log_helper& v = map_tests[tu.p_id]; // not sure if we can use get_current_log_entry() - v.skipping_reason.assign(reason.begin(), reason.end()); -} - -//____________________________________________________________________________// - -void -junit_log_formatter::log_exception_start( std::ostream& /*ostr*/, log_checkpoint_data const& checkpoint_data, execution_exception const& ex ) -{ - std::ostringstream o; - execution_exception::location const& loc = ex.where(); - - m_is_last_assertion_or_error = false; - - junit_impl::junit_log_helper& last_entry = get_current_log_entry(); - - junit_impl::junit_log_helper::assertion_entry entry; - - entry.logentry_message = "unexpected exception"; - entry.log_entry = junit_impl::junit_log_helper::assertion_entry::log_entry_error; - - switch(ex.code()) - { - case execution_exception::cpp_exception_error: - entry.logentry_type = "uncaught exception"; - break; - case execution_exception::timeout_error: - entry.logentry_type = "execution timeout"; - break; - case execution_exception::user_error: - entry.logentry_type = "user, assert() or CRT error"; - break; - case execution_exception::user_fatal_error: - // Looks like never used - entry.logentry_type = "user fatal error"; - break; - case execution_exception::system_error: - entry.logentry_type = "system error"; - break; - case execution_exception::system_fatal_error: - entry.logentry_type = "system fatal error"; - break; - default: - entry.logentry_type = "no error"; // not sure how to handle this one - break; - } - - o << "UNCAUGHT EXCEPTION:" << std::endl; - if( !loc.m_function.is_empty() ) - o << "- function: \"" << loc.m_function << "\"" << std::endl; - - o << "- file: " << file_basename(loc.m_file_name) << std::endl - << "- line: " << loc.m_line_num << std::endl - << std::endl; - - o << "\nEXCEPTION STACK TRACE: --------------\n" << ex.what() - << "\n-------------------------------------"; - - if( !checkpoint_data.m_file_name.is_empty() ) { - o << std::endl << std::endl - << "Last checkpoint:" << std::endl - << "- message: \"" << checkpoint_data.m_message << "\"" << std::endl - << "- file: " << file_basename(checkpoint_data.m_file_name) << std::endl - << "- line: " << checkpoint_data.m_line_num << std::endl - ; - } - - entry.output = o.str(); - - last_entry.assertion_entries.push_back(entry); -} - -//____________________________________________________________________________// - -void -junit_log_formatter::log_exception_finish( std::ostream& /*ostr*/ ) -{ - // sealing the last entry - assert(!get_current_log_entry().assertion_entries.back().sealed); - get_current_log_entry().assertion_entries.back().sealed = true; -} - -//____________________________________________________________________________// - -void -junit_log_formatter::log_entry_start( std::ostream& /*ostr*/, log_entry_data const& entry_data, log_entry_types let ) -{ - junit_impl::junit_log_helper& last_entry = get_current_log_entry(); - last_entry.skipping = false; - m_is_last_assertion_or_error = true; - switch(let) - { - case unit_test_log_formatter::BOOST_UTL_ET_INFO: - { - if(m_log_level_internal > log_successful_tests) { - last_entry.skipping = true; - break; - } - BOOST_FALLTHROUGH; - } - case unit_test_log_formatter::BOOST_UTL_ET_MESSAGE: - { - if(m_log_level_internal > log_messages) { - last_entry.skipping = true; - break; - } - BOOST_FALLTHROUGH; - } - case unit_test_log_formatter::BOOST_UTL_ET_WARNING: - { - if(m_log_level_internal > log_warnings) { - last_entry.skipping = true; - break; - } - std::ostringstream o; - junit_impl::junit_log_helper::assertion_entry entry; - - entry.log_entry = junit_impl::junit_log_helper::assertion_entry::log_entry_info; - entry.logentry_message = "info"; - entry.logentry_type = "message"; - - o << (let == unit_test_log_formatter::BOOST_UTL_ET_WARNING ? - "WARNING:" : (let == unit_test_log_formatter::BOOST_UTL_ET_MESSAGE ? - "MESSAGE:" : "INFO:")) - << std::endl - << "- file : " << file_basename(entry_data.m_file_name) << std::endl - << "- line : " << entry_data.m_line_num << std::endl - << "- message: "; // no CR - - entry.output += o.str(); - last_entry.assertion_entries.push_back(entry); - break; - } - default: - case unit_test_log_formatter::BOOST_UTL_ET_ERROR: - case unit_test_log_formatter::BOOST_UTL_ET_FATAL_ERROR: - { - std::ostringstream o; - junit_impl::junit_log_helper::assertion_entry entry; - entry.log_entry = junit_impl::junit_log_helper::assertion_entry::log_entry_failure; - entry.logentry_message = "failure"; - entry.logentry_type = (let == unit_test_log_formatter::BOOST_UTL_ET_ERROR ? "assertion error" : "fatal error"); - - o << "ASSERTION FAILURE:" << std::endl - << "- file : " << file_basename(entry_data.m_file_name) << std::endl - << "- line : " << entry_data.m_line_num << std::endl - << "- message: " ; // no CR - - entry.output += o.str(); - last_entry.assertion_entries.push_back(entry); - break; - } - } -} - -//____________________________________________________________________________// - -void -junit_log_formatter::log_entry_value( std::ostream& /*ostr*/, const_string value ) -{ - junit_impl::junit_log_helper& last_entry = get_current_log_entry(); - if(last_entry.skipping) - return; - - assert(last_entry.assertion_entries.empty() || !last_entry.assertion_entries.back().sealed); - - if(!last_entry.assertion_entries.empty()) - { - junit_impl::junit_log_helper::assertion_entry& log_entry = last_entry.assertion_entries.back(); - log_entry.output += value; - } - else - { - // this may be a message coming from another observer - // the prefix is set in the log_entry_start - last_entry.system_out.push_back(std::string(value.begin(), value.end())); - } -} - -//____________________________________________________________________________// - -void -junit_log_formatter::log_entry_finish( std::ostream& /*ostr*/ ) -{ - junit_impl::junit_log_helper& last_entry = get_current_log_entry(); - if(!last_entry.skipping) - { - assert(last_entry.assertion_entries.empty() || !last_entry.assertion_entries.back().sealed); - - if(!last_entry.assertion_entries.empty()) { - junit_impl::junit_log_helper::assertion_entry& log_entry = last_entry.assertion_entries.back(); - log_entry.output += "\n\n"; // quote end, CR - log_entry.sealed = true; - } - else { - last_entry.system_out.push_back("\n\n"); // quote end, CR - } - } - - last_entry.skipping = false; -} - -//____________________________________________________________________________// - -void -junit_log_formatter::entry_context_start( std::ostream& /*ostr*/, log_level ) -{ - junit_impl::junit_log_helper& last_entry = get_current_log_entry(); - if(last_entry.skipping) - return; - - std::vector< junit_impl::junit_log_helper::assertion_entry > &v_failure_or_error = last_entry.assertion_entries; - assert(!v_failure_or_error.back().sealed); - - junit_impl::junit_log_helper::assertion_entry& last_log_entry = v_failure_or_error.back(); - if(m_is_last_assertion_or_error) - { - last_log_entry.output += "\n- context:\n"; - } - else - { - last_log_entry.output += "\n\nCONTEXT:\n"; - } -} - -//____________________________________________________________________________// - -void -junit_log_formatter::entry_context_finish( std::ostream& /*ostr*/, log_level ) -{ - // no op, may be removed - junit_impl::junit_log_helper& last_entry = get_current_log_entry(); - if(last_entry.skipping) - return; - assert(!get_current_log_entry().assertion_entries.back().sealed); -} - -//____________________________________________________________________________// - -void -junit_log_formatter::log_entry_context( std::ostream& /*ostr*/, log_level , const_string context_descr ) -{ - junit_impl::junit_log_helper& last_entry = get_current_log_entry(); - if(last_entry.skipping) - return; - - assert(!last_entry.assertion_entries.back().sealed); - junit_impl::junit_log_helper::assertion_entry& last_log_entry = get_current_log_entry().assertion_entries.back(); - - last_log_entry.output += - (m_is_last_assertion_or_error ? " - '": "- '") + std::string(context_descr.begin(), context_descr.end()) + "'\n"; // quote end -} - -//____________________________________________________________________________// - - -std::string -junit_log_formatter::get_default_stream_description() const { - std::string name = framework::master_test_suite().p_name.value; - - static const std::string to_replace[] = { " ", "\"", "/", "\\", ":"}; - static const std::string replacement[] = { "_", "_" , "_", "_" , "_"}; - - name = unit_test::utils::replace_all_occurrences_of( - name, - to_replace, to_replace + sizeof(to_replace)/sizeof(to_replace[0]), - replacement, replacement + sizeof(replacement)/sizeof(replacement[0])); - - std::ifstream check_init((name + ".xml").c_str()); - if(!check_init) - return name + ".xml"; - - int index = 0; - for(; index < 100; index++) { - std::string candidate = name + "_" + utils::string_cast(index) + ".xml"; - std::ifstream file(candidate.c_str()); - if(!file) - return candidate; - } - - return name + ".xml"; -} - -} // namespace output -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_junit_log_formatter_IPP_020105GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/plain_report_formatter.ipp b/src/third_party/boost-1.69.0/boost/test/impl/plain_report_formatter.ipp deleted file mode 100644 index cbf5a4c029e..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/plain_report_formatter.ipp +++ /dev/null @@ -1,207 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : plain report formatter definition -// *************************************************************************** - -#ifndef BOOST_TEST_PLAIN_REPORT_FORMATTER_IPP_020105GER -#define BOOST_TEST_PLAIN_REPORT_FORMATTER_IPP_020105GER - -// Boost.Test -#include <boost/test/output/plain_report_formatter.hpp> -#include <boost/test/utils/custom_manip.hpp> -#include <boost/test/results_collector.hpp> -#include <boost/test/unit_test_parameters.hpp> - -#include <boost/test/tree/test_unit.hpp> - -#include <boost/test/utils/basic_cstring/io.hpp> -#include <boost/test/utils/setcolor.hpp> - -// STL -#include <iomanip> -#include <boost/config/no_tr1/cmath.hpp> -#include <iostream> - -#include <boost/test/detail/suppress_warnings.hpp> - -# ifdef BOOST_NO_STDC_NAMESPACE -namespace std { using ::log10; } -# endif - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace output { - -namespace { - -typedef utils::custom_manip<struct quote_t> quote; - -template<typename T> -inline std::ostream& -operator<<( utils::custom_printer<quote> const& p, T const& value ) -{ - *p << '"' << value << '"'; - - return *p; -} - -//____________________________________________________________________________// - -void -print_stat_value( std::ostream& ostr, counter_t v, counter_t indent, counter_t total, const_string name, const_string res ) -{ - if( v == 0 ) - return; - - if( total > 0 ) - ostr << std::setw( static_cast<int>(indent) ) << "" << v << ' ' << name << ( v != 1 ? "s" : "" ) - << " out of " << total << ' ' << res << '\n'; - else - ostr << std::setw( static_cast<int>(indent) ) << "" << v << ' ' << res << ' ' << name << ( v != 1 ? "s" : "" ) << '\n'; -} - -//____________________________________________________________________________// - -} // local namespace - -// ************************************************************************** // -// ************** plain_report_formatter ************** // -// ************************************************************************** // - -void -plain_report_formatter::results_report_start( std::ostream& ostr ) -{ - m_indent = 0; - m_color_output = runtime_config::get<bool>( runtime_config::btrt_color_output ); - ostr << '\n'; -} - -//____________________________________________________________________________// - -void -plain_report_formatter::results_report_finish( std::ostream& ostr ) -{ - ostr.flush(); -} - -//____________________________________________________________________________// - -void -plain_report_formatter::test_unit_report_start( test_unit const& tu, std::ostream& ostr ) -{ - test_results const& tr = results_collector.results( tu.p_id ); - - const_string descr; - - if( tr.passed() ) - descr = "has passed"; - else if( tr.p_skipped ) - descr = "was skipped"; - else if( tr.p_aborted ) - descr = "was aborted"; - else - descr = "has failed"; - - ostr << std::setw( static_cast<int>(m_indent) ) << "" - << "Test " << tu.p_type_name << ' ' << quote() << tu.full_name() << ' ' << descr; - - if( tr.p_skipped ) { - ostr << "\n"; - m_indent += 2; - return; - } - - counter_t total_assertions = tr.p_assertions_passed + tr.p_assertions_failed; - counter_t total_tc = tr.p_test_cases_passed + tr.p_test_cases_warned + tr.p_test_cases_failed + tr.p_test_cases_skipped; - - if( total_assertions > 0 || total_tc > 0 || tr.p_warnings_failed > 0) - ostr << " with:"; - - ostr << '\n'; - m_indent += 2; - - print_stat_value( ostr, tr.p_test_cases_passed , m_indent, total_tc , "test case", "passed" ); - print_stat_value( ostr, tr.p_test_cases_warned , m_indent, total_tc , "test case", "passed with warnings" ); - print_stat_value( ostr, tr.p_test_cases_failed , m_indent, total_tc , "test case", "failed" ); - print_stat_value( ostr, tr.p_test_cases_skipped, m_indent, total_tc , "test case", "skipped" ); - print_stat_value( ostr, tr.p_test_cases_aborted, m_indent, total_tc , "test case", "aborted" ); - print_stat_value( ostr, tr.p_assertions_passed , m_indent, total_assertions, "assertion", "passed" ); - print_stat_value( ostr, tr.p_assertions_failed , m_indent, total_assertions, "assertion", "failed" ); - print_stat_value( ostr, tr.p_warnings_failed , m_indent, 0 , "warning" , "failed" ); - print_stat_value( ostr, tr.p_expected_failures , m_indent, 0 , "failure" , "expected" ); - - ostr << '\n'; -} - -//____________________________________________________________________________// - -void -plain_report_formatter::test_unit_report_finish( test_unit const&, std::ostream& ) -{ - m_indent -= 2; -} - -//____________________________________________________________________________// - -void -plain_report_formatter::do_confirmation_report( test_unit const& tu, std::ostream& ostr ) -{ - test_results const& tr = results_collector.results( tu.p_id ); - - if( tr.passed() ) { - BOOST_TEST_SCOPE_SETCOLOR( m_color_output, ostr, term_attr::BRIGHT, term_color::GREEN ); - - ostr << "*** No errors detected\n"; - return; - } - - BOOST_TEST_SCOPE_SETCOLOR( m_color_output, ostr, term_attr::BRIGHT, term_color::RED ); - - if( tr.p_skipped ) { - ostr << "*** The test " << tu.p_type_name << ' ' << quote() << tu.full_name() << " was skipped" - << "; see standard output for details\n"; - return; - } - - if( tr.p_aborted ) { - ostr << "*** The test " << tu.p_type_name << ' ' << quote() << tu.full_name() << " was aborted" - << "; see standard output for details\n"; - } - - if( tr.p_assertions_failed == 0 ) { - if( !tr.p_aborted ) - ostr << "*** Errors were detected in the test " << tu.p_type_name << ' ' << quote() << tu.full_name() - << "; see standard output for details\n"; - return; - } - - counter_t num_failures = tr.p_assertions_failed; - - ostr << "*** " << num_failures << " failure" << ( num_failures != 1 ? "s are" : " is" ) << " detected"; - - if( tr.p_expected_failures > 0 ) - ostr << " (" << tr.p_expected_failures << " failure" << ( tr.p_expected_failures != 1 ? "s are" : " is" ) << " expected)"; - - ostr << " in the test " << tu.p_type_name << " " << quote() << tu.full_name() << "\n"; -} - -//____________________________________________________________________________// - -} // namespace output -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_PLAIN_REPORT_FORMATTER_IPP_020105GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/progress_monitor.ipp b/src/third_party/boost-1.69.0/boost/test/impl/progress_monitor.ipp deleted file mode 100644 index 998aa26b287..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/progress_monitor.ipp +++ /dev/null @@ -1,189 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : implements simple text based progress monitor -// *************************************************************************** - -#ifndef BOOST_TEST_PROGRESS_MONITOR_IPP_020105GER -#define BOOST_TEST_PROGRESS_MONITOR_IPP_020105GER - -// Boost.Test -#include <boost/test/progress_monitor.hpp> -#include <boost/test/unit_test_parameters.hpp> - -#include <boost/test/utils/setcolor.hpp> - -#include <boost/test/tree/test_unit.hpp> -#include <boost/test/tree/test_case_counter.hpp> -#include <boost/test/tree/traverse.hpp> - -// Boost -#include <boost/scoped_ptr.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** progress_monitor ************** // -// ************************************************************************** // - -struct progress_display { - progress_display( counter_t expected_count, std::ostream& os ) - : m_os(os) - , m_count( 0 ) - , m_expected_count( expected_count ) - , m_next_tic_count( 0 ) - , m_tic( 0 ) - { - - m_os << "\n0% 10 20 30 40 50 60 70 80 90 100%" - << "\n|----|----|----|----|----|----|----|----|----|----|" - << std::endl; - - if( !m_expected_count ) - m_expected_count = 1; // prevent divide by zero - } - - unsigned long operator+=( unsigned long increment ) - { - if( (m_count += increment) < m_next_tic_count ) - return m_count; - - // use of floating point ensures that both large and small counts - // work correctly. static_cast<>() is also used several places - // to suppress spurious compiler warnings. - unsigned int tics_needed = static_cast<unsigned int>( - (static_cast<double>(m_count)/m_expected_count)*50.0 ); - - do { - m_os << '*' << std::flush; - } while( ++m_tic < tics_needed ); - - m_next_tic_count = static_cast<unsigned long>((m_tic/50.0) * m_expected_count); - - if( m_count == m_expected_count ) { - if( m_tic < 51 ) - m_os << '*'; - - m_os << std::endl; - } - - return m_count; - } - unsigned long operator++() { return operator+=( 1 ); } - unsigned long count() const { return m_count; } - -private: - BOOST_DELETED_FUNCTION(progress_display(progress_display const&)) - BOOST_DELETED_FUNCTION(progress_display& operator=(progress_display const&)) - - std::ostream& m_os; // may not be present in all imps - - unsigned long m_count; - unsigned long m_expected_count; - unsigned long m_next_tic_count; - unsigned int m_tic; -}; - -namespace { - -struct progress_monitor_impl { - // Constructor - progress_monitor_impl() - : m_stream( &std::cout ) - , m_color_output( false ) - { - } - - std::ostream* m_stream; - scoped_ptr<progress_display> m_progress_display; - bool m_color_output; -}; - -progress_monitor_impl& s_pm_impl() { static progress_monitor_impl the_inst; return the_inst; } - -#define PM_SCOPED_COLOR() \ - BOOST_TEST_SCOPE_SETCOLOR( s_pm_impl().m_color_output, *s_pm_impl().m_stream, term_attr::BRIGHT, term_color::MAGENTA ) - -} // local namespace - -//____________________________________________________________________________// - -BOOST_TEST_SINGLETON_CONS_IMPL(progress_monitor_t) - -//____________________________________________________________________________// - -void -progress_monitor_t::test_start( counter_t test_cases_amount ) -{ - s_pm_impl().m_color_output = runtime_config::get<bool>( runtime_config::btrt_color_output ); - - PM_SCOPED_COLOR(); - - s_pm_impl().m_progress_display.reset( new progress_display( test_cases_amount, *s_pm_impl().m_stream ) ); -} - -//____________________________________________________________________________// - -void -progress_monitor_t::test_aborted() -{ - PM_SCOPED_COLOR(); - - (*s_pm_impl().m_progress_display) += s_pm_impl().m_progress_display->count(); -} - -//____________________________________________________________________________// - -void -progress_monitor_t::test_unit_finish( test_unit const& tu, unsigned long ) -{ - PM_SCOPED_COLOR(); - - if( tu.p_type == TUT_CASE ) - ++(*s_pm_impl().m_progress_display); -} - -//____________________________________________________________________________// - -void -progress_monitor_t::test_unit_skipped( test_unit const& tu, const_string /*reason*/ ) -{ - PM_SCOPED_COLOR(); - - test_case_counter tcc; - traverse_test_tree( tu, tcc ); - - (*s_pm_impl().m_progress_display) += tcc.p_count; -} - -//____________________________________________________________________________// - -void -progress_monitor_t::set_stream( std::ostream& ostr ) -{ - s_pm_impl().m_stream = &ostr; -} - -//____________________________________________________________________________// - -#undef PM_SCOPED_COLOR - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_PROGRESS_MONITOR_IPP_020105GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/results_collector.ipp b/src/third_party/boost-1.69.0/boost/test/impl/results_collector.ipp deleted file mode 100644 index cfc34cf7934..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/results_collector.ipp +++ /dev/null @@ -1,299 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// Test results collecting facility. -/// -// *************************************************************************** - -#ifndef BOOST_TEST_RESULTS_COLLECTOR_IPP_021105GER -#define BOOST_TEST_RESULTS_COLLECTOR_IPP_021105GER - -// Boost.Test -#include <boost/test/unit_test_log.hpp> -#include <boost/test/results_collector.hpp> -#include <boost/test/framework.hpp> - -#include <boost/test/tree/test_unit.hpp> -#include <boost/test/tree/visitor.hpp> -#include <boost/test/tree/test_case_counter.hpp> -#include <boost/test/tree/traverse.hpp> - -// Boost -#include <boost/cstdlib.hpp> - -// STL -#include <map> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** test_results ************** // -// ************************************************************************** // - -test_results::test_results() -{ - clear(); -} - -//____________________________________________________________________________// - -bool -test_results::passed() const -{ - // if it is skipped, it is not passed. However, if any children is not failed/aborted - // then their skipped status is not taken into account. - return !p_skipped && - p_test_cases_failed == 0 && - p_assertions_failed <= p_expected_failures && - // p_test_cases_skipped == 0 && - !p_aborted; -} - -//____________________________________________________________________________// - -bool -test_results::aborted() const -{ - return p_aborted; -} - -//____________________________________________________________________________// - -bool -test_results::skipped() const -{ - return p_skipped; -} - -//____________________________________________________________________________// - -int -test_results::result_code() const -{ - return passed() ? exit_success - : ( (p_assertions_failed > p_expected_failures || p_skipped ) - ? exit_test_failure - : exit_exception_failure ); -} - -//____________________________________________________________________________// - -void -test_results::operator+=( test_results const& tr ) -{ - p_assertions_passed.value += tr.p_assertions_passed; - p_assertions_failed.value += tr.p_assertions_failed; - p_warnings_failed.value += tr.p_warnings_failed; - p_test_cases_passed.value += tr.p_test_cases_passed; - p_test_cases_warned.value += tr.p_test_cases_warned; - p_test_cases_failed.value += tr.p_test_cases_failed; - p_test_cases_skipped.value += tr.p_test_cases_skipped; - p_test_cases_aborted.value += tr.p_test_cases_aborted; - p_duration_microseconds.value += tr.p_duration_microseconds; -} - -//____________________________________________________________________________// - -void -test_results::clear() -{ - p_assertions_passed.value = 0; - p_assertions_failed.value = 0; - p_warnings_failed.value = 0; - p_expected_failures.value = 0; - p_test_cases_passed.value = 0; - p_test_cases_warned.value = 0; - p_test_cases_failed.value = 0; - p_test_cases_skipped.value = 0; - p_test_cases_aborted.value = 0; - p_duration_microseconds.value= 0; - p_aborted.value = false; - p_skipped.value = false; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** results_collector ************** // -// ************************************************************************** // - -namespace { - -struct results_collector_impl { - std::map<test_unit_id,test_results> m_results_store; -}; - -results_collector_impl& s_rc_impl() { static results_collector_impl the_inst; return the_inst; } - -} // local namespace - -//____________________________________________________________________________// - -BOOST_TEST_SINGLETON_CONS_IMPL( results_collector_t ) - -//____________________________________________________________________________// - -void -results_collector_t::test_start( counter_t ) -{ - s_rc_impl().m_results_store.clear(); -} - -//____________________________________________________________________________// - -void -results_collector_t::test_unit_start( test_unit const& tu ) -{ - // init test_results entry - test_results& tr = s_rc_impl().m_results_store[tu.p_id]; - - tr.clear(); - - tr.p_expected_failures.value = tu.p_expected_failures; -} - -//____________________________________________________________________________// - -class results_collect_helper : public test_tree_visitor { -public: - explicit results_collect_helper( test_results& tr, test_unit const& ts ) : m_tr( tr ), m_ts( ts ) {} - - void visit( test_case const& tc ) - { - test_results const& tr = results_collector.results( tc.p_id ); - m_tr += tr; - - if( tr.passed() ) { - if( tr.p_warnings_failed ) - m_tr.p_test_cases_warned.value++; - else - m_tr.p_test_cases_passed.value++; - } - else if( tr.p_skipped ) - m_tr.p_test_cases_skipped.value++; - else { - if( tr.p_aborted ) - m_tr.p_test_cases_aborted.value++; - - m_tr.p_test_cases_failed.value++; - } - } - bool test_suite_start( test_suite const& ts ) - { - if( m_ts.p_id == ts.p_id ) - return true; - - m_tr += results_collector.results( ts.p_id ); - return false; - } - -private: - // Data members - test_results& m_tr; - test_unit const& m_ts; -}; - -//____________________________________________________________________________// - -void -results_collector_t::test_unit_finish( test_unit const& tu, unsigned long elapsed_in_microseconds ) -{ - if( tu.p_type == TUT_SUITE ) { - results_collect_helper ch( s_rc_impl().m_results_store[tu.p_id], tu ); - - traverse_test_tree( tu, ch ); - } - else { - test_results & tr = s_rc_impl().m_results_store[tu.p_id]; - tr.p_duration_microseconds.value = elapsed_in_microseconds; - - bool num_failures_match = tr.p_aborted || tr.p_assertions_failed >= tr.p_expected_failures; - if( !num_failures_match ) - BOOST_TEST_FRAMEWORK_MESSAGE( "Test case " << tu.full_name() << " has fewer failures than expected" ); - - bool check_any_assertions = tr.p_aborted || (tr.p_assertions_failed != 0) || (tr.p_assertions_passed != 0); - if( !check_any_assertions ) - BOOST_TEST_FRAMEWORK_MESSAGE( "Test case " << tu.full_name() << " did not check any assertions" ); - } -} - -//____________________________________________________________________________// - -void -results_collector_t::test_unit_skipped( test_unit const& tu, const_string /*reason*/ ) -{ - test_results& tr = s_rc_impl().m_results_store[tu.p_id]; - - tr.clear(); - - tr.p_skipped.value = true; - - if( tu.p_type == TUT_SUITE ) { - test_case_counter tcc; - traverse_test_tree( tu, tcc ); - - tr.p_test_cases_skipped.value = tcc.p_count; - } -} - -//____________________________________________________________________________// - -void -results_collector_t::assertion_result( unit_test::assertion_result ar ) -{ - test_results& tr = s_rc_impl().m_results_store[framework::current_test_case_id()]; - - switch( ar ) { - case AR_PASSED: tr.p_assertions_passed.value++; break; - case AR_FAILED: tr.p_assertions_failed.value++; break; - case AR_TRIGGERED: tr.p_warnings_failed.value++; break; - } - - if( tr.p_assertions_failed == 1 ) - first_failed_assertion(); -} - -//____________________________________________________________________________// - -void -results_collector_t::exception_caught( execution_exception const& ) -{ - test_results& tr = s_rc_impl().m_results_store[framework::current_test_case_id()]; - - tr.p_assertions_failed.value++; -} - -//____________________________________________________________________________// - -void -results_collector_t::test_unit_aborted( test_unit const& tu ) -{ - s_rc_impl().m_results_store[tu.p_id].p_aborted.value = true; -} - -//____________________________________________________________________________// - -test_results const& -results_collector_t::results( test_unit_id id ) const -{ - return s_rc_impl().m_results_store[id]; -} - -//____________________________________________________________________________// - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_RESULTS_COLLECTOR_IPP_021105GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/results_reporter.ipp b/src/third_party/boost-1.69.0/boost/test/impl/results_reporter.ipp deleted file mode 100644 index 87c1172e127..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/results_reporter.ipp +++ /dev/null @@ -1,197 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : result reporting facilties -// *************************************************************************** - -#ifndef BOOST_TEST_RESULTS_REPORTER_IPP_020105GER -#define BOOST_TEST_RESULTS_REPORTER_IPP_020105GER - -// Boost.Test -#include <boost/test/results_reporter.hpp> -#include <boost/test/results_collector.hpp> -#include <boost/test/framework.hpp> - -#include <boost/test/output/plain_report_formatter.hpp> -#include <boost/test/output/xml_report_formatter.hpp> - -#include <boost/test/tree/visitor.hpp> -#include <boost/test/tree/test_unit.hpp> -#include <boost/test/tree/traverse.hpp> - -// Boost -#include <boost/scoped_ptr.hpp> -#include <boost/io/ios_state.hpp> -typedef ::boost::io::ios_base_all_saver io_saver_type; - -// STL -#include <iostream> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace results_reporter { - -// ************************************************************************** // -// ************** result reporter implementation ************** // -// ************************************************************************** // - -namespace { - -struct results_reporter_impl : test_tree_visitor { - // Constructor - results_reporter_impl() - : m_stream( &std::cerr ) - , m_stream_state_saver( new io_saver_type( std::cerr ) ) - , m_report_level( CONFIRMATION_REPORT ) - , m_formatter( new output::plain_report_formatter ) - {} - - // test tree visitor interface implementation - void visit( test_case const& tc ) - { - m_formatter->test_unit_report_start( tc, *m_stream ); - m_formatter->test_unit_report_finish( tc, *m_stream ); - } - bool test_suite_start( test_suite const& ts ) - { - m_formatter->test_unit_report_start( ts, *m_stream ); - - if( m_report_level == DETAILED_REPORT && !results_collector.results( ts.p_id ).p_skipped ) - return true; - - m_formatter->test_unit_report_finish( ts, *m_stream ); - return false; - } - void test_suite_finish( test_suite const& ts ) - { - m_formatter->test_unit_report_finish( ts, *m_stream ); - } - - typedef scoped_ptr<io_saver_type> saver_ptr; - - // Data members - std::ostream* m_stream; - saver_ptr m_stream_state_saver; - report_level m_report_level; - scoped_ptr<format> m_formatter; -}; - -results_reporter_impl& s_rr_impl() { static results_reporter_impl the_inst; return the_inst; } - -} // local namespace - -// ************************************************************************** // -// ************** report configuration ************** // -// ************************************************************************** // - -void -set_level( report_level l ) -{ - if( l != INV_REPORT_LEVEL ) - s_rr_impl().m_report_level = l; -} - -//____________________________________________________________________________// - -void -set_stream( std::ostream& ostr ) -{ - s_rr_impl().m_stream = &ostr; - s_rr_impl().m_stream_state_saver.reset( new io_saver_type( ostr ) ); -} - -//____________________________________________________________________________// - -std::ostream& -get_stream() -{ - return *s_rr_impl().m_stream; -} - -//____________________________________________________________________________// - -void -set_format( output_format rf ) -{ - switch( rf ) { - default: - case OF_CLF: - set_format( new output::plain_report_formatter ); - break; - case OF_XML: - set_format( new output::xml_report_formatter ); - break; - } -} - -//____________________________________________________________________________// - -void -set_format( results_reporter::format* f ) -{ - if( f ) - s_rr_impl().m_formatter.reset( f ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** report initiation ************** // -// ************************************************************************** // - -void -make_report( report_level l, test_unit_id id ) -{ - if( l == INV_REPORT_LEVEL ) - l = s_rr_impl().m_report_level; - - if( l == NO_REPORT ) - return; - - if( id == INV_TEST_UNIT_ID ) - id = framework::master_test_suite().p_id; - - s_rr_impl().m_stream_state_saver->restore(); - - report_level bkup = s_rr_impl().m_report_level; - s_rr_impl().m_report_level = l; - - s_rr_impl().m_formatter->results_report_start( *s_rr_impl().m_stream ); - - switch( l ) { - case CONFIRMATION_REPORT: - s_rr_impl().m_formatter->do_confirmation_report( framework::get<test_unit>( id ), *s_rr_impl().m_stream ); - break; - case SHORT_REPORT: - case DETAILED_REPORT: - traverse_test_tree( id, s_rr_impl() ); - break; - default: - break; - } - - s_rr_impl().m_formatter->results_report_finish( *s_rr_impl().m_stream ); - s_rr_impl().m_report_level = bkup; -} - -//____________________________________________________________________________// - -} // namespace results_reporter -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_RESULTS_REPORTER_IPP_020105GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/test_framework_init_observer.ipp b/src/third_party/boost-1.69.0/boost/test/impl/test_framework_init_observer.ipp deleted file mode 100644 index a44382eed50..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/test_framework_init_observer.ipp +++ /dev/null @@ -1,117 +0,0 @@ -// (c) Copyright Raffi Enficiaud 2017. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//! @file -//! An observer for monitoring the success/failure of the other observers -// *************************************************************************** - -#ifndef BOOST_TEST_FRAMEWORK_INIT_OBSERVER_IPP_021105GER -#define BOOST_TEST_FRAMEWORK_INIT_OBSERVER_IPP_021105GER - -// Boost.Test -#include <boost/test/test_framework_init_observer.hpp> -#include <boost/test/framework.hpp> -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** framework_init_observer_t ************** // -// ************************************************************************** // - -namespace { - -struct test_init_observer_check { - bool has_failure; - - void clear() - { - has_failure = false; - } -}; - - -test_init_observer_check& s_tioc_impl() { static test_init_observer_check the_inst; return the_inst; } - -} // local namespace - - -//____________________________________________________________________________// - -// singleton pattern -BOOST_TEST_SINGLETON_CONS_IMPL(framework_init_observer_t) - -//____________________________________________________________________________// - -void -framework_init_observer_t::clear() -{ - if(!framework::test_in_progress()) - s_tioc_impl().clear(); -} - -//____________________________________________________________________________// - -void -framework_init_observer_t::test_start( counter_t ) -{ - clear(); -} - -//____________________________________________________________________________// - -void -framework_init_observer_t::assertion_result( unit_test::assertion_result ar ) -{ - test_init_observer_check& tr = s_tioc_impl(); - switch( ar ) { - case AR_TRIGGERED: break; - case AR_PASSED: break; - case AR_FAILED: tr.has_failure = true; break; - default: - break; - } -} - -//____________________________________________________________________________// - -void -framework_init_observer_t::exception_caught( execution_exception const& ) -{ - test_init_observer_check& tr = s_tioc_impl(); - tr.has_failure = true; -} - -void -framework_init_observer_t::test_aborted() -{ - s_tioc_impl().has_failure = true; -} - - -//____________________________________________________________________________// - -bool -framework_init_observer_t::has_failed() const -{ - return s_tioc_impl().has_failure; -} - -//____________________________________________________________________________// - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_FRAMEWORK_INIT_OBSERVER_IPP_021105GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/test_main.ipp b/src/third_party/boost-1.69.0/boost/test/impl/test_main.ipp deleted file mode 100644 index 6adc5bb9c23..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/test_main.ipp +++ /dev/null @@ -1,65 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// (C) Copyright Beman Dawes 1995-2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief Implements main function for Test Execution Monitor. -// *************************************************************************** - -#ifndef BOOST_TEST_TEST_MAIN_IPP_012205GER -#define BOOST_TEST_TEST_MAIN_IPP_012205GER - -// Boost.Test -#include <boost/test/framework.hpp> -#include <boost/test/test_tools.hpp> -#include <boost/test/unit_test_suite.hpp> - -// Boost -#include <boost/cstdlib.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -extern int test_main( int argc, char* argv[] ); // prototype for user's test_main() - -struct test_main_caller { - test_main_caller( int argc, char** argv ) : m_argc( argc ), m_argv( argv ) {} - - void operator()() { - int test_main_result = test_main( m_argc, m_argv ); - - // translate a test_main non-success return into a test error - BOOST_CHECK( test_main_result == 0 || test_main_result == boost::exit_success ); - } - -private: - // Data members - int m_argc; - char** m_argv; -}; - -// ************************************************************************** // -// ************** test main ************** // -// ************************************************************************** // - -::boost::unit_test::test_suite* -init_unit_test_suite( int argc, char* argv[] ) { - using namespace ::boost::unit_test; - - framework::master_test_suite().p_name.value = "Test Program"; - - framework::master_test_suite().add( BOOST_TEST_CASE( test_main_caller( argc, argv ) ) ); - - return 0; -} - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TEST_MAIN_IPP_012205GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/test_tools.ipp b/src/third_party/boost-1.69.0/boost/test/impl/test_tools.ipp deleted file mode 100644 index 2956879326b..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/test_tools.ipp +++ /dev/null @@ -1,823 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : supplies offline implementation for the Test Tools -// *************************************************************************** - -#ifndef BOOST_TEST_TEST_TOOLS_IPP_012205GER -#define BOOST_TEST_TEST_TOOLS_IPP_012205GER - -// Boost.Test -#include <boost/test/unit_test_log.hpp> -#include <boost/test/tools/context.hpp> -#include <boost/test/tools/output_test_stream.hpp> - -#include <boost/test/tools/detail/fwd.hpp> -#include <boost/test/tools/detail/print_helper.hpp> - -#include <boost/test/framework.hpp> -#include <boost/test/tree/test_unit.hpp> -#include <boost/test/execution_monitor.hpp> // execution_aborted - -#include <boost/test/detail/throw_exception.hpp> - -#include <boost/test/utils/algorithm.hpp> - -// Boost -#include <boost/config.hpp> - -// STL -#include <fstream> -#include <string> -#include <cstring> -#include <cctype> -#include <cwchar> -#include <stdexcept> -#include <vector> -#include <utility> -#include <ios> - -// !! should we use #include <cstdarg> -#include <stdarg.h> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -# ifdef BOOST_NO_STDC_NAMESPACE -namespace std { using ::strcmp; using ::strlen; using ::isprint; } -#if !defined( BOOST_NO_CWCHAR ) -namespace std { using ::wcscmp; } -#endif -# endif - -namespace boost { -namespace test_tools { -namespace tt_detail { - -// ************************************************************************** // -// ************** print_log_value ************** // -// ************************************************************************** // - -void -print_log_value<bool>::operator()( std::ostream& ostr, bool t ) -{ - ostr << std::boolalpha << t; -} - -void -print_log_value<char>::operator()( std::ostream& ostr, char t ) -{ - if( (std::isprint)( static_cast<unsigned char>(t) ) ) - ostr << '\'' << t << '\''; - else - ostr << std::hex -#if BOOST_TEST_USE_STD_LOCALE - << std::showbase -#else - << "0x" -#endif - << static_cast<int>(t); -} - -//____________________________________________________________________________// - -void -print_log_value<unsigned char>::operator()( std::ostream& ostr, unsigned char t ) -{ - ostr << std::hex - // showbase is only available for new style streams: -#if BOOST_TEST_USE_STD_LOCALE - << std::showbase -#else - << "0x" -#endif - << static_cast<int>(t); -} - -//____________________________________________________________________________// - -void -print_log_value<char const*>::operator()( std::ostream& ostr, char const* t ) -{ - ostr << ( t ? t : "null string" ); -} - -//____________________________________________________________________________// - -void -print_log_value<wchar_t const*>::operator()( std::ostream& ostr, wchar_t const* t ) -{ - ostr << ( t ? t : L"null string" ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** TOOL BOX Implementation ************** // -// ************************************************************************** // - -using ::boost::unit_test::lazy_ostream; - -static char const* check_str [] = { " == ", " != ", " < " , " <= ", " > " , " >= " }; -static char const* rever_str [] = { " != ", " == ", " >= ", " > " , " <= ", " < " }; - -template<typename OutStream> -void -format_report( OutStream& os, assertion_result const& pr, unit_test::lazy_ostream const& assertion_descr, - tool_level tl, check_type ct, - std::size_t num_args, va_list args, - char const* prefix, char const* suffix ) -{ - using namespace unit_test; - - switch( ct ) { - case CHECK_PRED: - os << prefix << assertion_descr << suffix; - - if( !pr.has_empty_message() ) - os << ". " << pr.message(); - break; - - case CHECK_BUILT_ASSERTION: { - os << prefix << assertion_descr << suffix; - - if( tl != PASS ) { - const_string details_message = pr.message(); - - if( !details_message.is_empty() ) { - os << details_message; - } - } - break; - } - - case CHECK_MSG: - if( tl == PASS ) - os << prefix << "'" << assertion_descr << "'" << suffix; - else - os << assertion_descr; - - if( !pr.has_empty_message() ) - os << ". " << pr.message(); - break; - - case CHECK_EQUAL: - case CHECK_NE: - case CHECK_LT: - case CHECK_LE: - case CHECK_GT: - case CHECK_GE: { - char const* arg1_descr = va_arg( args, char const* ); - lazy_ostream const* arg1_val = va_arg( args, lazy_ostream const* ); - char const* arg2_descr = va_arg( args, char const* ); - lazy_ostream const* arg2_val = va_arg( args, lazy_ostream const* ); - - os << prefix << arg1_descr << check_str[ct-CHECK_EQUAL] << arg2_descr << suffix; - - if( tl != PASS ) - os << " [" << *arg1_val << rever_str[ct-CHECK_EQUAL] << *arg2_val << "]" ; - - if( !pr.has_empty_message() ) - os << ". " << pr.message(); - break; - } - - case CHECK_CLOSE: - case CHECK_CLOSE_FRACTION: { - char const* arg1_descr = va_arg( args, char const* ); - lazy_ostream const* arg1_val = va_arg( args, lazy_ostream const* ); - char const* arg2_descr = va_arg( args, char const* ); - lazy_ostream const* arg2_val = va_arg( args, lazy_ostream const* ); - /* toler_descr = */ va_arg( args, char const* ); - lazy_ostream const* toler_val = va_arg( args, lazy_ostream const* ); - - os << "difference{" << pr.message() - << "} between " << arg1_descr << "{" << *arg1_val - << "} and " << arg2_descr << "{" << *arg2_val - << ( tl == PASS ? "} doesn't exceed " : "} exceeds " ) - << *toler_val; - if( ct == CHECK_CLOSE ) - os << "%"; - break; - } - case CHECK_SMALL: { - char const* arg1_descr = va_arg( args, char const* ); - lazy_ostream const* arg1_val = va_arg( args, lazy_ostream const* ); - /* toler_descr = */ va_arg( args, char const* ); - lazy_ostream const* toler_val = va_arg( args, lazy_ostream const* ); - - os << "absolute value of " << arg1_descr << "{" << *arg1_val << "}" - << ( tl == PASS ? " doesn't exceed " : " exceeds " ) - << *toler_val; - - if( !pr.has_empty_message() ) - os << ". " << pr.message(); - break; - } - - case CHECK_PRED_WITH_ARGS: { - std::vector< std::pair<char const*, lazy_ostream const*> > args_copy; - args_copy.reserve( num_args ); - for( std::size_t i = 0; i < num_args; ++i ) { - char const* desc = va_arg( args, char const* ); - lazy_ostream const* value = va_arg( args, lazy_ostream const* ); - args_copy.push_back( std::make_pair( desc, value ) ); - } - - os << prefix << assertion_descr; - - // print predicate call description - os << "( "; - for( std::size_t i = 0; i < num_args; ++i ) { - os << args_copy[i].first; - - if( i != num_args-1 ) - os << ", "; - } - os << " )" << suffix; - - if( tl != PASS ) { - os << " for ( "; - for( std::size_t i = 0; i < num_args; ++i ) { - os << *args_copy[i].second; - - if( i != num_args-1 ) - os << ", "; - } - os << " )"; - } - - if( !pr.has_empty_message() ) - os << ". " << pr.message(); - break; - } - - case CHECK_EQUAL_COLL: { - char const* left_begin_descr = va_arg( args, char const* ); - char const* left_end_descr = va_arg( args, char const* ); - char const* right_begin_descr = va_arg( args, char const* ); - char const* right_end_descr = va_arg( args, char const* ); - - os << prefix << "{ " << left_begin_descr << ", " << left_end_descr << " } == { " - << right_begin_descr << ", " << right_end_descr << " }" - << suffix; - - if( !pr.has_empty_message() ) - os << ". " << pr.message(); - break; - } - - case CHECK_BITWISE_EQUAL: { - char const* left_descr = va_arg( args, char const* ); - char const* right_descr = va_arg( args, char const* ); - - os << prefix << left_descr << " =.= " << right_descr << suffix; - - if( !pr.has_empty_message() ) - os << ". " << pr.message(); - break; - } - } -} - -//____________________________________________________________________________// - -bool -report_assertion( assertion_result const& ar, - lazy_ostream const& assertion_descr, - const_string file_name, - std::size_t line_num, - tool_level tl, - check_type ct, - std::size_t num_args, ... ) -{ - using namespace unit_test; - - if( !framework::test_in_progress() ) { - // in case no test is in progress, we do not throw anything: - // raising an exception here may result in raising an exception in a destructor of a global fixture - // which will abort the process - // We flag this as aborted instead - - //BOOST_TEST_I_ASSRT( framework::current_test_case_id() != INV_TEST_UNIT_ID, - // std::runtime_error( "Can't use testing tools outside of test case implementation." ) ); - - framework::test_aborted(); - return false; - } - - - if( !!ar ) - tl = PASS; - - log_level ll; - char const* prefix; - char const* suffix; - - switch( tl ) { - case PASS: - ll = log_successful_tests; - prefix = "check "; - suffix = " has passed"; - break; - case WARN: - ll = log_warnings; - prefix = "condition "; - suffix = " is not satisfied"; - break; - case CHECK: - ll = log_all_errors; - prefix = "check "; - suffix = " has failed"; - break; - case REQUIRE: - ll = log_fatal_errors; - prefix = "critical check "; - suffix = " has failed"; - break; - default: - return true; - } - - unit_test_log << unit_test::log::begin( file_name, line_num ) << ll; - va_list args; - va_start( args, num_args ); - - format_report( unit_test_log, ar, assertion_descr, tl, ct, num_args, args, prefix, suffix ); - - va_end( args ); - unit_test_log << unit_test::log::end(); - - switch( tl ) { - case PASS: - framework::assertion_result( AR_PASSED ); - return true; - - case WARN: - framework::assertion_result( AR_TRIGGERED ); - return false; - - case CHECK: - framework::assertion_result( AR_FAILED ); - return false; - - case REQUIRE: - framework::assertion_result( AR_FAILED ); - framework::test_unit_aborted( framework::current_test_unit() ); - BOOST_TEST_I_THROW( execution_aborted() ); - return false; - } - - return true; -} - -//____________________________________________________________________________// - -assertion_result -format_assertion_result( const_string expr_val, const_string details ) -{ - assertion_result res(false); - - bool starts_new_line = first_char( expr_val ) == '\n'; - - if( !starts_new_line && !expr_val.is_empty() ) - res.message().stream() << " [" << expr_val << "]"; - - if( !details.is_empty() ) { - if( first_char(details) != '[' ) - res.message().stream() << ". "; - else - res.message().stream() << " "; - - res.message().stream() << details; - } - - if( starts_new_line ) - res.message().stream() << "." << expr_val; - - return res; -} - -//____________________________________________________________________________// - -BOOST_TEST_DECL std::string -prod_report_format( assertion_result const& ar, unit_test::lazy_ostream const& assertion_descr, check_type ct, std::size_t num_args, ... ) -{ - std::ostringstream msg_buff; - - va_list args; - va_start( args, num_args ); - - format_report( msg_buff, ar, assertion_descr, CHECK, ct, num_args, args, "assertion ", " failed" ); - - va_end( args ); - - return msg_buff.str(); -} - -//____________________________________________________________________________// - -assertion_result -equal_impl( char const* left, char const* right ) -{ - return (left && right) ? std::strcmp( left, right ) == 0 : (left == right); -} - -//____________________________________________________________________________// - -#if !defined( BOOST_NO_CWCHAR ) - -assertion_result -equal_impl( wchar_t const* left, wchar_t const* right ) -{ - return (left && right) ? std::wcscmp( left, right ) == 0 : (left == right); -} - -#endif // !defined( BOOST_NO_CWCHAR ) - -//____________________________________________________________________________// - -bool -is_defined_impl( const_string symbol_name, const_string symbol_value ) -{ - symbol_value.trim_left( 2 ); - return symbol_name != symbol_value; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** context_frame ************** // -// ************************************************************************** // - -context_frame::context_frame( ::boost::unit_test::lazy_ostream const& context_descr ) -: m_frame_id( unit_test::framework::add_context( context_descr, true ) ) -{ -} - -//____________________________________________________________________________// - -context_frame::~context_frame() -{ - unit_test::framework::clear_context( m_frame_id ); -} - -//____________________________________________________________________________// - -context_frame::operator bool() -{ - return true; -} - -//____________________________________________________________________________// - -} // namespace tt_detail - -// ************************************************************************** // -// ************** output_test_stream ************** // -// ************************************************************************** // - -struct output_test_stream::Impl -{ - std::fstream m_pattern; - bool m_match_or_save; - bool m_text_or_binary; - std::string m_synced_string; - - char get_char() - { - char res = 0; - do { - m_pattern.get( res ); - } while( m_text_or_binary && res == '\r' && !m_pattern.fail() && !m_pattern.eof() ); - - return res; - } - - void check_and_fill( assertion_result& res ) - { - if( !res.p_predicate_value ) - res.message() << "Output content: \"" << m_synced_string << '\"'; - } -}; - -//____________________________________________________________________________// - -output_test_stream::output_test_stream( const_string pattern_file_name, bool match_or_save, bool text_or_binary ) -: m_pimpl( new Impl ) -{ - if( !pattern_file_name.is_empty() ) { - std::ios::openmode m = match_or_save ? std::ios::in : std::ios::out; - if( !text_or_binary ) - m |= std::ios::binary; - - m_pimpl->m_pattern.open( pattern_file_name.begin(), m ); - - if( !m_pimpl->m_pattern.is_open() ) - BOOST_TEST_FRAMEWORK_MESSAGE( "Can't open pattern file " << pattern_file_name << " for " << (match_or_save ? "reading" : "writing") ); - } - - m_pimpl->m_match_or_save = match_or_save; - m_pimpl->m_text_or_binary = text_or_binary; -} - -//____________________________________________________________________________// - -output_test_stream::~output_test_stream() -{ - delete m_pimpl; -} - -//____________________________________________________________________________// - -assertion_result -output_test_stream::is_empty( bool flush_stream ) -{ - sync(); - - assertion_result res( m_pimpl->m_synced_string.empty() ); - - m_pimpl->check_and_fill( res ); - - if( flush_stream ) - flush(); - - return res; -} - -//____________________________________________________________________________// - -assertion_result -output_test_stream::check_length( std::size_t length_, bool flush_stream ) -{ - sync(); - - assertion_result res( m_pimpl->m_synced_string.length() == length_ ); - - m_pimpl->check_and_fill( res ); - - if( flush_stream ) - flush(); - - return res; -} - -//____________________________________________________________________________// - -assertion_result -output_test_stream::is_equal( const_string arg, bool flush_stream ) -{ - sync(); - - assertion_result res( const_string( m_pimpl->m_synced_string ) == arg ); - - m_pimpl->check_and_fill( res ); - - if( flush_stream ) - flush(); - - return res; -} - -//____________________________________________________________________________// - -std::string pretty_print_log(std::string str) { - - static const std::string to_replace[] = { "\r", "\n" }; - static const std::string replacement[] = { "\\r", "\\n" }; - - return unit_test::utils::replace_all_occurrences_of( - str, - to_replace, to_replace + sizeof(to_replace)/sizeof(to_replace[0]), - replacement, replacement + sizeof(replacement)/sizeof(replacement[0])); -} - -assertion_result -output_test_stream::match_pattern( bool flush_stream ) -{ - const std::string::size_type n_chars_presuffix = 10; - sync(); - - assertion_result result( true ); - - const std::string stream_string_repr = get_stream_string_representation(); - - if( !m_pimpl->m_pattern.is_open() ) { - result = false; - result.message() << "Pattern file can't be opened!"; - } - else { - if( m_pimpl->m_match_or_save ) { - - int offset = 0; - std::vector<char> last_elements; - for ( std::string::size_type i = 0; static_cast<int>(i + offset) < static_cast<int>(stream_string_repr.length()); ++i ) { - - char c = m_pimpl->get_char(); - - if( last_elements.size() <= n_chars_presuffix ) { - last_elements.push_back( c ); - } - else { - last_elements[ i % last_elements.size() ] = c; - } - - bool is_same = !m_pimpl->m_pattern.fail() && - !m_pimpl->m_pattern.eof() && - (stream_string_repr[i+offset] == c); - - if( !is_same ) { - - result = false; - - std::string::size_type prefix_size = (std::min)( i + offset, n_chars_presuffix ); - - std::string::size_type suffix_size = (std::min)( stream_string_repr.length() - i - offset, - n_chars_presuffix ); - - // try to log area around the mismatch - std::string substr = stream_string_repr.substr(0, i+offset); - std::size_t line = std::count(substr.begin(), substr.end(), '\n'); - std::size_t column = i + offset - substr.rfind('\n'); - - result.message() - << "Mismatch at position " << i - << " (line " << line - << ", column " << column - << "): '" << pretty_print_log(std::string(1, stream_string_repr[i+offset])) << "' != '" << pretty_print_log(std::string(1, c)) << "' :\n"; - - // we already escape this substring because we need its actual size for the pretty print - // of the difference location. - std::string sub_str_prefix(pretty_print_log(stream_string_repr.substr( i + offset - prefix_size, prefix_size ))); - - // we need this substring as is because we compute the best matching substrings on it. - std::string sub_str_suffix(stream_string_repr.substr( i + offset, suffix_size)); - result.message() << "... " << sub_str_prefix + pretty_print_log(sub_str_suffix) << " ..." << '\n'; - - result.message() << "... "; - for( std::size_t j = 0; j < last_elements.size() ; j++ ) - result.message() << pretty_print_log(std::string(1, last_elements[(i + j + 1) % last_elements.size()])); - - std::vector<char> last_elements_ordered; - last_elements_ordered.push_back(c); - for( std::string::size_type counter = 0; counter < suffix_size - 1 ; counter++ ) { - char c2 = m_pimpl->get_char(); - - if( m_pimpl->m_pattern.fail() || m_pimpl->m_pattern.eof() ) - break; - - result.message() << pretty_print_log(std::string(1, c2)); - - last_elements_ordered.push_back(c2); - } - - // tries to find the best substring matching in the remainder of the - // two strings - std::size_t max_nb_char_in_common = 0; - std::size_t best_pattern_start_index = 0; - std::size_t best_stream_start_index = 0; - for( std::size_t pattern_start_index = best_pattern_start_index; - pattern_start_index < last_elements_ordered.size(); - pattern_start_index++ ) { - for( std::size_t stream_start_index = best_stream_start_index; - stream_start_index < sub_str_suffix.size(); - stream_start_index++ ) { - - std::size_t max_size = (std::min)( last_elements_ordered.size() - pattern_start_index, sub_str_suffix.size() - stream_start_index ); - if( max_nb_char_in_common > max_size ) - break; // safely break to go to the outer loop - - std::size_t nb_char_in_common = 0; - for( std::size_t k = 0; k < max_size; k++) { - if( last_elements_ordered[pattern_start_index + k] == sub_str_suffix[stream_start_index + k] ) - nb_char_in_common ++; - else - break; // we take fully matching substring only - } - - if( nb_char_in_common > max_nb_char_in_common ) { - max_nb_char_in_common = nb_char_in_common; - best_pattern_start_index = pattern_start_index; - best_stream_start_index = stream_start_index; - } - } - } - - // indicates with more precision the location of the mismatchs in "ascii arts" ... - result.message() << " ...\n... "; - for( std::string::size_type j = 0; j < sub_str_prefix.size(); j++) { - result.message() << ' '; - } - - result.message() << '~'; // places the first tilde at the current char that mismatches - - for( std::size_t k = 1; k < (std::max)(best_pattern_start_index, best_stream_start_index); k++ ) { // 1 is for the current char c - std::string s1(pretty_print_log(std::string(1, last_elements_ordered[(std::min)(k, best_pattern_start_index)]))); - std::string s2(pretty_print_log(std::string(1, sub_str_suffix[(std::min)(k, best_stream_start_index)]))); - for( int h = (std::max)(s1.size(), s2.size()); h > 0; h--) - result.message() << "~"; - } - - if( m_pimpl->m_pattern.eof() ) { - result.message() << " (reference string shorter than current stream)"; - } - - result.message() << "\n"; - - // no need to continue if the EOF is reached - if( m_pimpl->m_pattern.eof() ) { - break; - } - - // first char is a replicat of c, so we do not copy it. - for(std::string::size_type counter = 0; counter < last_elements_ordered.size() - 1 ; counter++) - last_elements[ (i + 1 + counter) % last_elements.size() ] = last_elements_ordered[counter + 1]; - - i += last_elements_ordered.size()-1; - offset += best_stream_start_index - best_pattern_start_index; - - } - - } - - // not needed anymore - /* - if(offset > 0 && false) { - m_pimpl->m_pattern.ignore( - static_cast<std::streamsize>( offset )); - } - */ - } - else { - m_pimpl->m_pattern.write( stream_string_repr.c_str(), - static_cast<std::streamsize>( stream_string_repr.length() ) ); - m_pimpl->m_pattern.flush(); - } - } - - if( flush_stream ) - flush(); - - return result; -} - -//____________________________________________________________________________// - -void -output_test_stream::flush() -{ - m_pimpl->m_synced_string.erase(); - -#ifndef BOOST_NO_STRINGSTREAM - str( std::string() ); -#else - seekp( 0, std::ios::beg ); -#endif -} - - -std::string -output_test_stream::get_stream_string_representation() const { - return m_pimpl->m_synced_string; -} - -//____________________________________________________________________________// - -std::size_t -output_test_stream::length() -{ - sync(); - - return m_pimpl->m_synced_string.length(); -} - -//____________________________________________________________________________// - -void -output_test_stream::sync() -{ -#ifdef BOOST_NO_STRINGSTREAM - m_pimpl->m_synced_string.assign( str(), pcount() ); - freeze( false ); -#else - m_pimpl->m_synced_string = str(); -#endif -} - -//____________________________________________________________________________// - -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TEST_TOOLS_IPP_012205GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/test_tree.ipp b/src/third_party/boost-1.69.0/boost/test/impl/test_tree.ipp deleted file mode 100644 index 722b4815b22..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/test_tree.ipp +++ /dev/null @@ -1,566 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// Provides core implementation for Unit Test Framework. -/// Extensions can be provided in separate files -// *************************************************************************** - -#ifndef BOOST_TEST_UNIT_TEST_SUITE_IPP_012205GER -#define BOOST_TEST_UNIT_TEST_SUITE_IPP_012205GER - -// Boost.Test -#include <boost/detail/workaround.hpp> - -#include <boost/test/framework.hpp> -#include <boost/test/results_collector.hpp> - -#include <boost/test/tree/test_unit.hpp> -#include <boost/test/tree/visitor.hpp> -#include <boost/test/tree/traverse.hpp> -#include <boost/test/tree/auto_registration.hpp> -#include <boost/test/tree/global_fixture.hpp> - -#include <boost/test/utils/foreach.hpp> -#include <boost/test/utils/basic_cstring/io.hpp> - -#include <boost/test/unit_test_parameters.hpp> - -// Boost -#include <boost/timer.hpp> - -// STL -#include <algorithm> -#include <vector> -#include <set> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** test_unit ************** // -// ************************************************************************** // - -test_unit::test_unit( const_string name, const_string file_name, std::size_t line_num, test_unit_type t ) -: p_type( t ) -, p_type_name( t == TUT_CASE ? "case" : "suite" ) -, p_file_name( file_name ) -, p_line_num( line_num ) -, p_id( INV_TEST_UNIT_ID ) -, p_parent_id( INV_TEST_UNIT_ID ) -, p_name( std::string( name.begin(), name.size() ) ) -, p_timeout( 0 ) -, p_expected_failures( 0 ) -, p_default_status( RS_INHERIT ) -, p_run_status( RS_INVALID ) -, p_sibling_rank(0) -{ -} - -//____________________________________________________________________________// - -test_unit::test_unit( const_string module_name ) -: p_type( TUT_SUITE ) -, p_type_name( "module" ) -, p_line_num( 0 ) -, p_id( INV_TEST_UNIT_ID ) -, p_parent_id( INV_TEST_UNIT_ID ) -, p_name( std::string( module_name.begin(), module_name.size() ) ) -, p_timeout( 0 ) -, p_expected_failures( 0 ) -, p_default_status( RS_INHERIT ) -, p_run_status( RS_INVALID ) -, p_sibling_rank(0) -{ -} - -//____________________________________________________________________________// - -test_unit::~test_unit() -{ - framework::deregister_test_unit( this ); -} - -//____________________________________________________________________________// - -void -test_unit::depends_on( test_unit* tu ) -{ - BOOST_TEST_SETUP_ASSERT( p_id != framework::master_test_suite().p_id, - "Can't add dependency to the master test suite" ); - - p_dependencies.value.push_back( tu->p_id ); -} - -//____________________________________________________________________________// - -void -test_unit::add_precondition( precondition_t const& pc ) -{ - p_preconditions.value.push_back( pc ); -} - -//____________________________________________________________________________// - -test_tools::assertion_result -test_unit::check_preconditions() const -{ - BOOST_TEST_FOREACH( test_unit_id, dep_id, p_dependencies.get() ) { - test_unit const& dep = framework::get( dep_id, TUT_ANY ); - - if( !dep.is_enabled() ) { - test_tools::assertion_result res(false); - res.message() << "dependency test " << dep.p_type_name << " \"" << dep.full_name() << "\" is disabled"; - return res; - } - - test_results const& test_rslt = unit_test::results_collector.results( dep_id ); - if( !test_rslt.passed() ) { - test_tools::assertion_result res(false); - res.message() << "dependency test " << dep.p_type_name << " \"" << dep.full_name() << (test_rslt.skipped() ? "\" was skipped":"\" has failed"); - return res; - } - - if( test_rslt.p_test_cases_skipped > 0 ) { - test_tools::assertion_result res(false); - res.message() << "dependency test " << dep.p_type_name << " \"" << dep.full_name() << "\" has skipped test cases"; - return res; - } - } - - BOOST_TEST_FOREACH( precondition_t, precondition, p_preconditions.get() ) { - test_tools::assertion_result res = precondition( p_id ); - if( !res ) { - test_tools::assertion_result res_out(false); - res_out.message() << "precondition failed"; - if( !res.has_empty_message() ) - res_out.message() << ": " << res.message(); - return res_out; - } - } - - return true; -} - -//____________________________________________________________________________// - -void -test_unit::increase_exp_fail( counter_t num ) -{ - p_expected_failures.value += num; - - if( p_parent_id != INV_TEST_UNIT_ID ) - framework::get<test_suite>( p_parent_id ).increase_exp_fail( num ); -} - -//____________________________________________________________________________// - -std::string -test_unit::full_name() const -{ - if( p_parent_id == INV_TEST_UNIT_ID || p_parent_id == framework::master_test_suite().p_id ) - return p_name; - - std::string res = framework::get<test_suite>( p_parent_id ).full_name(); - res.append("/"); - - res.append( p_name ); - - return res; -} - -//____________________________________________________________________________// - -void -test_unit::add_label( const_string l ) -{ - p_labels.value.push_back( std::string() + l ); -} - -//____________________________________________________________________________// - -bool -test_unit::has_label( const_string l ) const -{ - return std::find( p_labels->begin(), p_labels->end(), l ) != p_labels->end(); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** test_case ************** // -// ************************************************************************** // - -test_case::test_case( const_string name, boost::function<void ()> const& test_func ) -: test_unit( name, "", 0, static_cast<test_unit_type>(type) ) -, p_test_func( test_func ) -{ - framework::register_test_unit( this ); -} - -//____________________________________________________________________________// - -test_case::test_case( const_string name, const_string file_name, std::size_t line_num, boost::function<void ()> const& test_func ) -: test_unit( name, file_name, line_num, static_cast<test_unit_type>(type) ) -, p_test_func( test_func ) -{ - framework::register_test_unit( this ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** test_suite ************** // -// ************************************************************************** // - -//____________________________________________________________________________// - -test_suite::test_suite( const_string name, const_string file_name, std::size_t line_num ) -: test_unit( ut_detail::normalize_test_case_name( name ), file_name, line_num, static_cast<test_unit_type>(type) ) -{ - framework::register_test_unit( this ); -} - -//____________________________________________________________________________// - -test_suite::test_suite( const_string module_name ) -: test_unit( module_name ) -{ - framework::register_test_unit( this ); -} - -//____________________________________________________________________________// - -void -test_suite::add( test_unit* tu, counter_t expected_failures, unsigned timeout ) -{ - tu->p_timeout.value = timeout; - - m_children.push_back( tu->p_id ); - tu->p_parent_id.value = p_id; - - if( tu->p_expected_failures != 0 ) - increase_exp_fail( tu->p_expected_failures ); - - if( expected_failures ) - tu->increase_exp_fail( expected_failures ); -} - -//____________________________________________________________________________// - -void -test_suite::add( test_unit_generator const& gen, unsigned timeout ) -{ - test_unit* tu; - while((tu = gen.next()) != 0) - add( tu, 0, timeout ); -} - -//____________________________________________________________________________// - -void -test_suite::add( test_unit_generator const& gen, decorator::collector_t& decorators ) -{ - test_unit* tu; - while((tu = gen.next()) != 0) { - decorators.store_in( *tu ); - add( tu, 0 ); - } - decorators.reset(); -} - -//____________________________________________________________________________// - -void -test_suite::add( boost::shared_ptr<test_unit_generator> gen_ptr, decorator::collector_t& decorators ) -{ - std::pair<boost::shared_ptr<test_unit_generator>, std::vector<decorator::base_ptr> > tmp_p(gen_ptr, decorators.get_lazy_decorators() ); - m_generators.push_back(tmp_p); - decorators.reset(); -} - -//____________________________________________________________________________// - -void -test_suite::generate( ) -{ - typedef std::pair<boost::shared_ptr<test_unit_generator>, std::vector<decorator::base_ptr> > element_t; - - for(std::vector<element_t>::iterator it(m_generators.begin()), ite(m_generators.end()); - it < ite; - ++it) - { - test_unit* tu; - while((tu = it->first->next()) != 0) { - tu->p_decorators.value.insert( tu->p_decorators.value.end(), it->second.begin(), it->second.end() ); - //it->second.store_in( *tu ); - add( tu, 0 ); - } - - } - m_generators.clear(); - - #if 0 - test_unit* tu; - while((tu = gen.next()) != 0) { - decorators.store_in( *tu ); - add( tu, 0 ); - } - #endif -} - -//____________________________________________________________________________// - -void -test_suite::check_for_duplicate_test_cases() { - // check for clashing names #12597 - std::set<std::string> names; - for( test_unit_id_list::const_iterator it(m_children.begin()), ite(m_children.end()); - it < ite; - ++it) { - std::string name = framework::get(*it, TUT_ANY).p_name; - std::pair<std::set<std::string>::iterator, bool> ret = names.insert(name); - BOOST_TEST_SETUP_ASSERT(ret.second, - "test unit with name '" - + name - + std::string("' registered multiple times in the test suite '") - + this->p_name.value - + "'"); - } - - return; -} - -//____________________________________________________________________________// - -void -test_suite::remove( test_unit_id id ) -{ - test_unit_id_list::iterator it = std::find( m_children.begin(), m_children.end(), id ); - - if( it != m_children.end() ) - m_children.erase( it ); -} - -//____________________________________________________________________________// - -test_unit_id -test_suite::get( const_string tu_name ) const -{ - BOOST_TEST_FOREACH( test_unit_id, id, m_children ) { - if( tu_name == framework::get( id, ut_detail::test_id_2_unit_type( id ) ).p_name.get() ) - return id; - } - - return INV_TEST_UNIT_ID; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** master_test_suite ************** // -// ************************************************************************** // - -master_test_suite_t::master_test_suite_t() -: test_suite( "Master Test Suite" ) -, argc( 0 ) -, argv( 0 ) -{ - p_default_status.value = RS_ENABLED; -} - -// ************************************************************************** // -// ************** traverse_test_tree ************** // -// ************************************************************************** // - -void -traverse_test_tree( test_case const& tc, test_tree_visitor& V, bool ignore_status ) -{ - if( tc.is_enabled() || ignore_status ) - V.visit( tc ); -} - -//____________________________________________________________________________// - -void -traverse_test_tree( test_suite const& suite, test_tree_visitor& V, bool ignore_status ) -{ - // skip disabled test suite unless we asked to ignore this condition - if( !ignore_status && !suite.is_enabled() ) - return; - - // Invoke test_suite_start callback - if( !V.test_suite_start( suite ) ) - return; - - // Recurse into children - std::size_t total_children = suite.m_children.size(); - for( std::size_t i=0; i < total_children; ) { - // this statement can remove the test unit from this list - traverse_test_tree( suite.m_children[i], V, ignore_status ); - if( total_children > suite.m_children.size() ) - total_children = suite.m_children.size(); - else - ++i; - } - - // Invoke test_suite_finish callback - V.test_suite_finish( suite ); -} - -//____________________________________________________________________________// - -void -traverse_test_tree( test_unit_id id, test_tree_visitor& V, bool ignore_status ) -{ - if( ut_detail::test_id_2_unit_type( id ) == TUT_CASE ) - traverse_test_tree( framework::get<test_case>( id ), V, ignore_status ); - else - traverse_test_tree( framework::get<test_suite>( id ), V, ignore_status ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** object generators ************** // -// ************************************************************************** // - -namespace ut_detail { - -std::string -normalize_test_case_name( const_string name ) -{ - std::string norm_name( name.begin(), name.size() ); - - if( name[0] == '&' ) - norm_name = norm_name.substr( 1 ); - - // trim spaces - std::size_t first_not_space = norm_name.find_first_not_of(' '); - if( first_not_space ) { - norm_name.erase(0, first_not_space); - } - - std::size_t last_not_space = norm_name.find_last_not_of(' '); - if( last_not_space !=std::string::npos ) { - norm_name.erase(last_not_space + 1); - } - - // sanitize all chars that might be used in runtime filters - static const char to_replace[] = { ':', '*', '@', '+', '!', '/' }; - for(std::size_t index = 0; - index < sizeof(to_replace)/sizeof(to_replace[0]); - index++) { - std::replace(norm_name.begin(), norm_name.end(), to_replace[index], '_'); - } - - return norm_name; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** auto_test_unit_registrar ************** // -// ************************************************************************** // - -auto_test_unit_registrar::auto_test_unit_registrar( test_case* tc, decorator::collector_t& decorators, counter_t exp_fail ) -{ - framework::current_auto_test_suite().add( tc, exp_fail ); - - decorators.store_in( *tc ); - decorators.reset(); -} - -//____________________________________________________________________________// - -auto_test_unit_registrar::auto_test_unit_registrar( const_string ts_name, const_string ts_file, std::size_t ts_line, decorator::collector_t& decorators ) -{ - test_unit_id id = framework::current_auto_test_suite().get( ts_name ); - - test_suite* ts; - - if( id != INV_TEST_UNIT_ID ) { - ts = &framework::get<test_suite>( id ); - BOOST_ASSERT( ts->p_parent_id == framework::current_auto_test_suite().p_id ); - } - else { - ts = new test_suite( ts_name, ts_file, ts_line ); - framework::current_auto_test_suite().add( ts ); - } - - decorators.store_in( *ts ); - decorators.reset(); - - framework::current_auto_test_suite( ts ); -} - -//____________________________________________________________________________// - -auto_test_unit_registrar::auto_test_unit_registrar( test_unit_generator const& tc_gen, decorator::collector_t& decorators ) -{ - framework::current_auto_test_suite().add( tc_gen, decorators ); -} - -//____________________________________________________________________________// - -auto_test_unit_registrar::auto_test_unit_registrar( boost::shared_ptr<test_unit_generator> tc_gen, decorator::collector_t& decorators ) -{ - framework::current_auto_test_suite().add( tc_gen, decorators ); -} - - -//____________________________________________________________________________// - -auto_test_unit_registrar::auto_test_unit_registrar( int ) -{ - framework::current_auto_test_suite( 0, false ); -} - -//____________________________________________________________________________// - -} // namespace ut_detail - -// ************************************************************************** // -// ************** global_fixture ************** // -// ************************************************************************** // - -global_fixture::global_fixture() -{ - framework::register_global_fixture( *this ); -} - -global_fixture::~global_fixture() -{ - framework::deregister_global_fixture( *this ); -} - -// ************************************************************************** // -// ************** global_configuration ************** // -// ************************************************************************** // - -global_configuration::global_configuration() -{ - framework::register_observer( *this ); -} - -global_configuration::~global_configuration() -{ - framework::deregister_observer( *this ); -} - -//____________________________________________________________________________// - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UNIT_TEST_SUITE_IPP_012205GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/unit_test_log.ipp b/src/third_party/boost-1.69.0/boost/test/impl/unit_test_log.ipp deleted file mode 100644 index 40b54be223c..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/unit_test_log.ipp +++ /dev/null @@ -1,695 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : implemets Unit Test Log -// *************************************************************************** - -#ifndef BOOST_TEST_UNIT_TEST_LOG_IPP_012205GER -#define BOOST_TEST_UNIT_TEST_LOG_IPP_012205GER - -// Boost.Test -#include <boost/test/unit_test_log.hpp> -#include <boost/test/unit_test_log_formatter.hpp> -#include <boost/test/execution_monitor.hpp> -#include <boost/test/framework.hpp> -#include <boost/test/unit_test_parameters.hpp> - -#include <boost/test/utils/basic_cstring/compare.hpp> -#include <boost/test/utils/foreach.hpp> - -#include <boost/test/output/compiler_log_formatter.hpp> -#include <boost/test/output/xml_log_formatter.hpp> -#include <boost/test/output/junit_log_formatter.hpp> - -// Boost -#include <boost/shared_ptr.hpp> -#include <boost/io/ios_state.hpp> -typedef ::boost::io::ios_base_all_saver io_saver_type; - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** entry_value_collector ************** // -// ************************************************************************** // - -namespace ut_detail { - -entry_value_collector const& -entry_value_collector::operator<<( lazy_ostream const& v ) const -{ - unit_test_log << v; - - return *this; -} - -//____________________________________________________________________________// - -entry_value_collector const& -entry_value_collector::operator<<( const_string v ) const -{ - unit_test_log << v; - - return *this; -} - -//____________________________________________________________________________// - -entry_value_collector::~entry_value_collector() -{ - if( m_last ) - unit_test_log << log::end(); -} - -//____________________________________________________________________________// - -} // namespace ut_detail - -// ************************************************************************** // -// ************** unit_test_log ************** // -// ************************************************************************** // - -namespace { - -// log data -struct unit_test_log_data_helper_impl { - typedef boost::shared_ptr<unit_test_log_formatter> formatter_ptr; - typedef boost::shared_ptr<io_saver_type> saver_ptr; - - bool m_enabled; - output_format m_format; - std::ostream* m_stream; - saver_ptr m_stream_state_saver; - formatter_ptr m_log_formatter; - bool m_entry_in_progress; - - unit_test_log_data_helper_impl(unit_test_log_formatter* p_log_formatter, output_format format, bool enabled = false) - : m_enabled( enabled ) - , m_format( format ) - , m_stream( &std::cout ) - , m_stream_state_saver( new io_saver_type( std::cout ) ) - , m_log_formatter() - , m_entry_in_progress( false ) - { - m_log_formatter.reset(p_log_formatter); - m_log_formatter->set_log_level(log_all_errors); - } - - // helper functions - std::ostream& stream() - { - return *m_stream; - } - - log_level get_log_level() const - { - return m_log_formatter->get_log_level(); - } -}; - -struct unit_test_log_impl { - // Constructor - unit_test_log_impl() - { - m_log_formatter_data.push_back( unit_test_log_data_helper_impl(new output::compiler_log_formatter, OF_CLF, true) ); // only this one is active by default, - m_log_formatter_data.push_back( unit_test_log_data_helper_impl(new output::xml_log_formatter, OF_XML, false) ); - m_log_formatter_data.push_back( unit_test_log_data_helper_impl(new output::junit_log_formatter, OF_JUNIT, false) ); - } - - typedef std::vector<unit_test_log_data_helper_impl> v_formatter_data_t; - v_formatter_data_t m_log_formatter_data; - - // entry data - log_entry_data m_entry_data; - - bool has_entry_in_progress() const { - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl const&, current_logger_data, m_log_formatter_data ) { - if( current_logger_data.m_entry_in_progress ) - return true; - } - return false; - } - - // check point data - log_checkpoint_data m_checkpoint_data; - - void set_checkpoint( const_string file, std::size_t line_num, const_string msg ) - { - assign_op( m_checkpoint_data.m_message, msg, 0 ); - m_checkpoint_data.m_file_name = file; - m_checkpoint_data.m_line_num = line_num; - } -}; - -unit_test_log_impl& s_log_impl() { static unit_test_log_impl the_inst; return the_inst; } - -} // local namespace - -//____________________________________________________________________________// - -BOOST_TEST_SINGLETON_CONS_IMPL( unit_test_log_t ) - -//____________________________________________________________________________// - -void -unit_test_log_t::test_start( counter_t test_cases_amount ) -{ - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( !current_logger_data.m_enabled || current_logger_data.get_log_level() == log_nothing ) - continue; - - current_logger_data.m_log_formatter->log_start( current_logger_data.stream(), test_cases_amount ); - - if( runtime_config::get<bool>( runtime_config::btrt_build_info ) ) - current_logger_data.m_log_formatter->log_build_info( current_logger_data.stream() ); - - //current_logger_data.stream().flush(); - - current_logger_data.m_entry_in_progress = false; - } -} - -//____________________________________________________________________________// - -void -unit_test_log_t::test_finish() -{ - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( !current_logger_data.m_enabled || current_logger_data.get_log_level() == log_nothing ) - continue; - - current_logger_data.m_log_formatter->log_finish( current_logger_data.stream() ); - - current_logger_data.stream().flush(); - } -} - -//____________________________________________________________________________// - -void -unit_test_log_t::test_aborted() -{ - BOOST_TEST_LOG_ENTRY( log_messages ) << "Test is aborted"; -} - -//____________________________________________________________________________// - -void -unit_test_log_t::test_unit_start( test_unit const& tu ) -{ - if( s_log_impl().has_entry_in_progress() ) - *this << log::end(); - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( !current_logger_data.m_enabled || current_logger_data.get_log_level() > log_test_units ) - continue; - current_logger_data.m_log_formatter->test_unit_start( current_logger_data.stream(), tu ); - } -} - -//____________________________________________________________________________// - -void -unit_test_log_t::test_unit_finish( test_unit const& tu, unsigned long elapsed ) -{ - s_log_impl().m_checkpoint_data.clear(); - - if( s_log_impl().has_entry_in_progress() ) - *this << log::end(); - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - - if( !current_logger_data.m_enabled || current_logger_data.get_log_level() > log_test_units ) - continue; - - current_logger_data.m_log_formatter->test_unit_finish( current_logger_data.stream(), tu, elapsed ); - } -} - -//____________________________________________________________________________// - -void -unit_test_log_t::test_unit_skipped( test_unit const& tu, const_string reason ) -{ - if( s_log_impl().has_entry_in_progress() ) - *this << log::end(); - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( !current_logger_data.m_enabled || current_logger_data.get_log_level() > log_test_units ) - continue; - - current_logger_data.m_log_formatter->test_unit_skipped( current_logger_data.stream(), tu, reason ); - } -} - -void -unit_test_log_t::test_unit_aborted( test_unit const& tu ) -{ - if( s_log_impl().has_entry_in_progress() ) - *this << log::end(); - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( !current_logger_data.m_enabled || current_logger_data.get_log_level() > log_test_units ) - continue; - - current_logger_data.m_log_formatter->test_unit_aborted(current_logger_data.stream(), tu ); - } -} - -//____________________________________________________________________________// - -void -unit_test_log_t::exception_caught( execution_exception const& ex ) -{ - log_level l = - ex.code() <= execution_exception::cpp_exception_error ? log_cpp_exception_errors : - (ex.code() <= execution_exception::timeout_error ? log_system_errors - : log_fatal_errors ); - - if( s_log_impl().has_entry_in_progress() ) - *this << log::end(); - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - - if( current_logger_data.m_enabled && l >= current_logger_data.get_log_level() ) { - - current_logger_data.m_log_formatter->log_exception_start( current_logger_data.stream(), s_log_impl().m_checkpoint_data, ex ); - - log_entry_context( l ); - - current_logger_data.m_log_formatter->log_exception_finish( current_logger_data.stream() ); - } - } - clear_entry_context(); -} - -//____________________________________________________________________________// - -void -unit_test_log_t::set_checkpoint( const_string file, std::size_t line_num, const_string msg ) -{ - s_log_impl().set_checkpoint( file, line_num, msg ); -} - -//____________________________________________________________________________// - -char -set_unix_slash( char in ) -{ - return in == '\\' ? '/' : in; -} - -unit_test_log_t& -unit_test_log_t::operator<<( log::begin const& b ) -{ - if( s_log_impl().has_entry_in_progress() ) - *this << log::end(); - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( current_logger_data.m_enabled ) { - current_logger_data.m_stream_state_saver->restore(); - } - } - - s_log_impl().m_entry_data.clear(); - - assign_op( s_log_impl().m_entry_data.m_file_name, b.m_file_name, 0 ); - - // normalize file name - std::transform( s_log_impl().m_entry_data.m_file_name.begin(), s_log_impl().m_entry_data.m_file_name.end(), - s_log_impl().m_entry_data.m_file_name.begin(), - &set_unix_slash ); - - s_log_impl().m_entry_data.m_line_num = b.m_line_num; - - return *this; -} - -//____________________________________________________________________________// - -unit_test_log_t& -unit_test_log_t::operator<<( log::end const& ) -{ - if( s_log_impl().has_entry_in_progress() ) { - log_entry_context( s_log_impl().m_entry_data.m_level ); - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( current_logger_data.m_enabled && current_logger_data.m_entry_in_progress ) { - current_logger_data.m_log_formatter->log_entry_finish( current_logger_data.stream() ); - } - current_logger_data.m_entry_in_progress = false; - } - } - - clear_entry_context(); - - return *this; -} - -//____________________________________________________________________________// - -unit_test_log_t& -unit_test_log_t::operator<<( log_level l ) -{ - s_log_impl().m_entry_data.m_level = l; - - return *this; -} - -//____________________________________________________________________________// - -ut_detail::entry_value_collector -unit_test_log_t::operator()( log_level l ) -{ - *this << l; - - return ut_detail::entry_value_collector(); -} - -//____________________________________________________________________________// - -bool -unit_test_log_t::log_entry_start(output_format log_format) -{ - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - - if( current_logger_data.m_format != log_format ) - continue; - - if( current_logger_data.m_entry_in_progress ) - return true; - - if( !current_logger_data.m_enabled ) - return false; - - switch( s_log_impl().m_entry_data.m_level ) { - case log_successful_tests: - current_logger_data.m_log_formatter->log_entry_start( current_logger_data.stream(), s_log_impl().m_entry_data, - unit_test_log_formatter::BOOST_UTL_ET_INFO ); - break; - case log_messages: - current_logger_data.m_log_formatter->log_entry_start( current_logger_data.stream(), s_log_impl().m_entry_data, - unit_test_log_formatter::BOOST_UTL_ET_MESSAGE ); - break; - case log_warnings: - current_logger_data.m_log_formatter->log_entry_start( current_logger_data.stream(), s_log_impl().m_entry_data, - unit_test_log_formatter::BOOST_UTL_ET_WARNING ); - break; - case log_all_errors: - case log_cpp_exception_errors: - case log_system_errors: - current_logger_data.m_log_formatter->log_entry_start( current_logger_data.stream(), s_log_impl().m_entry_data, - unit_test_log_formatter::BOOST_UTL_ET_ERROR ); - break; - case log_fatal_errors: - current_logger_data.m_log_formatter->log_entry_start( current_logger_data.stream(), s_log_impl().m_entry_data, - unit_test_log_formatter::BOOST_UTL_ET_FATAL_ERROR ); - break; - case log_nothing: - case log_test_units: - case invalid_log_level: - return false; - } - - current_logger_data.m_entry_in_progress = true; - return true; - } - - return false; -} - -//____________________________________________________________________________// - -unit_test_log_t& -unit_test_log_t::operator<<( const_string value ) -{ - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( current_logger_data.m_enabled && s_log_impl().m_entry_data.m_level >= current_logger_data.get_log_level() && !value.empty() && log_entry_start(current_logger_data.m_format) ) - current_logger_data.m_log_formatter->log_entry_value( current_logger_data.stream(), value ); - - } - return *this; -} - -//____________________________________________________________________________// - -unit_test_log_t& -unit_test_log_t::operator<<( lazy_ostream const& value ) -{ - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( current_logger_data.m_enabled && s_log_impl().m_entry_data.m_level >= current_logger_data.get_log_level() && !value.empty() ) { - if( log_entry_start(current_logger_data.m_format) ) { - current_logger_data.m_log_formatter->log_entry_value( current_logger_data.stream(), value ); - } - } - } - return *this; -} - -//____________________________________________________________________________// - -void -unit_test_log_t::log_entry_context( log_level l ) -{ - framework::context_generator const& context = framework::get_context(); - if( context.is_empty() ) - return; - - const_string frame; - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( current_logger_data.m_enabled ) { - current_logger_data.m_log_formatter->entry_context_start( current_logger_data.stream(), l ); - } - } - - while( !(frame=context.next()).is_empty() ) - { - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( current_logger_data.m_enabled ) { - current_logger_data.m_log_formatter->log_entry_context( current_logger_data.stream(), l, frame ); - } - } - } - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( current_logger_data.m_enabled ) { - current_logger_data.m_log_formatter->entry_context_finish( current_logger_data.stream(), l ); - } - } -} - -//____________________________________________________________________________// - -void -unit_test_log_t::clear_entry_context() -{ - framework::clear_context(); -} - -//____________________________________________________________________________// - -void -unit_test_log_t::set_stream( std::ostream& str ) -{ - if( s_log_impl().has_entry_in_progress() ) - return; - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - current_logger_data.m_stream = &str; - current_logger_data.m_stream_state_saver.reset( new io_saver_type( str ) ); - } -} - -//____________________________________________________________________________// - -void -unit_test_log_t::set_stream( output_format log_format, std::ostream& str ) -{ - if( s_log_impl().has_entry_in_progress() ) - return; - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( current_logger_data.m_format == log_format) { - current_logger_data.m_stream = &str; - current_logger_data.m_stream_state_saver.reset( new io_saver_type( str ) ); - break; - } - } -} - -std::ostream* -unit_test_log_t::get_stream( output_format log_format ) const -{ - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( current_logger_data.m_format == log_format) { - return current_logger_data.m_stream; - } - } - return 0; -} - -//____________________________________________________________________________// - -void -unit_test_log_t::set_threshold_level( log_level lev ) -{ - if( s_log_impl().has_entry_in_progress() || lev == invalid_log_level ) - return; - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - current_logger_data.m_log_formatter->set_log_level( lev ); - } -} - -//____________________________________________________________________________// - -void -unit_test_log_t::set_threshold_level( output_format log_format, log_level lev ) -{ - if( s_log_impl().has_entry_in_progress() || lev == invalid_log_level ) - return; - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( current_logger_data.m_format == log_format) { - current_logger_data.m_log_formatter->set_log_level( lev ); - break; - } - } -} - -//____________________________________________________________________________// - -void -unit_test_log_t::set_format( output_format log_format ) -{ - if( s_log_impl().has_entry_in_progress() ) - return; - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - current_logger_data.m_enabled = current_logger_data.m_format == log_format; - } -} - -//____________________________________________________________________________// - -void -unit_test_log_t::add_format( output_format log_format ) -{ - if( s_log_impl().has_entry_in_progress() ) - return; - - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( current_logger_data.m_format == log_format) { - current_logger_data.m_enabled = true; - break; - } - } -} - -//____________________________________________________________________________// - -unit_test_log_formatter* -unit_test_log_t::get_formatter( output_format log_format ) { - BOOST_TEST_FOREACH( unit_test_log_data_helper_impl&, current_logger_data, s_log_impl().m_log_formatter_data ) { - if( current_logger_data.m_format == log_format) { - return current_logger_data.m_log_formatter.get(); - } - } - return 0; -} - - -void -unit_test_log_t::add_formatter( unit_test_log_formatter* the_formatter ) -{ - // remove only user defined logger - for(unit_test_log_impl::v_formatter_data_t::iterator it(s_log_impl().m_log_formatter_data.begin()), - ite(s_log_impl().m_log_formatter_data.end()); - it != ite; - ++it) - { - if( it->m_format == OF_CUSTOM_LOGGER) { - s_log_impl().m_log_formatter_data.erase(it); - break; - } - } - - if( the_formatter ) { - s_log_impl().m_log_formatter_data.push_back( unit_test_log_data_helper_impl(the_formatter, OF_CUSTOM_LOGGER, true) ); - } -} - -void -unit_test_log_t::set_formatter( unit_test_log_formatter* the_formatter ) -{ - // remove only user defined logger - log_level current_level = invalid_log_level; - std::ostream *current_stream = 0; - output_format previous_format = OF_INVALID; - for(unit_test_log_impl::v_formatter_data_t::iterator it(s_log_impl().m_log_formatter_data.begin()), - ite(s_log_impl().m_log_formatter_data.end()); - it != ite; - ++it) - { - if( it->m_enabled ) { - if( current_level == invalid_log_level || it->m_format < previous_format || it->m_format == OF_CUSTOM_LOGGER) { - current_level = it->get_log_level(); - current_stream = &(it->stream()); - previous_format = it->m_format; - } - } - } - - if( the_formatter ) { - add_formatter(the_formatter); - set_format(OF_CUSTOM_LOGGER); - set_threshold_level(OF_CUSTOM_LOGGER, current_level); - set_stream(OF_CUSTOM_LOGGER, *current_stream); - } -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** unit_test_log_formatter ************** // -// ************************************************************************** // - -void -unit_test_log_formatter::log_entry_value( std::ostream& ostr, lazy_ostream const& value ) -{ - log_entry_value( ostr, (wrap_stringstream().ref() << value).str() ); -} - -void -unit_test_log_formatter::set_log_level(log_level new_log_level) -{ - m_log_level = new_log_level; -} - -log_level -unit_test_log_formatter::get_log_level() const -{ - return m_log_level; -} - -//____________________________________________________________________________// - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UNIT_TEST_LOG_IPP_012205GER - diff --git a/src/third_party/boost-1.69.0/boost/test/impl/unit_test_main.ipp b/src/third_party/boost-1.69.0/boost/test/impl/unit_test_main.ipp deleted file mode 100644 index cad3d88ec62..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/unit_test_main.ipp +++ /dev/null @@ -1,312 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : main function implementation for Unit Test Framework -// *************************************************************************** - -#ifndef BOOST_TEST_UNIT_TEST_MAIN_IPP_012205GER -#define BOOST_TEST_UNIT_TEST_MAIN_IPP_012205GER - -// Boost.Test -#include <boost/test/framework.hpp> -#include <boost/test/results_collector.hpp> -#include <boost/test/results_reporter.hpp> - -#include <boost/test/tree/visitor.hpp> -#include <boost/test/tree/test_unit.hpp> -#include <boost/test/tree/traverse.hpp> - -#include <boost/test/unit_test_parameters.hpp> - -#include <boost/test/utils/foreach.hpp> -#include <boost/test/utils/basic_cstring/io.hpp> - -// Boost -#include <boost/cstdlib.hpp> - -// STL -#include <cstdio> -#include <stdexcept> -#include <iostream> -#include <iomanip> -#include <set> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -namespace ut_detail { - -// ************************************************************************** // -// ************** hrf_content_reporter ************** // -// ************************************************************************** // - -struct hrf_content_reporter : test_tree_visitor { - explicit hrf_content_reporter( std::ostream& os ) : m_os( os ), m_indent( -4 ) {} // skip master test suite - -private: - void report_test_unit( test_unit const& tu ) - { - m_os << std::setw( m_indent ) << "" << tu.p_name; - m_os << (tu.p_default_status == test_unit::RS_ENABLED ? "*" : " "); - //m_os << '[' << tu.p_sibling_rank << ']'; - if( !tu.p_description->empty() ) - m_os << ": " << tu.p_description; - - m_os << "\n"; - } - virtual void visit( test_case const& tc ) { report_test_unit( tc ); } - virtual bool test_suite_start( test_suite const& ts ) - { - if( m_indent >= 0 ) - report_test_unit( ts ); - m_indent += 4; - return true; - } - virtual void test_suite_finish( test_suite const& ) - { - m_indent -= 4; - } - - // Data members - std::ostream& m_os; - int m_indent; -}; - -// ************************************************************************** // -// ************** dot_content_reporter ************** // -// ************************************************************************** // - -struct dot_content_reporter : test_tree_visitor { - explicit dot_content_reporter( std::ostream& os ) : m_os( os ) {} - -private: - void report_test_unit( test_unit const& tu ) - { - bool master_ts = tu.p_parent_id == INV_TEST_UNIT_ID; - - m_os << "tu" << tu.p_id; - - m_os << (master_ts ? "[shape=ellipse,peripheries=2" : "[shape=Mrecord" ); - - m_os << ",fontname=Helvetica"; - - m_os << (tu.p_default_status == test_unit::RS_ENABLED ? ",color=green" : ",color=yellow"); - - if( master_ts ) - m_os << ",label=\"" << tu.p_name << "\"];\n"; - else { - m_os << ",label=\"" << tu.p_name << "|" << tu.p_file_name << "(" << tu.p_line_num << ")"; - if( tu.p_timeout > 0 ) - m_os << "|timeout=" << tu.p_timeout; - if( tu.p_expected_failures != 0 ) - m_os << "|expected failures=" << tu.p_expected_failures; - if( !tu.p_labels->empty() ) { - m_os << "|labels:"; - - BOOST_TEST_FOREACH( std::string const&, l, tu.p_labels.get() ) - m_os << " @" << l; - } - m_os << "\"];\n"; - } - - if( !master_ts ) - m_os << "tu" << tu.p_parent_id << " -> " << "tu" << tu.p_id << ";\n"; - - BOOST_TEST_FOREACH( test_unit_id, dep_id, tu.p_dependencies.get() ) { - test_unit const& dep = framework::get( dep_id, TUT_ANY ); - - m_os << "tu" << tu.p_id << " -> " << "tu" << dep.p_id << "[color=red,style=dotted,constraint=false];\n"; - } - - } - virtual void visit( test_case const& tc ) - { - report_test_unit( tc ); - } - virtual bool test_suite_start( test_suite const& ts ) - { - if( ts.p_parent_id == INV_TEST_UNIT_ID ) - m_os << "digraph G {rankdir=LR;\n"; - - report_test_unit( ts ); - - m_os << "{\n"; - - return true; - } - virtual void test_suite_finish( test_suite const& ts ) - { - m_os << "}\n"; - if( ts.p_parent_id == INV_TEST_UNIT_ID ) - m_os << "}\n"; - } - - std::ostream& m_os; -}; - -// ************************************************************************** // -// ************** labels_collector ************** // -// ************************************************************************** // - -struct labels_collector : test_tree_visitor { - std::set<std::string> const& labels() const { return m_labels; } - -private: - virtual bool visit( test_unit const& tu ) - { - m_labels.insert( tu.p_labels->begin(), tu.p_labels->end() ); - return true; - } - - // Data members - std::set<std::string> m_labels; -}; - -struct framework_shutdown_helper { - ~framework_shutdown_helper() { - try { - framework::shutdown(); - } - catch(...) { - std::cerr << "Boost.Test shutdown exception caught" << std::endl; - } - } -}; - -} // namespace ut_detail - -// ************************************************************************** // -// ************** unit_test_main ************** // -// ************************************************************************** // - - - -int BOOST_TEST_DECL -unit_test_main( init_unit_test_func init_func, int argc, char* argv[] ) -{ - int result_code = 0; - - ut_detail::framework_shutdown_helper shutdown_helper; - - BOOST_TEST_I_TRY { - - framework::init( init_func, argc, argv ); - - if( runtime_config::get<bool>( runtime_config::btrt_wait_for_debugger ) ) { - results_reporter::get_stream() << "Press any key to continue..." << std::endl; - - // getchar is defined as a macro in uClibc. Use parenthesis to fix - // gcc bug 58952 for gcc <= 4.8.2. - (std::getchar)(); - results_reporter::get_stream() << "Continuing..." << std::endl; - } - - framework::finalize_setup_phase(); - - output_format list_cont = runtime_config::get<output_format>( runtime_config::btrt_list_content ); - if( list_cont != unit_test::OF_INVALID ) { - if( list_cont == unit_test::OF_DOT ) { - ut_detail::dot_content_reporter reporter( results_reporter::get_stream() ); - - traverse_test_tree( framework::master_test_suite().p_id, reporter, true ); - } - else { - ut_detail::hrf_content_reporter reporter( results_reporter::get_stream() ); - - traverse_test_tree( framework::master_test_suite().p_id, reporter, true ); - } - - return boost::exit_success; - } - - if( runtime_config::get<bool>( runtime_config::btrt_list_labels ) ) { - ut_detail::labels_collector collector; - - traverse_test_tree( framework::master_test_suite().p_id, collector, true ); - - results_reporter::get_stream() << "Available labels:\n "; - std::copy( collector.labels().begin(), collector.labels().end(), - std::ostream_iterator<std::string>( results_reporter::get_stream(), "\n " ) ); - results_reporter::get_stream() << "\n"; - - return boost::exit_success; - } - - framework::run(); - - result_code = !runtime_config::get<bool>( runtime_config::btrt_result_code ) - ? boost::exit_success - : results_collector.results( framework::master_test_suite().p_id ).result_code(); - } - BOOST_TEST_I_CATCH( framework::nothing_to_test, ex ) { - result_code = ex.m_result_code; - } - BOOST_TEST_I_CATCH( framework::internal_error, ex ) { - results_reporter::get_stream() << "Boost.Test framework internal error: " << ex.what() << std::endl; - - result_code = boost::exit_exception_failure; - } - BOOST_TEST_I_CATCH( framework::setup_error, ex ) { - results_reporter::get_stream() << "Test setup error: " << ex.what() << std::endl; - - result_code = boost::exit_exception_failure; - } - BOOST_TEST_I_CATCH( std::logic_error, ex ) { - results_reporter::get_stream() << "Test setup error: " << ex.what() << std::endl; - - result_code = boost::exit_exception_failure; - } - BOOST_TEST_I_CATCHALL() { - results_reporter::get_stream() << "Boost.Test framework internal error: unknown reason" << std::endl; - - result_code = boost::exit_exception_failure; - } - - return result_code; -} - -} // namespace unit_test -} // namespace boost - -#if !defined(BOOST_TEST_DYN_LINK) && !defined(BOOST_TEST_NO_MAIN) - -// ************************************************************************** // -// ************** main function for tests using lib ************** // -// ************************************************************************** // - -int BOOST_TEST_CALL_DECL -main( int argc, char* argv[] ) -{ - // prototype for user's unit test init function -#ifdef BOOST_TEST_ALTERNATIVE_INIT_API - extern bool init_unit_test(); - - boost::unit_test::init_unit_test_func init_func = &init_unit_test; -#else - extern ::boost::unit_test::test_suite* init_unit_test_suite( int argc, char* argv[] ); - - boost::unit_test::init_unit_test_func init_func = &init_unit_test_suite; -#endif - - return ::boost::unit_test::unit_test_main( init_func, argc, argv ); -} - -#endif // !BOOST_TEST_DYN_LINK && !BOOST_TEST_NO_MAIN - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UNIT_TEST_MAIN_IPP_012205GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/unit_test_monitor.ipp b/src/third_party/boost-1.69.0/boost/test/impl/unit_test_monitor.ipp deleted file mode 100644 index 70e78513b65..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/unit_test_monitor.ipp +++ /dev/null @@ -1,78 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : implements specific subclass of Executon Monitor used by Unit -// Test Framework to monitor test cases run. -// *************************************************************************** - -#ifndef BOOST_TEST_UNIT_TEST_MONITOR_IPP_012205GER -#define BOOST_TEST_UNIT_TEST_MONITOR_IPP_012205GER - -// Boost.Test -#include <boost/test/unit_test_monitor.hpp> -#include <boost/test/framework.hpp> -#include <boost/test/tree/test_unit.hpp> -#include <boost/test/unit_test_parameters.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// singleton pattern -BOOST_TEST_SINGLETON_CONS_IMPL(unit_test_monitor_t) - -// ************************************************************************** // -// ************** unit_test_monitor ************** // -// ************************************************************************** // - -unit_test_monitor_t::error_level -unit_test_monitor_t::execute_and_translate( boost::function<void ()> const& func, unsigned timeout ) -{ - BOOST_TEST_I_TRY { - p_catch_system_errors.value = runtime_config::get<bool>( runtime_config::btrt_catch_sys_errors ); - p_timeout.value = timeout; - p_auto_start_dbg.value = runtime_config::get<bool>( runtime_config::btrt_auto_start_dbg ); - p_use_alt_stack.value = runtime_config::get<bool>( runtime_config::btrt_use_alt_stack ); - p_detect_fp_exceptions.value = runtime_config::get<bool>( runtime_config::btrt_detect_fp_except ); - - vexecute( func ); - } - BOOST_TEST_I_CATCH( execution_exception, ex ) { - framework::exception_caught( ex ); - framework::test_unit_aborted( framework::current_test_unit() ); - - // translate execution_exception::error_code to error_level - switch( ex.code() ) { - case execution_exception::no_error: return test_ok; - case execution_exception::user_error: return unexpected_exception; - case execution_exception::cpp_exception_error: return unexpected_exception; - case execution_exception::system_error: return os_exception; - case execution_exception::timeout_error: return os_timeout; - case execution_exception::user_fatal_error: - case execution_exception::system_fatal_error: return fatal_error; - default: return unexpected_exception; - } - } - - return test_ok; -} - -//____________________________________________________________________________// - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UNIT_TEST_MONITOR_IPP_012205GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/unit_test_parameters.ipp b/src/third_party/boost-1.69.0/boost/test/impl/unit_test_parameters.ipp deleted file mode 100644 index fec7bb94caf..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/unit_test_parameters.ipp +++ /dev/null @@ -1,771 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : simple implementation for Unit Test Framework parameter -// handling routines. May be rewritten in future to use some kind of -// command-line arguments parsing facility and environment variable handling -// facility -// *************************************************************************** - -#ifndef BOOST_TEST_UNIT_TEST_PARAMETERS_IPP_012205GER -#define BOOST_TEST_UNIT_TEST_PARAMETERS_IPP_012205GER - -// Boost.Test -#include <boost/test/unit_test_parameters.hpp> - -#include <boost/test/utils/basic_cstring/basic_cstring.hpp> -#include <boost/test/utils/basic_cstring/compare.hpp> -#include <boost/test/utils/basic_cstring/io.hpp> -#include <boost/test/utils/iterator/token_iterator.hpp> - -#include <boost/test/debug.hpp> -#include <boost/test/framework.hpp> - -#include <boost/test/detail/log_level.hpp> -#include <boost/test/detail/throw_exception.hpp> - -// Boost.Runtime.Param -#include <boost/test/utils/runtime/parameter.hpp> -#include <boost/test/utils/runtime/argument.hpp> -#include <boost/test/utils/runtime/finalize.hpp> -#include <boost/test/utils/runtime/cla/parser.hpp> -#include <boost/test/utils/runtime/env/fetch.hpp> - -// Boost -#include <boost/config.hpp> -#include <boost/test/detail/suppress_warnings.hpp> -#include <boost/test/detail/enable_warnings.hpp> -#include <boost/cstdlib.hpp> - -// STL -#include <cstdlib> -#include <iostream> -#include <fstream> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -# ifdef BOOST_NO_STDC_NAMESPACE -namespace std { using ::getenv; using ::strncmp; using ::strcmp; } -# endif - -namespace boost { -namespace unit_test { - -namespace rt = boost::runtime; - -// ************************************************************************** // -// ************** runtime_config ************** // -// ************************************************************************** // - -namespace runtime_config { - -// UTF parameters -std::string btrt_auto_start_dbg = "auto_start_dbg"; -std::string btrt_break_exec_path = "break_exec_path"; -std::string btrt_build_info = "build_info"; -std::string btrt_catch_sys_errors = "catch_system_errors"; -std::string btrt_color_output = "color_output"; -std::string btrt_detect_fp_except = "detect_fp_exceptions"; -std::string btrt_detect_mem_leaks = "detect_memory_leaks"; -std::string btrt_list_content = "list_content"; -std::string btrt_list_labels = "list_labels"; -std::string btrt_log_format = "log_format"; -std::string btrt_log_level = "log_level"; -std::string btrt_log_sink = "log_sink"; -std::string btrt_combined_logger = "logger"; -std::string btrt_output_format = "output_format"; -std::string btrt_random_seed = "random"; -std::string btrt_report_format = "report_format"; -std::string btrt_report_level = "report_level"; -std::string btrt_report_mem_leaks = "report_memory_leaks_to"; -std::string btrt_report_sink = "report_sink"; -std::string btrt_result_code = "result_code"; -std::string btrt_run_filters = "run_test"; -std::string btrt_save_test_pattern = "save_pattern"; -std::string btrt_show_progress = "show_progress"; -std::string btrt_use_alt_stack = "use_alt_stack"; -std::string btrt_wait_for_debugger = "wait_for_debugger"; - -std::string btrt_help = "help"; -std::string btrt_usage = "usage"; -std::string btrt_version = "version"; - -//____________________________________________________________________________// - -namespace { - -void -register_parameters( rt::parameters_store& store ) -{ - rt::option auto_start_dbg( btrt_auto_start_dbg, ( - rt::description = "Automatically attaches debugger in case of system level failure (signal).", - rt::env_var = "BOOST_TEST_AUTO_START_DBG", - - rt::help = "Specifies whether Boost.Test should attempt " - "to attach a debugger when fatal system error occurs. At the moment this feature " - "is only available on a few selected platforms: Win32 and *nix. There is a " - "default debugger configured for these platforms. You can manually configure " - "different debugger. For more details on how to configure the debugger see the " - "Boost.Test debug API, specifically the function boost::debug::set_debugger." - )); - - auto_start_dbg.add_cla_id( "--", btrt_auto_start_dbg, "=" ); - auto_start_dbg.add_cla_id( "-", "d", " " ); - store.add( auto_start_dbg ); - - /////////////////////////////////////////////// - - rt::parameter<std::string> break_exec_path( btrt_break_exec_path, ( - rt::description = "For the exception safety testing allows to break at specific execution path.", - rt::env_var = "BOOST_TEST_BREAK_EXEC_PATH" -#ifndef BOOST_NO_CXX11_LAMBDAS - , - rt::callback = [](rt::cstring) { - BOOST_TEST_SETUP_ASSERT( false, "parameter break_exec_path is disabled in this release" ); - } -#endif - )); - - break_exec_path.add_cla_id( "--", btrt_break_exec_path, "=" ); - store.add( break_exec_path ); - - /////////////////////////////////////////////// - - rt::option build_info( btrt_build_info, ( - rt::description = "Displays library build information.", - rt::env_var = "BOOST_TEST_BUILD_INFO", - rt::help = "Displays library build information, including: platform, " - "compiler, STL version and Boost version." - )); - - build_info.add_cla_id( "--", btrt_build_info, "=" ); - build_info.add_cla_id( "-", "i", " " ); - store.add( build_info ); - - /////////////////////////////////////////////// - - rt::option catch_sys_errors( btrt_catch_sys_errors, ( - rt::description = "Allows to switch between catching and ignoring system errors (signals).", - rt::env_var = "BOOST_TEST_CATCH_SYSTEM_ERRORS", - rt::default_value = -#ifdef BOOST_TEST_DEFAULTS_TO_CORE_DUMP - false, -#else - true, -#endif - rt::help = "If option " + btrt_catch_sys_errors + " has value 'no' the frameworks does not attempt to catch " - "asynchronous system failure events (signals on *NIX platforms or structured exceptions on Windows). " - " Default value is " -#ifdef BOOST_TEST_DEFAULTS_TO_CORE_DUMP - "no." -#else - "true." -#endif - )); - - catch_sys_errors.add_cla_id( "--", btrt_catch_sys_errors, "=", true ); - catch_sys_errors.add_cla_id( "-", "s", " " ); - store.add( catch_sys_errors ); - - /////////////////////////////////////////////// - - rt::option color_output( btrt_color_output, ( - rt::description = "Enables color output of the framework log and report messages.", - rt::env_var = "BOOST_TEST_COLOR_OUTPUT", - rt::default_value = true, - rt::help = "Produces color output for logs, reports and help. " - "Defaults to true. " - )); - - color_output.add_cla_id( "--", btrt_color_output, "=", true ); - color_output.add_cla_id( "-", "x", " " ); - store.add( color_output ); - - /////////////////////////////////////////////// - - rt::option detect_fp_except( btrt_detect_fp_except, ( - rt::description = "Enables/disables floating point exceptions traps.", - rt::env_var = "BOOST_TEST_DETECT_FP_EXCEPTIONS", - rt::help = "Enables/disables hardware traps for the floating " - "point exceptions (if supported on your platfrom)." - )); - - detect_fp_except.add_cla_id( "--", btrt_detect_fp_except, "=", true ); - store.add( detect_fp_except ); - - /////////////////////////////////////////////// - - rt::parameter<unsigned long> detect_mem_leaks( btrt_detect_mem_leaks, ( - rt::description = "Turns on/off memory leaks detection (optionally breaking on specified alloc order number).", - rt::env_var = "BOOST_TEST_DETECT_MEMORY_LEAK", - rt::default_value = 1L, - rt::optional_value = 1L, - rt::value_hint = "<alloc order number>", - rt::help = "Enables/disables memory leaks detection. " - "This parameter has optional long integer value. The default value is 1, which " - "enables the memory leak detection. The value 0 disables memory leak detection. " - "Any value N greater than 1 is treated as leak allocation number and tells the " - "framework to setup runtime breakpoint at Nth heap allocation. If value is " - "omitted the default value is assumed." - )); - - detect_mem_leaks.add_cla_id( "--", btrt_detect_mem_leaks, "=" ); - store.add( detect_mem_leaks ); - - /////////////////////////////////////////////// - - rt::enum_parameter<unit_test::output_format> list_content( btrt_list_content, ( - rt::description = "Lists the content of test tree - names of all test suites and test cases.", - rt::env_var = "BOOST_TEST_LIST_CONTENT", - rt::default_value = OF_INVALID, - rt::optional_value = OF_CLF, - rt::enum_values<unit_test::output_format>::value = -#if defined(BOOST_TEST_CLA_NEW_API) - { - { "HRF", OF_CLF }, - { "DOT", OF_DOT } - }, -#else - rt::enum_values_list<unit_test::output_format>() - ( "HRF", OF_CLF ) - ( "DOT", OF_DOT ) - , -#endif - rt::help = "Lists the test suites and cases " - "of the test module instead of executing the test cases. The format of the " - "desired output can be passed to the command. Currently the " - "framework supports two formats: human readable format (HRF) and dot graph " - "format (DOT). If value is omitted HRF value is assumed." - )); - list_content.add_cla_id( "--", btrt_list_content, "=" ); - store.add( list_content ); - - /////////////////////////////////////////////// - - rt::option list_labels( btrt_list_labels, ( - rt::description = "Lists all available labels.", - rt::env_var = "BOOST_TEST_LIST_LABELS", - rt::help = "Option " + btrt_list_labels + " instructs the framework to list all the the labels " - "defined in the test module instead of executing the test cases." - )); - - list_labels.add_cla_id( "--", btrt_list_labels, "=" ); - store.add( list_labels ); - - /////////////////////////////////////////////// - - rt::enum_parameter<unit_test::output_format> log_format( btrt_log_format, ( - rt::description = "Specifies log format.", - rt::env_var = "BOOST_TEST_LOG_FORMAT", - rt::default_value = OF_CLF, - rt::enum_values<unit_test::output_format>::value = -#if defined(BOOST_TEST_CLA_NEW_API) - { - { "HRF", OF_CLF }, - { "CLF", OF_CLF }, - { "XML", OF_XML }, - { "JUNIT", OF_JUNIT }, - }, -#else - rt::enum_values_list<unit_test::output_format>() - ( "HRF", OF_CLF ) - ( "CLF", OF_CLF ) - ( "XML", OF_XML ) - ( "JUNIT", OF_JUNIT ) - , -#endif - rt::help = "Set the frameowrk's log format to one " - "of the formats supplied by the framework. The only acceptable values for this " - "parameter are the names of the output formats supplied by the framework. By " - "default the framework uses human readable format (HRF) for testing log. This " - "format is similar to compiler error format. Alternatively you can specify XML " - "or JUNIT as log format, which are easier to process by testing automation tools." - )); - - log_format.add_cla_id( "--", btrt_log_format, "=" ); - log_format.add_cla_id( "-", "f", " " ); - store.add( log_format ); - - /////////////////////////////////////////////// - - rt::enum_parameter<unit_test::log_level> log_level( btrt_log_level, ( - rt::description = "Specifies the logging level of the test execution.", - rt::env_var = "BOOST_TEST_LOG_LEVEL", - rt::default_value = log_all_errors, - rt::enum_values<unit_test::log_level>::value = -#if defined(BOOST_TEST_CLA_NEW_API) - { - { "all" , log_successful_tests }, - { "success" , log_successful_tests }, - { "test_suite" , log_test_units }, - { "unit_scope" , log_test_units }, - { "message" , log_messages }, - { "warning" , log_warnings }, - { "error" , log_all_errors }, - { "cpp_exception" , log_cpp_exception_errors }, - { "system_error" , log_system_errors }, - { "fatal_error" , log_fatal_errors }, - { "nothing" , log_nothing } - }, -#else - rt::enum_values_list<unit_test::log_level>() - ( "all" , log_successful_tests ) - ( "success" , log_successful_tests ) - ( "test_suite" , log_test_units ) - ( "unit_scope" , log_test_units ) - ( "message" , log_messages ) - ( "warning" , log_warnings ) - ( "error" , log_all_errors ) - ( "cpp_exception" , log_cpp_exception_errors ) - ( "system_error" , log_system_errors ) - ( "fatal_error" , log_fatal_errors ) - ( "nothing" , log_nothing ) - , -#endif - rt::help = "Set the framework's log level. " - "The log level defines the verbosity of the testing logs produced by a test " - "module. The verbosity ranges from a complete log, when all assertions " - "(both successful and failing) are reported, all notifications about " - "test units start and finish are included, to an empty log when nothing " - "is reported to a testing log stream." - )); - - log_level.add_cla_id( "--", btrt_log_level, "=" ); - log_level.add_cla_id( "-", "l", " " ); - store.add( log_level ); - - /////////////////////////////////////////////// - - rt::parameter<std::string> log_sink( btrt_log_sink, ( - rt::description = "Specifies log sink: stdout (default), stderr or file name.", - rt::env_var = "BOOST_TEST_LOG_SINK", - rt::value_hint = "<stderr|stdout|file name>", - rt::help = "Sets the log sink - the location " - "where Boost.Test writes the logs of the test execution. It allows to easily redirect the " - "test logs to file or standard streams. By default testing log is " - "directed to standard output." - )); - - log_sink.add_cla_id( "--", btrt_log_sink, "=" ); - log_sink.add_cla_id( "-", "k", " " ); - store.add( log_sink ); - - /////////////////////////////////////////////// - - rt::enum_parameter<unit_test::output_format> output_format( btrt_output_format, ( - rt::description = "Specifies output format (both log and report).", - rt::env_var = "BOOST_TEST_OUTPUT_FORMAT", - rt::enum_values<unit_test::output_format>::value = -#if defined(BOOST_TEST_CLA_NEW_API) - { - { "HRF", OF_CLF }, - { "CLF", OF_CLF }, - { "XML", OF_XML } - }, -#else - rt::enum_values_list<unit_test::output_format>() - ( "HRF", OF_CLF ) - ( "CLF", OF_CLF ) - ( "XML", OF_XML ) - , -#endif - rt::help = "Combines an effect of " + btrt_report_format + - " and " + btrt_log_format + " parameters. If this parameter is specified, " - "it overrides the value of other two parameters. This parameter does not " - "have a default value. The only acceptable values are string names of " - "output formats: HRF - human readable format and XML - XML formats for " - "automation tools processing." - )); - - output_format.add_cla_id( "--", btrt_output_format, "=" ); - output_format.add_cla_id( "-", "o", " " ); - store.add( output_format ); - - /////////////////////////////////////////////// combined logger option - - rt::parameter<std::string,rt::REPEATABLE_PARAM> combined_logger( btrt_combined_logger, ( - rt::description = "Specifies log level and sink for one or several log format", - rt::env_var = "BOOST_TEST_LOGGER", - rt::value_hint = "log_format,log_level,log_sink[:log_format,log_level,log_sink]", - rt::help = "Specify one or more logging definition, which include the logger type, level and sink. " - "The log format, level and sink follow the same format as for the argument '--" + btrt_log_format + - "', '--" + btrt_log_level + "' and '--" + btrt_log_sink + "' respetively. " - "This command can take several logging definition separated by a ':', or be repeated " - "on the command line." - )); - - combined_logger.add_cla_id( "--", btrt_combined_logger, "=" ); - store.add( combined_logger ); - - /////////////////////////////////////////////// - - rt::parameter<unsigned> random_seed( btrt_random_seed, ( - rt::description = "Allows to switch between sequential and random order of test units execution." - " Optionally allows to specify concrete seed for random number generator.", - rt::env_var = "BOOST_TEST_RANDOM", - rt::default_value = 0U, - rt::optional_value = 1U, - rt::value_hint = "<seed>", - rt::help = "Instructs the framework to execute the " - "test cases in random order. This parameter accepts an optional unsigned " - "integer argument. If parameter is specified without the argument value testing " - "order is randomized based on current time. Alternatively you can specify " - "any positive value greater than 1 and it will be used as random seed for " - "the run. " - "By default, the test cases are executed in an " - "order defined by their declaration and the optional dependencies among the test units." - )); - - random_seed.add_cla_id( "--", btrt_random_seed, "=" ); - store.add( random_seed ); - - /////////////////////////////////////////////// - - rt::enum_parameter<unit_test::output_format> report_format( btrt_report_format, ( - rt::description = "Specifies the test report format.", - rt::env_var = "BOOST_TEST_REPORT_FORMAT", - rt::default_value = OF_CLF, - rt::enum_values<unit_test::output_format>::value = -#if defined(BOOST_TEST_CLA_NEW_API) - { - { "HRF", OF_CLF }, - { "CLF", OF_CLF }, - { "XML", OF_XML } - }, -#else - rt::enum_values_list<unit_test::output_format>() - ( "HRF", OF_CLF ) - ( "CLF", OF_CLF ) - ( "XML", OF_XML ) - , -#endif - rt::help = "Set the framework's report format " - "to one of the formats supplied by the framework. The only acceptable values " - "for this parameter are the names of the output formats. By default the framework " - "uses human readable format (HRF) for results reporting. Alternatively you can " - "specify XML as report format. This format is easier to process by testing " - "automation tools." - )); - - report_format.add_cla_id( "--", btrt_report_format, "=" ); - report_format.add_cla_id( "-", "m", " " ); - store.add( report_format ); - - /////////////////////////////////////////////// - - rt::enum_parameter<unit_test::report_level> report_level( btrt_report_level, ( - rt::description = "Specifies test report level.", - rt::env_var = "BOOST_TEST_REPORT_LEVEL", - rt::default_value = CONFIRMATION_REPORT, - rt::enum_values<unit_test::report_level>::value = -#if defined(BOOST_TEST_CLA_NEW_API) - { - { "confirm", CONFIRMATION_REPORT }, - { "short", SHORT_REPORT }, - { "detailed", DETAILED_REPORT }, - { "no", NO_REPORT } - }, -#else - rt::enum_values_list<unit_test::report_level>() - ( "confirm", CONFIRMATION_REPORT ) - ( "short", SHORT_REPORT ) - ( "detailed", DETAILED_REPORT ) - ( "no", NO_REPORT ) - , -#endif - rt::help = "Set the verbosity level of the " - "result report generated by the testing framework. Use value 'no' to " - "disable the results report completely." - )); - - report_level.add_cla_id( "--", btrt_report_level, "=" ); - report_level.add_cla_id( "-", "r", " " ); - store.add( report_level ); - - /////////////////////////////////////////////// - - rt::parameter<std::string> report_mem_leaks( btrt_report_mem_leaks, ( - rt::description = "File where to report memory leaks to.", - rt::env_var = "BOOST_TEST_REPORT_MEMORY_LEAKS_TO", - rt::default_value = std::string(), - rt::value_hint = "<file name>", - rt::help = "Parameter " + btrt_report_mem_leaks + " allows to specify a file where to report " - "memory leaks to. The parameter does not have default value. If it is not specified, " - "memory leaks (if any) are reported to the standard error stream." - )); - - report_mem_leaks.add_cla_id( "--", btrt_report_mem_leaks, "=" ); - store.add( report_mem_leaks ); - - /////////////////////////////////////////////// - - rt::parameter<std::string> report_sink( btrt_report_sink, ( - rt::description = "Specifies report sink: stderr(default), stdout or file name.", - rt::env_var = "BOOST_TEST_REPORT_SINK", - rt::value_hint = "<stderr|stdout|file name>", - rt::help = "Sets the result report sink - " - "the location where the framework writes the result report to. " - "The sink may be a a file or a standard " - "stream. The default is 'stderr': the " - "standard error stream." - )); - - report_sink.add_cla_id( "--", btrt_report_sink, "=" ); - report_sink.add_cla_id( "-", "e", " " ); - store.add( report_sink ); - - /////////////////////////////////////////////// - - rt::option result_code( btrt_result_code, ( - rt::description = "Disables test modules's result code generation.", - rt::env_var = "BOOST_TEST_RESULT_CODE", - rt::default_value = true, - rt::help = "The 'no' argument value for the parameter " + btrt_result_code + " instructs the " - "framework to always return zero result code. This can be used for test programs " - "executed within IDE. By default this parameter has value 'yes'." - )); - - result_code.add_cla_id( "--", btrt_result_code, "=", true ); - result_code.add_cla_id( "-", "c", " " ); - store.add( result_code ); - - /////////////////////////////////////////////// - - rt::parameter<std::string,rt::REPEATABLE_PARAM> tests_to_run( btrt_run_filters, ( - rt::description = "Filters which tests to execute.", - rt::env_var = "BOOST_TEST_RUN_FILTERS", - rt::value_hint = "<test unit filter>", - rt::help = "Filters which test units to execute. " - "The framework supports both 'selection filters', which allow to select " - "which test units to enable from the set of available test units, and 'disabler " - "filters', which allow to disable some test units. Boost.test also supports " - "enabling/disabling test units at compile time. These settings identify the default " - "set of test units to run. Parameter " + btrt_run_filters + " is used to change this default. " - "This parameter is repeatable, so you can specify more than one filter if necessary." - )); - - tests_to_run.add_cla_id( "--", btrt_run_filters, "=" ); - tests_to_run.add_cla_id( "-", "t", " " ); - store.add( tests_to_run ); - - /////////////////////////////////////////////// - - rt::option save_test_pattern( btrt_save_test_pattern, ( - rt::description = "Allows to switch between saving or matching test pattern file.", - rt::env_var = "BOOST_TEST_SAVE_PATTERN", - rt::help = "Parameter " + btrt_save_test_pattern + " facilitates switching mode of operation for " - "testing output streams.\n\nThis parameter serves no particular purpose within the " - "framework itself. It can be used by test modules relying on output_test_stream to " - "implement testing logic. Default mode is 'match' (false)." - )); - - save_test_pattern.add_cla_id( "--", btrt_save_test_pattern, "=" ); - store.add( save_test_pattern ); - - /////////////////////////////////////////////// - - rt::option show_progress( btrt_show_progress, ( - rt::description = "Turns on progress display.", - rt::env_var = "BOOST_TEST_SHOW_PROGRESS", - rt::help = "Instructs the framework to display the progress of the tests. " - "This feature is turned off by default." - )); - - show_progress.add_cla_id( "--", btrt_show_progress, "=" ); - show_progress.add_cla_id( "-", "p", " " ); - store.add( show_progress ); - - /////////////////////////////////////////////// - - rt::option use_alt_stack( btrt_use_alt_stack, ( - rt::description = "Turns on/off usage of an alternative stack for signal handling.", - rt::env_var = "BOOST_TEST_USE_ALT_STACK", - rt::default_value = true, - rt::help = "Instructs the framework to use an alternative " - "stack for operating system's signals handling (on platforms where this is supported). " - "The feature is enabled by default, but can be disabled using this command line switch." - )); - - use_alt_stack.add_cla_id( "--", btrt_use_alt_stack, "=", true ); - store.add( use_alt_stack ); - - /////////////////////////////////////////////// - - rt::option wait_for_debugger( btrt_wait_for_debugger, ( - rt::description = "Forces test module to wait for button to be pressed before starting test run.", - rt::env_var = "BOOST_TEST_WAIT_FOR_DEBUGGER", - rt::help = "Instructs the framework to pause before starting " - "test units execution, so that you can attach a debugger to the test module process. " - "This feature is turned off by default." - )); - - wait_for_debugger.add_cla_id( "--", btrt_wait_for_debugger, "=" ); - wait_for_debugger.add_cla_id( "-", "w", " " ); - store.add( wait_for_debugger ); - - /////////////////////////////////////////////// - - rt::parameter<std::string> help( btrt_help, ( - rt::description = "Help for framework parameters.", - rt::optional_value = std::string(), - rt::value_hint = "<parameter name>", - rt::help = "Displays help on the framework's parameters. " - "The parameter accepts an optional argument value. If present, an argument value is " - "interpreted as a parameter name (name guessing works as well, so for example " - "'--help=rand' displays help on the parameter 'random'). If the parameter name is unknown " - "or ambiguous error is reported. If argument value is absent, a summary of all " - "framework's parameter is displayed." - )); - help.add_cla_id( "--", btrt_help, "=" ); - store.add( help ); - - /////////////////////////////////////////////// - - rt::option usage( btrt_usage, ( - rt::description = "Short message explaining usage of Boost.Test parameters." - )); - usage.add_cla_id( "-", "?", " " ); - store.add( usage ); - - /////////////////////////////////////////////// - - rt::option version( btrt_version, ( - rt::description = "Prints Boost.Test version and exits." - )); - version.add_cla_id( "--", btrt_version, " " ); - store.add( version ); -} - -static rt::arguments_store s_arguments_store; -static rt::parameters_store s_parameters_store; - -//____________________________________________________________________________// - -} // local namespace - -void -init( int& argc, char** argv ) -{ - shared_ptr<rt::cla::parser> parser; - - BOOST_TEST_I_TRY { - // Initialize parameters list - if( s_parameters_store.is_empty() ) - register_parameters( s_parameters_store ); - - // Clear up arguments store just in case (of multiple init invocations) - s_arguments_store.clear(); - - // Parse CLA they take precedence over environment - parser.reset( new rt::cla::parser( s_parameters_store, (rt::end_of_params = "--", rt::negation_prefix = "no_") ) ); - argc = parser->parse( argc, argv, s_arguments_store ); - - // Try to fetch missing arguments from environment - rt::env::fetch_absent( s_parameters_store, s_arguments_store ); - - // Set arguments to default values if defined and perform all the validations - rt::finalize_arguments( s_parameters_store, s_arguments_store ); - - // check if colorized output is enabled - bool use_color = true; - if( s_arguments_store.has(btrt_color_output ) ) { - use_color = runtime_config::get<bool>(runtime_config::btrt_color_output); - } - - // Report help if requested - if( runtime_config::get<bool>( btrt_version ) ) { - parser->version( std::cerr ); - BOOST_TEST_I_THROW( framework::nothing_to_test( boost::exit_success ) ); - } - else if( runtime_config::get<bool>( btrt_usage ) ) { - parser->usage( std::cerr, runtime::cstring(), use_color ); - BOOST_TEST_I_THROW( framework::nothing_to_test( boost::exit_success ) ); - } - else if( s_arguments_store.has( btrt_help ) ) { - parser->help(std::cerr, - s_parameters_store, - runtime_config::get<std::string>( btrt_help ), - use_color ); - BOOST_TEST_I_THROW( framework::nothing_to_test( boost::exit_success ) ); - } - - // A bit of business logic: output_format takes precedence over log/report formats - if( s_arguments_store.has( btrt_output_format ) ) { - unit_test::output_format of = s_arguments_store.get<unit_test::output_format>( btrt_output_format ); - s_arguments_store.set( btrt_report_format, of ); - s_arguments_store.set( btrt_log_format, of ); - } - - } - BOOST_TEST_I_CATCH( rt::init_error, ex ) { - BOOST_TEST_SETUP_ASSERT( false, ex.msg ); - } - BOOST_TEST_I_CATCH( rt::ambiguous_param, ex ) { - std::cerr << ex.msg << "\n Did you mean one of these?\n"; - - BOOST_TEST_FOREACH( rt::cstring, name, ex.m_amb_candidates ) - std::cerr << " " << name << "\n"; - - BOOST_TEST_I_THROW( framework::nothing_to_test( boost::exit_exception_failure ) ); - } - BOOST_TEST_I_CATCH( rt::unrecognized_param, ex ) { - std::cerr << ex.msg << "\n"; - - if( !ex.m_typo_candidates.empty() ) { - std::cerr << " Did you mean one of these?\n"; - - BOOST_TEST_FOREACH( rt::cstring, name, ex.m_typo_candidates ) - std::cerr << " " << name << "\n"; - } - else if( parser ) { - std::cerr << "\n"; - parser->usage( std::cerr ); - } - - BOOST_TEST_I_THROW( framework::nothing_to_test( boost::exit_exception_failure ) ); - } - BOOST_TEST_I_CATCH( rt::input_error, ex ) { - std::cerr << ex.msg << "\n\n"; - - if( parser ) - parser->usage( std::cerr, ex.param_name ); - - BOOST_TEST_I_THROW( framework::nothing_to_test( boost::exit_exception_failure ) ); - } -} - -//____________________________________________________________________________// - -rt::arguments_store const& -argument_store() -{ - return s_arguments_store; -} - -//____________________________________________________________________________// - -bool -save_pattern() -{ - return runtime_config::get<bool>( btrt_save_test_pattern ); -} - -//____________________________________________________________________________// - -} // namespace runtime_config -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UNIT_TEST_PARAMETERS_IPP_012205GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/xml_log_formatter.ipp b/src/third_party/boost-1.69.0/boost/test/impl/xml_log_formatter.ipp deleted file mode 100644 index ef44f1eadec..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/xml_log_formatter.ipp +++ /dev/null @@ -1,223 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : implements OF_XML Log formatter -// *************************************************************************** - -#ifndef BOOST_TEST_XML_LOG_FORMATTER_IPP_020105GER -#define BOOST_TEST_XML_LOG_FORMATTER_IPP_020105GER - -// Boost.Test -#include <boost/test/output/xml_log_formatter.hpp> -#include <boost/test/execution_monitor.hpp> -#include <boost/test/framework.hpp> -#include <boost/test/tree/test_unit.hpp> -#include <boost/test/utils/basic_cstring/io.hpp> -#include <boost/test/utils/xml_printer.hpp> - -// Boost -#include <boost/version.hpp> - -// STL -#include <iostream> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace output { - -static const_string tu_type_name( test_unit const& tu ) -{ - return tu.p_type == TUT_CASE ? "TestCase" : "TestSuite"; -} - -// ************************************************************************** // -// ************** xml_log_formatter ************** // -// ************************************************************************** // - -void -xml_log_formatter::log_start( std::ostream& ostr, counter_t ) -{ - ostr << "<TestLog>"; -} - -//____________________________________________________________________________// - -void -xml_log_formatter::log_finish( std::ostream& ostr ) -{ - ostr << "</TestLog>"; -} - -//____________________________________________________________________________// - -void -xml_log_formatter::log_build_info( std::ostream& ostr ) -{ - ostr << "<BuildInfo" - << " platform" << utils::attr_value() << BOOST_PLATFORM - << " compiler" << utils::attr_value() << BOOST_COMPILER - << " stl" << utils::attr_value() << BOOST_STDLIB - << " boost=\"" << BOOST_VERSION/100000 << "." - << BOOST_VERSION/100 % 1000 << "." - << BOOST_VERSION % 100 << '\"' - << "/>"; -} - -//____________________________________________________________________________// - -void -xml_log_formatter::test_unit_start( std::ostream& ostr, test_unit const& tu ) -{ - ostr << "<" << tu_type_name( tu ) << " name" << utils::attr_value() << tu.p_name.get(); - - if( !tu.p_file_name.empty() ) - ostr << BOOST_TEST_L( " file" ) << utils::attr_value() << tu.p_file_name - << BOOST_TEST_L( " line" ) << utils::attr_value() << tu.p_line_num; - - ostr << ">"; -} - -//____________________________________________________________________________// - -void -xml_log_formatter::test_unit_finish( std::ostream& ostr, test_unit const& tu, unsigned long elapsed ) -{ - if( tu.p_type == TUT_CASE ) - ostr << "<TestingTime>" << elapsed << "</TestingTime>"; - - ostr << "</" << tu_type_name( tu ) << ">"; -} - -//____________________________________________________________________________// - -void -xml_log_formatter::test_unit_skipped( std::ostream& ostr, test_unit const& tu, const_string reason ) -{ - ostr << "<" << tu_type_name( tu ) - << " name" << utils::attr_value() << tu.p_name - << " skipped" << utils::attr_value() << "yes" - << " reason" << utils::attr_value() << reason - << "/>"; -} - -//____________________________________________________________________________// - -void -xml_log_formatter::log_exception_start( std::ostream& ostr, log_checkpoint_data const& checkpoint_data, execution_exception const& ex ) -{ - execution_exception::location const& loc = ex.where(); - - ostr << "<Exception file" << utils::attr_value() << loc.m_file_name - << " line" << utils::attr_value() << loc.m_line_num; - - if( !loc.m_function.is_empty() ) - ostr << " function" << utils::attr_value() << loc.m_function; - - ostr << ">" << utils::cdata() << ex.what(); - - if( !checkpoint_data.m_file_name.is_empty() ) { - ostr << "<LastCheckpoint file" << utils::attr_value() << checkpoint_data.m_file_name - << " line" << utils::attr_value() << checkpoint_data.m_line_num - << ">" - << utils::cdata() << checkpoint_data.m_message - << "</LastCheckpoint>"; - } -} - -//____________________________________________________________________________// - -void -xml_log_formatter::log_exception_finish( std::ostream& ostr ) -{ - ostr << "</Exception>"; -} - -//____________________________________________________________________________// - -void -xml_log_formatter::log_entry_start( std::ostream& ostr, log_entry_data const& entry_data, log_entry_types let ) -{ - static literal_string xml_tags[] = { "Info", "Message", "Warning", "Error", "FatalError" }; - - m_curr_tag = xml_tags[let]; - ostr << '<' << m_curr_tag - << BOOST_TEST_L( " file" ) << utils::attr_value() << entry_data.m_file_name - << BOOST_TEST_L( " line" ) << utils::attr_value() << entry_data.m_line_num - << BOOST_TEST_L( "><![CDATA[" ); - - m_value_closed = false; -} - -//____________________________________________________________________________// - -void -xml_log_formatter::log_entry_value( std::ostream& ostr, const_string value ) -{ - utils::print_escaped_cdata( ostr, value ); -} - -//____________________________________________________________________________// - -void -xml_log_formatter::log_entry_finish( std::ostream& ostr ) -{ - if( !m_value_closed ) { - ostr << BOOST_TEST_L( "]]>" ); - m_value_closed = true; - } - - ostr << BOOST_TEST_L( "</" ) << m_curr_tag << BOOST_TEST_L( ">" ); - - m_curr_tag.clear(); -} - -//____________________________________________________________________________// - -void -xml_log_formatter::entry_context_start( std::ostream& ostr, log_level ) -{ - if( !m_value_closed ) { - ostr << BOOST_TEST_L( "]]>" ); - m_value_closed = true; - } - - ostr << BOOST_TEST_L( "<Context>" ); -} - -//____________________________________________________________________________// - -void -xml_log_formatter::entry_context_finish( std::ostream& ostr, log_level ) -{ - ostr << BOOST_TEST_L( "</Context>" ); -} - -//____________________________________________________________________________// - -void -xml_log_formatter::log_entry_context( std::ostream& ostr, log_level, const_string context_descr ) -{ - ostr << BOOST_TEST_L( "<Frame>" ) << utils::cdata() << context_descr << BOOST_TEST_L( "</Frame>" ); -} - -//____________________________________________________________________________// - -} // namespace output -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_XML_LOG_FORMATTER_IPP_020105GER diff --git a/src/third_party/boost-1.69.0/boost/test/impl/xml_report_formatter.ipp b/src/third_party/boost-1.69.0/boost/test/impl/xml_report_formatter.ipp deleted file mode 100644 index 424ef4ba446..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/impl/xml_report_formatter.ipp +++ /dev/null @@ -1,111 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : OF_XML report formatter -// *************************************************************************** - -#ifndef BOOST_TEST_XML_REPORT_FORMATTER_IPP_020105GER -#define BOOST_TEST_XML_REPORT_FORMATTER_IPP_020105GER - -// Boost.Test -#include <boost/test/results_collector.hpp> -#include <boost/test/output/xml_report_formatter.hpp> - -#include <boost/test/tree/test_unit.hpp> -#include <boost/test/utils/xml_printer.hpp> -#include <boost/test/utils/basic_cstring/io.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace output { - -void -xml_report_formatter::results_report_start( std::ostream& ostr ) -{ - ostr << "<TestResult>"; -} - -//____________________________________________________________________________// - -void -xml_report_formatter::results_report_finish( std::ostream& ostr ) -{ - ostr << "</TestResult>"; -} - - -//____________________________________________________________________________// - -void -xml_report_formatter::test_unit_report_start( test_unit const& tu, std::ostream& ostr ) -{ - test_results const& tr = results_collector.results( tu.p_id ); - - const_string descr; - - if( tr.passed() ) - descr = "passed"; - else if( tr.p_skipped ) - descr = "skipped"; - else if( tr.p_aborted ) - descr = "aborted"; - else - descr = "failed"; - - ostr << '<' << ( tu.p_type == TUT_CASE ? "TestCase" : "TestSuite" ) - << " name" << utils::attr_value() << tu.p_name.get() - << " result" << utils::attr_value() << descr - << " assertions_passed" << utils::attr_value() << tr.p_assertions_passed - << " assertions_failed" << utils::attr_value() << tr.p_assertions_failed - << " warnings_failed" << utils::attr_value() << tr.p_warnings_failed - << " expected_failures" << utils::attr_value() << tr.p_expected_failures; - - if( tu.p_type == TUT_SUITE ) { - ostr << " test_cases_passed" << utils::attr_value() << tr.p_test_cases_passed - << " test_cases_passed_with_warnings" << utils::attr_value() << tr.p_test_cases_warned - << " test_cases_failed" << utils::attr_value() << tr.p_test_cases_failed - << " test_cases_skipped" << utils::attr_value() << tr.p_test_cases_skipped - << " test_cases_aborted" << utils::attr_value() << tr.p_test_cases_aborted; - } - - ostr << '>'; -} - -//____________________________________________________________________________// - -void -xml_report_formatter::test_unit_report_finish( test_unit const& tu, std::ostream& ostr ) -{ - ostr << "</" << ( tu.p_type == TUT_CASE ? "TestCase" : "TestSuite" ) << '>'; -} - -//____________________________________________________________________________// - -void -xml_report_formatter::do_confirmation_report( test_unit const& tu, std::ostream& ostr ) -{ - test_unit_report_start( tu, ostr ); - test_unit_report_finish( tu, ostr ); -} - -//____________________________________________________________________________// - -} // namespace output -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_XML_REPORT_FORMATTER_IPP_020105GER diff --git a/src/third_party/boost-1.69.0/boost/test/included/prg_exec_monitor.hpp b/src/third_party/boost-1.69.0/boost/test/included/prg_exec_monitor.hpp deleted file mode 100644 index ff48ce5594e..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/included/prg_exec_monitor.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : included (vs. linked ) version of Program Execution Monitor -// *************************************************************************** - -#ifndef BOOST_INCLUDED_PRG_EXEC_MONITOR_HPP_071894GER -#define BOOST_INCLUDED_PRG_EXEC_MONITOR_HPP_071894GER - -#include <boost/test/impl/execution_monitor.ipp> -#include <boost/test/impl/debug.ipp> -#include <boost/test/impl/cpp_main.ipp> - -#define BOOST_TEST_INCLUDED -#include <boost/test/prg_exec_monitor.hpp> - -#endif // BOOST_INCLUDED_PRG_EXEC_MONITOR_HPP_071894GER diff --git a/src/third_party/boost-1.69.0/boost/test/included/test_exec_monitor.hpp b/src/third_party/boost-1.69.0/boost/test/included/test_exec_monitor.hpp deleted file mode 100644 index e75b4698f29..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/included/test_exec_monitor.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// -/// @file -/// @brief Included (vs. linked) version of Test Execution Monitor -// *************************************************************************** - -#ifndef BOOST_INCLUDED_TEST_EXEC_MONITOR_HPP_071894GER -#define BOOST_INCLUDED_TEST_EXEC_MONITOR_HPP_071894GER - -#include <boost/test/impl/compiler_log_formatter.ipp> -#include <boost/test/impl/junit_log_formatter.ipp> -#include <boost/test/impl/debug.ipp> -#include <boost/test/impl/decorator.ipp> -#include <boost/test/impl/execution_monitor.ipp> -#include <boost/test/impl/framework.ipp> -#include <boost/test/impl/plain_report_formatter.ipp> -#include <boost/test/impl/progress_monitor.ipp> -#include <boost/test/impl/results_collector.ipp> -#include <boost/test/impl/results_reporter.ipp> -#include <boost/test/impl/test_framework_init_observer.ipp> -#include <boost/test/impl/test_main.ipp> -#include <boost/test/impl/test_tools.ipp> -#include <boost/test/impl/test_tree.ipp> -#include <boost/test/impl/unit_test_log.ipp> -#include <boost/test/impl/unit_test_main.ipp> -#include <boost/test/impl/unit_test_monitor.ipp> -#include <boost/test/impl/unit_test_parameters.ipp> -#include <boost/test/impl/xml_log_formatter.ipp> -#include <boost/test/impl/xml_report_formatter.ipp> - -#define BOOST_TEST_INCLUDED -#include <boost/test/test_exec_monitor.hpp> - -#endif // BOOST_INCLUDED_TEST_EXEC_MONITOR_HPP_071894GER diff --git a/src/third_party/boost-1.69.0/boost/test/included/unit_test.hpp b/src/third_party/boost-1.69.0/boost/test/included/unit_test.hpp deleted file mode 100644 index 90882eb178e..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/included/unit_test.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// -//!@file -//!@brief Included (vs. linked) version of Unit Test Framework -// *************************************************************************** - -#ifndef BOOST_INCLUDED_UNIT_TEST_FRAMEWORK_HPP_071894GER -#define BOOST_INCLUDED_UNIT_TEST_FRAMEWORK_HPP_071894GER - -#define BOOST_TEST_INCLUDED - -#include <boost/test/impl/compiler_log_formatter.ipp> -#include <boost/test/impl/junit_log_formatter.ipp> -#include <boost/test/impl/debug.ipp> -#include <boost/test/impl/decorator.ipp> -#include <boost/test/impl/framework.ipp> -#include <boost/test/impl/execution_monitor.ipp> -#include <boost/test/impl/plain_report_formatter.ipp> -#include <boost/test/impl/progress_monitor.ipp> -#include <boost/test/impl/results_collector.ipp> -#include <boost/test/impl/results_reporter.ipp> -#include <boost/test/impl/test_framework_init_observer.ipp> -#include <boost/test/impl/test_tools.ipp> -#include <boost/test/impl/test_tree.ipp> -#include <boost/test/impl/unit_test_log.ipp> -#include <boost/test/impl/unit_test_main.ipp> -#include <boost/test/impl/unit_test_monitor.ipp> -#include <boost/test/impl/unit_test_parameters.ipp> -#include <boost/test/impl/xml_log_formatter.ipp> -#include <boost/test/impl/xml_report_formatter.ipp> - -#include <boost/test/unit_test.hpp> - -#endif // BOOST_INCLUDED_UNIT_TEST_FRAMEWORK_HPP_071894GER diff --git a/src/third_party/boost-1.69.0/boost/test/output/compiler_log_formatter.hpp b/src/third_party/boost-1.69.0/boost/test/output/compiler_log_formatter.hpp deleted file mode 100644 index 50359334b1b..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/output/compiler_log_formatter.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief Contains the formatter for the Human Readable Format (HRF) -// *************************************************************************** - -#ifndef BOOST_TEST_COMPILER_LOG_FORMATTER_HPP_020105GER -#define BOOST_TEST_COMPILER_LOG_FORMATTER_HPP_020105GER - -// Boost.Test -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/unit_test_log_formatter.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace output { - -// ************************************************************************** // -// ************** compiler_log_formatter ************** // -// ************************************************************************** // - -//!@brief Log formatter for the Human Readable Format (HRF) log format -class BOOST_TEST_DECL compiler_log_formatter : public unit_test_log_formatter { -public: - compiler_log_formatter() : m_color_output( false ) {} - - // Formatter interface - void log_start( std::ostream&, counter_t test_cases_amount ); - void log_finish( std::ostream& ); - void log_build_info( std::ostream& ); - - void test_unit_start( std::ostream&, test_unit const& tu ); - void test_unit_finish( std::ostream&, test_unit const& tu, unsigned long elapsed ); - void test_unit_skipped( std::ostream&, test_unit const& tu, const_string reason ); - - void log_exception_start( std::ostream&, log_checkpoint_data const&, execution_exception const& ex ); - void log_exception_finish( std::ostream& ); - - void log_entry_start( std::ostream&, log_entry_data const&, log_entry_types let ); - void log_entry_value( std::ostream&, const_string value ); - void log_entry_value( std::ostream&, lazy_ostream const& value ); - void log_entry_finish( std::ostream& ); - - void entry_context_start( std::ostream&, log_level ); - void log_entry_context( std::ostream&, log_level l, const_string ); - void entry_context_finish( std::ostream&, log_level l ); - -protected: - virtual void print_prefix( std::ostream&, const_string file, std::size_t line ); - - // Data members - bool m_color_output; -}; - -} // namespace output -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_COMPILER_LOG_FORMATTER_HPP_020105GER diff --git a/src/third_party/boost-1.69.0/boost/test/output/junit_log_formatter.hpp b/src/third_party/boost-1.69.0/boost/test/output/junit_log_formatter.hpp deleted file mode 100644 index 713d3b016c6..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/output/junit_log_formatter.hpp +++ /dev/null @@ -1,167 +0,0 @@ -// (C) Copyright 2016 Raffi Enficiaud. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -///@file -///@brief Contains the definition of the Junit log formatter (OF_JUNIT) -// *************************************************************************** - -#ifndef BOOST_TEST_JUNIT_LOG_FORMATTER__ -#define BOOST_TEST_JUNIT_LOG_FORMATTER__ - -// Boost.Test -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/unit_test_log_formatter.hpp> -#include <boost/test/tree/test_unit.hpp> - -//#include <boost/test/results_collector.hpp> - -// STL -#include <cstddef> // std::size_t -#include <map> -#include <list> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace output { - - - namespace junit_impl { - - // helper for the JUnit logger - struct junit_log_helper - { - struct assertion_entry { - - enum log_entry_t { - log_entry_info, - log_entry_error, - log_entry_failure - }; - - assertion_entry() : sealed(false) - {} - - std::string logentry_message; // the message associated to the JUnit error/entry - std::string logentry_type; // the one that will get expanded in the final junit (failure, error) - std::string output; // additional information/message generated by the assertion - - log_entry_t log_entry; // the type associated to the assertion (or error) - - bool sealed; // indicates if the entry can accept additional information - }; - - std::list<std::string> system_out; // sysout: additional information - std::list<std::string> system_err; // syserr: additional information - std::string skipping_reason; - - // list of failure, errors and messages (assertions message and the full log) - std::vector< assertion_entry > assertion_entries; - - bool skipping; - - junit_log_helper(): skipping(false) - {} - - void clear() { - assertion_entries.clear(); - system_out.clear(); - system_err.clear(); - skipping_reason.clear(); - skipping = false; - } - - }; - } - -// ************************************************************************** // -// ************** junit_log_formatter ************** // -// ************************************************************************** // - -/// JUnit logger class -class junit_log_formatter : public unit_test_log_formatter { -public: - - junit_log_formatter() : m_display_build_info(false) - { - // we log everything from the logger singleton point of view - // because we need to know about all the messages/commands going to the logger - // we decide what we put inside the logs internally - this->m_log_level = log_successful_tests; - m_log_level_internal = log_messages; - } - - // Formatter interface - void log_start( std::ostream&, counter_t test_cases_amount ); - void log_finish( std::ostream& ); - void log_build_info( std::ostream& ); - - void test_unit_start( std::ostream&, test_unit const& tu ); - void test_unit_finish( std::ostream&, test_unit const& tu, unsigned long elapsed ); - void test_unit_skipped( std::ostream&, test_unit const& tu, const_string reason ); - void test_unit_aborted( std::ostream& os, test_unit const& tu ); - - void log_exception_start( std::ostream&, log_checkpoint_data const&, execution_exception const& ex ); - void log_exception_finish( std::ostream& ); - - void log_entry_start( std::ostream&, log_entry_data const&, log_entry_types let ); - - using unit_test_log_formatter::log_entry_value; // bring base class functions into overload set - void log_entry_value( std::ostream&, const_string value ); - void log_entry_finish( std::ostream& ); - - void entry_context_start( std::ostream&, log_level ); - void log_entry_context( std::ostream&, log_level, const_string ); - void entry_context_finish( std::ostream&, log_level ); - - //! Discards changes in the log level - virtual void set_log_level(log_level ll) - { - if(ll > log_successful_tests && ll < log_messages) - ll = log_successful_tests; - else if (ll > log_all_errors) - ll = log_all_errors; - - this->m_log_level_internal = ll; - } - - //! Instead of a regular stream, returns a file name corresponding to - //! the current master test suite. If the file already exists, adds an index - //! to it. - virtual std::string get_default_stream_description() const; - - -private: - typedef std::map<test_unit_id, junit_impl::junit_log_helper> map_trace_t; - map_trace_t map_tests; - junit_impl::junit_log_helper runner_log_entry; - - junit_impl::junit_log_helper& get_current_log_entry() { - if(list_path_to_root.empty()) - return runner_log_entry; - map_trace_t::iterator it = map_tests.find(list_path_to_root.back()); - return (it == map_tests.end() ? runner_log_entry : it->second); - } - - std::list<test_unit_id> list_path_to_root; - bool m_display_build_info; - bool m_is_last_assertion_or_error; // true if failure, false if error - - log_level m_log_level_internal; - friend class junit_result_helper; -}; - -} // namespace output -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_JUNIT_LOG_FORMATTER__ diff --git a/src/third_party/boost-1.69.0/boost/test/output/plain_report_formatter.hpp b/src/third_party/boost-1.69.0/boost/test/output/plain_report_formatter.hpp deleted file mode 100644 index 8c509645977..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/output/plain_report_formatter.hpp +++ /dev/null @@ -1,59 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : plain report formatter implementation -// *************************************************************************** - -#ifndef BOOST_TEST_PLAIN_REPORT_FORMATTER_HPP_020105GER -#define BOOST_TEST_PLAIN_REPORT_FORMATTER_HPP_020105GER - -// Boost.Test -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/results_reporter.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace output { - -// ************************************************************************** // -// ************** plain_report_formatter ************** // -// ************************************************************************** // - -class plain_report_formatter : public results_reporter::format { -public: - plain_report_formatter() : m_indent( 0 ), m_color_output( false ) {} - - // Formatter interface - void results_report_start( std::ostream& ostr ); - void results_report_finish( std::ostream& ostr ); - - void test_unit_report_start( test_unit const&, std::ostream& ostr ); - void test_unit_report_finish( test_unit const&, std::ostream& ostr ); - - void do_confirmation_report( test_unit const&, std::ostream& ostr ); - -private: - // Data members - counter_t m_indent; - bool m_color_output; -}; - -} // namespace output -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_PLAIN_REPORT_FORMATTER_HPP_020105GER diff --git a/src/third_party/boost-1.69.0/boost/test/output/xml_log_formatter.hpp b/src/third_party/boost-1.69.0/boost/test/output/xml_log_formatter.hpp deleted file mode 100644 index 1d8dec0f95f..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/output/xml_log_formatter.hpp +++ /dev/null @@ -1,72 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : contains OF_XML Log formatter definition -// *************************************************************************** - -#ifndef BOOST_TEST_XML_LOG_FORMATTER_020105GER -#define BOOST_TEST_XML_LOG_FORMATTER_020105GER - -// Boost.Test -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/unit_test_log_formatter.hpp> - -// STL -#include <cstddef> // std::size_t - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace output { - -// ************************************************************************** // -// ************** xml_log_formatter ************** // -// ************************************************************************** // - -class xml_log_formatter : public unit_test_log_formatter { -public: - // Formatter interface - void log_start( std::ostream&, counter_t test_cases_amount ); - void log_finish( std::ostream& ); - void log_build_info( std::ostream& ); - - void test_unit_start( std::ostream&, test_unit const& tu ); - void test_unit_finish( std::ostream&, test_unit const& tu, unsigned long elapsed ); - void test_unit_skipped( std::ostream&, test_unit const& tu, const_string reason ); - - void log_exception_start( std::ostream&, log_checkpoint_data const&, execution_exception const& ex ); - void log_exception_finish( std::ostream& ); - - void log_entry_start( std::ostream&, log_entry_data const&, log_entry_types let ); - using unit_test_log_formatter::log_entry_value; // bring base class functions into overload set - void log_entry_value( std::ostream&, const_string value ); - void log_entry_finish( std::ostream& ); - - void entry_context_start( std::ostream&, log_level ); - void log_entry_context( std::ostream&, log_level, const_string ); - void entry_context_finish( std::ostream&, log_level ); - -private: - // Data members - const_string m_curr_tag; - bool m_value_closed; -}; - -} // namespace output -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_XML_LOG_FORMATTER_020105GER diff --git a/src/third_party/boost-1.69.0/boost/test/output/xml_report_formatter.hpp b/src/third_party/boost-1.69.0/boost/test/output/xml_report_formatter.hpp deleted file mode 100644 index ca5e47182f1..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/output/xml_report_formatter.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : OF_XML report formatter implementation -// *************************************************************************** - -#ifndef BOOST_TEST_XML_REPORT_FORMATTER_HPP_020105GER -#define BOOST_TEST_XML_REPORT_FORMATTER_HPP_020105GER - -// Boost.Test -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/results_reporter.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace output { - -// ************************************************************************** // -// ************** xml_report_formatter ************** // -// ************************************************************************** // - -class xml_report_formatter : public results_reporter::format { -public: - // Formatter interface - void results_report_start( std::ostream& ostr ); - void results_report_finish( std::ostream& ostr ); - - void test_unit_report_start( test_unit const&, std::ostream& ostr ); - void test_unit_report_finish( test_unit const&, std::ostream& ostr ); - - void do_confirmation_report( test_unit const&, std::ostream& ostr ); -}; - -} // namespace output -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_XML_REPORT_FORMATTER_HPP_020105GER diff --git a/src/third_party/boost-1.69.0/boost/test/prg_exec_monitor.hpp b/src/third_party/boost-1.69.0/boost/test/prg_exec_monitor.hpp deleted file mode 100644 index f072e215dbe..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/prg_exec_monitor.hpp +++ /dev/null @@ -1,81 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief Entry point for the end user into the Program Execution Monitor. -/// -/// Use this header to forward declare function prg_exec_monitor_main and to automatically define a main -/// function for you. If you prefer to use your own main you are free to do so, but you need to define -/// BOOST_TEST_NO_MAIN before incuding this header. To initiate your main program body execution you -/// would use statement like this: -/// @code ::boost::prg_exec_monitor_main( &my_main, argc, argv ); @endcode -/// Also this header facilitate auto linking with the Program Execution Monitor library if this feature -/// is supported -// *************************************************************************** - -#ifndef BOOST_PRG_EXEC_MONITOR_HPP_071894GER -#define BOOST_PRG_EXEC_MONITOR_HPP_071894GER - -#include <boost/test/detail/config.hpp> - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** Auto Linking ************** // -// ************************************************************************** // - -// Automatically link to the correct build variant where possible. -#if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_TEST_NO_LIB) && \ - !defined(BOOST_TEST_SOURCE) && !defined(BOOST_TEST_INCLUDED) -# define BOOST_LIB_NAME boost_prg_exec_monitor - -// If we're importing code from a dll, then tell auto_link.hpp about it: -# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_TEST_DYN_LINK) -# define BOOST_DYN_LINK -# endif - -# include <boost/config/auto_link.hpp> - -#endif // auto-linking disabled - -// ************************************************************************** // -// ************** prg_exec_monitor_main ************** // -// ************************************************************************** // - -namespace boost { - -/// @brief Wrapper around the main function -/// -/// Call this routine instead of your own main body implementation directly. This routine impements all the monitoring -/// functionality. THe monitor behavior is configurable by using the environment variable BOOST_TEST_CATCH_SYSTEM_ERRORS. -/// If set to string value "no", the monitor will not attempt to catch system errors (signals) -/// @param[in] cpp_main main function body. Should have the same signature as regular main function -/// @param[in] argc, argv command line arguments -int BOOST_TEST_DECL prg_exec_monitor_main( int (*cpp_main)( int argc, char* argv[] ), int argc, char* argv[] ); - -} // boost - -#if defined(BOOST_TEST_DYN_LINK) && !defined(BOOST_TEST_NO_MAIN) - -// ************************************************************************** // -// ************** main function for tests using dll ************** // -// ************************************************************************** // - -// prototype for user's cpp_main() -int cpp_main( int argc, char* argv[] ); - -int BOOST_TEST_CALL_DECL -main( int argc, char* argv[] ) -{ - return ::boost::prg_exec_monitor_main( &cpp_main, argc, argv ); -} - -//____________________________________________________________________________// - -#endif // BOOST_TEST_DYN_LINK && !BOOST_TEST_NO_MAIN - -#endif // BOOST_PRG_EXEC_MONITOR_HPP_071894GER diff --git a/src/third_party/boost-1.69.0/boost/test/progress_monitor.hpp b/src/third_party/boost-1.69.0/boost/test/progress_monitor.hpp deleted file mode 100644 index 49c0b014971..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/progress_monitor.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief defines simple text based progress monitor -// *************************************************************************** - -#ifndef BOOST_TEST_PROGRESS_MONITOR_HPP_020105GER -#define BOOST_TEST_PROGRESS_MONITOR_HPP_020105GER - -// Boost.Test -#include <boost/test/tree/observer.hpp> - -// STL -#include <iosfwd> // for std::ostream& - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** progress_monitor ************** // -// ************************************************************************** // - -/// This class implements test observer interface and updates test progress as test units finish or get aborted -class BOOST_TEST_DECL progress_monitor_t : public test_observer { -public: - /// @name Test observer interface - /// @{ - virtual void test_start( counter_t test_cases_amount ); - virtual void test_aborted(); - - virtual void test_unit_finish( test_unit const&, unsigned long ); - virtual void test_unit_skipped( test_unit const&, const_string ); - - virtual int priority() { return 4; } - /// @} - - /// @name Configuration - /// @{ - void set_stream( std::ostream& ); - /// @} - - /// Singleton pattern - BOOST_TEST_SINGLETON_CONS( progress_monitor_t ) -}; // progress_monitor_t - -BOOST_TEST_SINGLETON_INST( progress_monitor ) - -} // namespace unit_test -} // namespace boost - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_PROGRESS_MONITOR_HPP_020105GER - diff --git a/src/third_party/boost-1.69.0/boost/test/results_collector.hpp b/src/third_party/boost-1.69.0/boost/test/results_collector.hpp deleted file mode 100644 index 8e8a6202ed4..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/results_collector.hpp +++ /dev/null @@ -1,148 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief Defines testing result collector components -/// -/// Defines classes for keeping track (@ref test_results) and collecting -/// (@ref results_collector_t) the states of the test units. -// *************************************************************************** - -#ifndef BOOST_TEST_RESULTS_COLLECTOR_HPP_071894GER -#define BOOST_TEST_RESULTS_COLLECTOR_HPP_071894GER - -// Boost.Test -#include <boost/test/tree/observer.hpp> - -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/detail/fwd_decl.hpp> - -#include <boost/test/utils/class_properties.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -namespace { - -// ************************************************************************** // -/// First failed assertion debugger hook -/// -/// This function is a placeholder where user can set a breakpoint in debugger to catch the -/// very first assertion failure in each test case -// ************************************************************************** // -inline void first_failed_assertion() {} -} - -// ************************************************************************** // -/// @brief Collection of attributes constituting test unit results -/// -/// This class is a collection of attributes describing a test result. -/// -/// The attributes presented as public properties on -/// an instance of the class. In addition summary conclusion methods are presented to generate simple answer to pass/fail question - -class BOOST_TEST_DECL test_results { -public: - test_results(); - - /// Type representing counter like public property - typedef BOOST_READONLY_PROPERTY( counter_t, (results_collector_t) - (test_results) - (results_collect_helper) ) counter_prop; - /// Type representing boolean like public property - typedef BOOST_READONLY_PROPERTY( bool, (results_collector_t) - (test_results) - (results_collect_helper) ) bool_prop; - - counter_prop p_assertions_passed; //!< Number of successful assertions - counter_prop p_assertions_failed; //!< Number of failing assertions - counter_prop p_warnings_failed; //!< Number of warnings - counter_prop p_expected_failures; - counter_prop p_test_cases_passed; //!< Number of successfull test cases - counter_prop p_test_cases_warned; //!< Number of warnings in test cases - counter_prop p_test_cases_failed; //!< Number of failing test cases - counter_prop p_test_cases_skipped; //!< Number of skipped test cases - counter_prop p_test_cases_aborted; //!< Number of aborted test cases - counter_prop p_duration_microseconds; //!< Duration of the test in microseconds - bool_prop p_aborted; //!< Indicates that the test unit execution has been aborted - bool_prop p_skipped; //!< Indicates that the test unit execution has been skipped - - /// Returns true if test unit passed - bool passed() const; - - /// Returns true if test unit skipped - /// - /// For test suites, this indicates if the test suite itself has been marked as - /// skipped, and not if the test suite contains any skipped test. - bool skipped() const; - - /// Returns true if the test unit was aborted (hard failure) - bool aborted() const; - - /// Produces result code for the test unit execution - /// - /// This methhod return one of the result codes defined in @c boost/cstdlib.hpp - /// @returns - /// - @c boost::exit_success on success, - /// - @c boost::exit_exception_failure in case test unit - /// was aborted for any reason (incuding uncaught exception) - /// - and @c boost::exit_test_failure otherwise - int result_code() const; - - //! Combines the results of the current instance with another - //! - //! Only the counters are updated and the @c p_aborted and @c p_skipped are left unchanged. - void operator+=( test_results const& ); - - //! Resets the current state of the result - void clear(); -}; - -// ************************************************************************** // -/// @brief Collects and combines the test results -/// -/// This class collects and combines the results of the test unit during the execution of the -/// test tree. The results_collector_t::results() function combines the test results on a subtree -/// of the test tree. -/// -/// @see boost::unit_test::test_observer -class BOOST_TEST_DECL results_collector_t : public test_observer { -public: - - virtual void test_start( counter_t ); - - virtual void test_unit_start( test_unit const& ); - virtual void test_unit_finish( test_unit const&, unsigned long ); - virtual void test_unit_skipped( test_unit const&, const_string ); - virtual void test_unit_aborted( test_unit const& ); - - virtual void assertion_result( unit_test::assertion_result ); - virtual void exception_caught( execution_exception const& ); - - virtual int priority() { return 3; } - - /// Results access per test unit - /// - /// @param[in] tu_id id of a test unit - test_results const& results( test_unit_id tu_id ) const; - - /// Singleton pattern - BOOST_TEST_SINGLETON_CONS( results_collector_t ) -}; - -BOOST_TEST_SINGLETON_INST( results_collector ) - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_RESULTS_COLLECTOR_HPP_071894GER diff --git a/src/third_party/boost-1.69.0/boost/test/results_reporter.hpp b/src/third_party/boost-1.69.0/boost/test/results_reporter.hpp deleted file mode 100644 index 6f8d8f1105f..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/results_reporter.hpp +++ /dev/null @@ -1,122 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief defines testing result reporter interfaces -/// -/// This file defines interfaces that are responsible for results reporting. Interface is presented in a form of -/// free standing function implemented in namespace result_reporter -// *************************************************************************** - -#ifndef BOOST_TEST_RESULTS_REPORTER_HPP_021205GER -#define BOOST_TEST_RESULTS_REPORTER_HPP_021205GER - -// Boost.Test -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/detail/fwd_decl.hpp> - -// STL -#include <iosfwd> // for std::ostream& - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -/// Namespace for results reporter interfaces -namespace results_reporter { - -// ************************************************************************** // -/// @brief Results report formatter interface -/// -/// This is abstract interface for the report formatter used by results reporter routines. -/// You can define a custom formatter by implementing this interface and setting the formatter using set_format function. -/// This is usually done during test module initialization -// ************************************************************************** // - -class BOOST_TEST_DECL format { -public: - // Destructor - virtual ~format() {} - - virtual void results_report_start( std::ostream& ostr ) = 0; - virtual void results_report_finish( std::ostream& ostr ) = 0; - - virtual void test_unit_report_start( test_unit const&, std::ostream& ostr ) = 0; - virtual void test_unit_report_finish( test_unit const&, std::ostream& ostr ) = 0; - - virtual void do_confirmation_report( test_unit const&, std::ostream& ostr ) = 0; -}; - -// ************************************************************************** // -/// @name report configuration -// ************************************************************************** // - -/// Sets reporting level - -/// There are only four possible levels for results report: -/// - confirmation report (boost::unit_test::CONFIRMATION_REPORT). This report level only produces short confirmation -/// message about test module pass/fail status -/// - short report (boost::unit_test::SHORT_REPORT). This report level produces short summary report for failed/passed -/// assertions and test units. -/// - detailed report (boost::unit_test::DETAILED_REPORT). This report level produces detailed report per test unit for -/// passed/failed assertions and uncaught exceptions -/// - no report (boost::unit_test::NO_REPORT). This report level produces no results report. This is used for test modules -/// running as part of some kind of continues integration framework -/// @param[in] l report level -BOOST_TEST_DECL void set_level( report_level l ); - -/// Sets output stream for results reporting - -/// By default std::cerr is used. Use this function to set a different stream. The framework -/// refers to the stream by reference, so you need to make sure the stream object lifetime exceeds the testing main scope. -BOOST_TEST_DECL void set_stream( std::ostream& ); - -/// Sets one of the predefined formats - -/// The framework implements two results report formats: -/// - plain human readable format (boost::unit_test::OF_CLF) -/// - XML format (boost::unit_test::OF_XML) -/// @param[in] of one of the presefined enumeration values for output formats -BOOST_TEST_DECL void set_format( output_format of ); - -/// Sets custom report formatter - -/// The framework takes ownership of the pointer passed as an argument. So this should be a pointer to -/// a heap allocated object -/// @param[in] f pointer to heap allocated instance of custom report formatter class -BOOST_TEST_DECL void set_format( results_reporter::format* f ); - -/// @brief Access to configured results reporter stream -/// -/// Use this stream to report additional information abut test module execution -BOOST_TEST_DECL std::ostream& get_stream(); - -/// @} - -// ************************************************************************** // -// ************** report initiation ************** // -// ************************************************************************** // - -BOOST_TEST_DECL void make_report( report_level l = INV_REPORT_LEVEL, test_unit_id = INV_TEST_UNIT_ID ); -inline void confirmation_report( test_unit_id id = INV_TEST_UNIT_ID ) -{ make_report( CONFIRMATION_REPORT, id ); } -inline void short_report( test_unit_id id = INV_TEST_UNIT_ID ) -{ make_report( SHORT_REPORT, id ); } -inline void detailed_report( test_unit_id id = INV_TEST_UNIT_ID ) -{ make_report( DETAILED_REPORT, id ); } - -} // namespace results_reporter -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_RESULTS_REPORTER_HPP_021205GER - diff --git a/src/third_party/boost-1.69.0/boost/test/test_exec_monitor.hpp b/src/third_party/boost-1.69.0/boost/test/test_exec_monitor.hpp deleted file mode 100644 index 04508093352..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/test_exec_monitor.hpp +++ /dev/null @@ -1,53 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief Deprecated implementation of Test Execution Monitor -/// -/// To convert to Unit Test Framework simply rewrite: -/// @code -/// #include <boost/test/test_exec_monitor.hpp> -/// -/// int test_main( int, char *[] ) -/// { -/// ... -/// } -/// @endcode -/// as -/// @code -/// #include <boost/test/unit_test.hpp> -/// -/// BOOST_AUTO_TEST_CASE(test_main) -/// { -/// ... -/// } -/// @endcode -/// and link with boost_unit_test_framework library *instead of* boost_test_exec_monitor -// *************************************************************************** - -#ifndef BOOST_TEST_EXEC_MONITOR_HPP_071894GER -#define BOOST_TEST_EXEC_MONITOR_HPP_071894GER - -// Boost.Test -#include <boost/test/test_tools.hpp> - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** Auto Linking ************** // -// ************************************************************************** // - -// Automatically link to the correct build variant where possible. -#if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_TEST_NO_LIB) && \ - !defined(BOOST_TEST_SOURCE) && !defined(BOOST_TEST_INCLUDED) - -# define BOOST_LIB_NAME boost_test_exec_monitor -# include <boost/config/auto_link.hpp> - -#endif // auto-linking disabled - -#endif // BOOST_TEST_EXEC_MONITOR_HPP_071894GER diff --git a/src/third_party/boost-1.69.0/boost/test/test_framework_init_observer.hpp b/src/third_party/boost-1.69.0/boost/test/test_framework_init_observer.hpp deleted file mode 100644 index 8bf0bb99479..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/test_framework_init_observer.hpp +++ /dev/null @@ -1,61 +0,0 @@ -// (c) Copyright Raffi Enficiaud 2017. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief Defines an observer that monitors the init of the unit test framework -// *************************************************************************** - -#ifndef BOOST_TEST_FRAMEWORK_INIT_OBSERVER_HPP_071894GER -#define BOOST_TEST_FRAMEWORK_INIT_OBSERVER_HPP_071894GER - -// Boost.Test -#include <boost/test/tree/observer.hpp> - -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/detail/fwd_decl.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -/// @brief Monitors the init of the framework -/// -/// This class collects the state of the init/termination of the unit test framework. -/// -/// @see boost::unit_test::test_observer -class BOOST_TEST_DECL framework_init_observer_t : public test_observer { -public: - - virtual void test_start( counter_t ); - - virtual void assertion_result( unit_test::assertion_result ); - virtual void exception_caught( execution_exception const& ); - virtual void test_aborted(); - - virtual int priority() { return 0; } - - void clear(); - - /// Indicates if a failure has been recorded so far - bool has_failed( ) const; - - /// Singleton pattern - BOOST_TEST_SINGLETON_CONS( framework_init_observer_t ) -}; - -BOOST_TEST_SINGLETON_INST( framework_init_observer ) - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_FRAMEWORK_INIT_OBSERVER_HPP_071894GER diff --git a/src/third_party/boost-1.69.0/boost/test/test_tools.hpp b/src/third_party/boost-1.69.0/boost/test/test_tools.hpp deleted file mode 100644 index a542d5fcdee..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/test_tools.hpp +++ /dev/null @@ -1,68 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief test tools compatibility header -/// -/// This file is used to select the test tools implementation and includes all the necessary headers -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_HPP_111812GER -#define BOOST_TEST_TOOLS_HPP_111812GER - -#include <boost/config.hpp> - -// brings some compiler configuration like BOOST_PP_VARIADICS -#include <boost/test/detail/config.hpp> - -#include <boost/preprocessor/config/config.hpp> - -#if defined(BOOST_NO_CXX11_VARIADIC_MACROS) \ - || defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) \ - || defined(BOOST_NO_CXX11_DECLTYPE) -# define BOOST_TEST_MACRO_LIMITED_SUPPORT -#endif - -// Boost.Test -// #define BOOST_TEST_NO_OLD_TOOLS - -#if defined(BOOST_TEST_MACRO_LIMITED_SUPPORT) \ - && ( !BOOST_PP_VARIADICS \ - || !(__cplusplus >= 201103L) && defined(BOOST_NO_CXX11_VARIADIC_MACROS)) -# define BOOST_TEST_NO_NEW_TOOLS -#endif - -// #define BOOST_TEST_TOOLS_UNDER_DEBUGGER -// #define BOOST_TEST_TOOLS_DEBUGGABLE - -#include <boost/test/tools/context.hpp> - -#ifndef BOOST_TEST_NO_OLD_TOOLS -# include <boost/test/tools/old/interface.hpp> -# include <boost/test/tools/old/impl.hpp> - -# include <boost/test/tools/detail/print_helper.hpp> -#endif - -#ifndef BOOST_TEST_NO_NEW_TOOLS -# include <boost/test/tools/interface.hpp> -# include <boost/test/tools/assertion.hpp> -# include <boost/test/tools/fpc_op.hpp> -# include <boost/test/tools/collection_comparison_op.hpp> -# include <boost/test/tools/cstring_comparison_op.hpp> - -# include <boost/test/tools/detail/fwd.hpp> -# include <boost/test/tools/detail/print_helper.hpp> -# include <boost/test/tools/detail/it_pair.hpp> - -# include <boost/test/tools/detail/bitwise_manip.hpp> -# include <boost/test/tools/detail/tolerance_manip.hpp> -# include <boost/test/tools/detail/per_element_manip.hpp> -# include <boost/test/tools/detail/lexicographic_manip.hpp> -#endif - -#endif // BOOST_TEST_TOOLS_HPP_111812GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/assertion.hpp b/src/third_party/boost-1.69.0/boost/test/tools/assertion.hpp deleted file mode 100644 index 2a7d96ebb1c..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/assertion.hpp +++ /dev/null @@ -1,413 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief Defines framework for automated assertion construction -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_ASSERTION_HPP_100911GER -#define BOOST_TEST_TOOLS_ASSERTION_HPP_100911GER - -// Boost.Test -#include <boost/test/tools/assertion_result.hpp> -#include <boost/test/tools/detail/print_helper.hpp> -#include <boost/test/tools/detail/fwd.hpp> - -// Boost -#include <boost/type.hpp> -#include <boost/type_traits/decay.hpp> -#include <boost/mpl/assert.hpp> -#include <boost/utility/declval.hpp> -#include <boost/type_traits/remove_reference.hpp> -#include <boost/type_traits/remove_const.hpp> - -// STL -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES -#include <utility> -#endif - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { -namespace assertion { - -// ************************************************************************** // -// ************** assertion::operators ************** // -// ************************************************************************** // -// precedence 4: ->*, .* -// precedence 5: *, /, % -// precedence 6: +, - -// precedence 7: << , >> -// precedence 8: <, <=, > and >= -// precedence 9: == and != -// precedence 10: bitwise AND -// precedence 11: bitwise XOR -// precedence 12: bitwise OR -// precedence 13: logical AND -// disabled -// precedence 14: logical OR -// disabled -// precedence 15: ternary conditional -// disabled -// precedence 16: = and OP= operators -// precedence 17: throw operator -// not supported -// precedence 18: comma -// not supported - -namespace op { - -#define BOOST_TEST_FOR_EACH_COMP_OP(action) \ - action( < , LT, >= ) \ - action( <=, LE, > ) \ - action( > , GT, <= ) \ - action( >=, GE, < ) \ - action( ==, EQ, != ) \ - action( !=, NE, == ) \ -/**/ - -//____________________________________________________________________________// - -#ifndef BOOST_NO_CXX11_DECLTYPE - -#define BOOST_TEST_FOR_EACH_CONST_OP(action)\ - action(->*, MEMP, ->* ) \ - \ - action( * , MUL, * ) \ - action( / , DIV, / ) \ - action( % , MOD, % ) \ - \ - action( + , ADD, + ) \ - action( - , SUB, - ) \ - \ - action( <<, LSH, << ) \ - action( >>, RSH, >> ) \ - \ - BOOST_TEST_FOR_EACH_COMP_OP(action) \ - \ - action( & , BAND, & ) \ - action( ^ , XOR, ^ ) \ - action( | , BOR, | ) \ -/**/ - -#else - -#define BOOST_TEST_FOR_EACH_CONST_OP(action)\ - BOOST_TEST_FOR_EACH_COMP_OP(action) \ -/**/ - -#endif - -//____________________________________________________________________________// - -#define BOOST_TEST_FOR_EACH_MUT_OP(action) \ - action( = , SET , = ) \ - action( +=, IADD, += ) \ - action( -=, ISUB, -= ) \ - action( *=, IMUL, *= ) \ - action( /=, IDIV, /= ) \ - action( %=, IMOD, %= ) \ - action(<<=, ILSH, <<=) \ - action(>>=, IRSH, >>=) \ - action( &=, IAND, &= ) \ - action( ^=, IXOR, ^= ) \ - action( |=, IOR , |= ) \ -/**/ - -//____________________________________________________________________________// - -#ifndef BOOST_NO_CXX11_DECLTYPE -# define DEDUCE_RESULT_TYPE( oper ) \ - decltype(boost::declval<Lhs>() oper boost::declval<Rhs>() ) optype; \ - typedef typename boost::remove_reference<optype>::type \ -/**/ -#else -# define DEDUCE_RESULT_TYPE( oper ) bool -#endif - -#define DEFINE_CONST_OPER( oper, name, rev ) \ -template<typename Lhs, typename Rhs, \ - typename Enabler=void> \ -struct name { \ - typedef DEDUCE_RESULT_TYPE( oper ) result_type; \ - \ - static result_type \ - eval( Lhs const& lhs, Rhs const& rhs ) \ - { \ - return lhs oper rhs; \ - } \ - \ - template<typename PrevExprType> \ - static void \ - report( std::ostream& ostr, \ - PrevExprType const& lhs, \ - Rhs const& rhs) \ - { \ - lhs.report( ostr ); \ - ostr << revert() \ - << tt_detail::print_helper( rhs ); \ - } \ - \ - static char const* revert() \ - { return " " #rev " "; } \ -}; \ -/**/ - -BOOST_TEST_FOR_EACH_CONST_OP( DEFINE_CONST_OPER ) - -#undef DEDUCE_RESULT_TYPE -#undef DEFINE_CONST_OPER - -//____________________________________________________________________________// - -} // namespace op - -// ************************************************************************** // -// ************** assertion::expression_base ************** // -// ************************************************************************** // -// Defines expression operators - -template<typename Lhs, typename Rhs, typename OP> class binary_expr; - -template<typename ExprType,typename ValType> -class expression_base { -public: - -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - template<typename T> - struct RhsT : remove_const<typename remove_reference<T>::type> {}; - -#define ADD_OP_SUPPORT( oper, name, _ ) \ - template<typename T> \ - binary_expr<ExprType,T, \ - op::name<ValType,typename RhsT<T>::type> > \ - operator oper( T&& rhs ) \ - { \ - return binary_expr<ExprType,T, \ - op::name<ValType,typename RhsT<T>::type> > \ - ( std::forward<ExprType>( \ - *static_cast<ExprType*>(this) ), \ - std::forward<T>(rhs) ); \ - } \ -/**/ -#else - -#define ADD_OP_SUPPORT( oper, name, _ ) \ - template<typename T> \ - binary_expr<ExprType,typename boost::decay<T const>::type, \ - op::name<ValType,typename boost::decay<T const>::type> >\ - operator oper( T const& rhs ) const \ - { \ - typedef typename boost::decay<T const>::type Rhs; \ - return binary_expr<ExprType,Rhs,op::name<ValType,Rhs> > \ - ( *static_cast<ExprType const*>(this), \ - rhs ); \ - } \ -/**/ -#endif - - BOOST_TEST_FOR_EACH_CONST_OP( ADD_OP_SUPPORT ) - #undef ADD_OP_SUPPORT - -#ifndef BOOST_NO_CXX11_AUTO_DECLARATIONS - // Disabled operators - template<typename T> - ExprType& - operator ||( T const& /*rhs*/ ) - { - BOOST_MPL_ASSERT_MSG(false, CANT_USE_LOGICAL_OPERATOR_OR_WITHIN_THIS_TESTING_TOOL, () ); - - return *static_cast<ExprType*>(this); - } - - template<typename T> - ExprType& - operator &&( T const& /*rhs*/ ) - { - BOOST_MPL_ASSERT_MSG(false, CANT_USE_LOGICAL_OPERATOR_AND_WITHIN_THIS_TESTING_TOOL, () ); - - return *static_cast<ExprType*>(this); - } - - operator bool() - { - BOOST_MPL_ASSERT_MSG(false, CANT_USE_TERNARY_OPERATOR_WITHIN_THIS_TESTING_TOOL, () ); - - return false; - } -#endif -}; - -// ************************************************************************** // -// ************** assertion::value_expr ************** // -// ************************************************************************** // -// simple value expression - -template<typename T> -class value_expr : public expression_base<value_expr<T>,typename remove_const<typename remove_reference<T>::type>::type> { -public: - // Public types - typedef T result_type; - - // Constructor -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - value_expr( value_expr&& ve ) - : m_value( std::forward<T>(ve.m_value) ) - {} - explicit value_expr( T&& val ) - : m_value( std::forward<T>(val) ) - {} -#else - explicit value_expr( T const& val ) - : m_value( val ) - {} -#endif - - // Specific expression interface - T const& value() const - { - return m_value; - } - void report( std::ostream& ostr ) const - { - ostr << tt_detail::print_helper( value() ); - } - - // Mutating operators -#define ADD_OP_SUPPORT( OPER, ID, _ ) \ - template<typename U> \ - value_expr<T>& \ - operator OPER( U const& rhs ) \ - { \ - m_value OPER rhs; \ - \ - return *this; \ - } \ -/**/ - - BOOST_TEST_FOR_EACH_MUT_OP( ADD_OP_SUPPORT ) -#undef ADD_OP_SUPPORT - - // expression interface - assertion_result evaluate( bool no_message = false ) const - { - assertion_result res( value() ); - if( no_message || res ) - return res; - - format_message( res.message(), value() ); - - return tt_detail::format_assertion_result( "", res.message().str() ); - } - -private: - template<typename U> - static void format_message( wrap_stringstream& ostr, U const& v ) - { - ostr << "['" << tt_detail::print_helper(v) << "' evaluates to false]"; - } - static void format_message( wrap_stringstream& /*ostr*/, bool /*v*/ ) {} - static void format_message( wrap_stringstream& /*ostr*/, assertion_result const& /*v*/ ) {} - - // Data members - T m_value; -}; - -// ************************************************************************** // -// ************** assertion::binary_expr ************** // -// ************************************************************************** // -// binary expression - -template<typename LExpr, typename Rhs, typename OP> -class binary_expr : public expression_base<binary_expr<LExpr,Rhs,OP>,typename OP::result_type> { -public: - // Public types - typedef typename OP::result_type result_type; - - // Constructor -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - binary_expr( binary_expr&& be ) - : m_lhs( std::forward<LExpr>(be.m_lhs) ) - , m_rhs( std::forward<Rhs>(be.m_rhs) ) - {} - binary_expr( LExpr&& lhs, Rhs&& rhs ) - : m_lhs( std::forward<LExpr>(lhs) ) - , m_rhs( std::forward<Rhs>(rhs) ) - {} -#else - binary_expr( LExpr const& lhs, Rhs const& rhs ) - : m_lhs( lhs ) - , m_rhs( rhs ) - {} -#endif - - // Specific expression interface - result_type value() const - { - return OP::eval( m_lhs.value(), m_rhs ); - } - void report( std::ostream& ostr ) const - { - return OP::report( ostr, m_lhs, m_rhs ); - } - - assertion_result evaluate( bool no_message = false ) const - { - assertion_result const expr_res( value() ); - if( no_message || expr_res ) - return expr_res; - - wrap_stringstream buff; - report( buff.stream() ); - - return tt_detail::format_assertion_result( buff.stream().str(), expr_res.message() ); - } - - // To support custom manipulators - LExpr const& lhs() const { return m_lhs; } - Rhs const& rhs() const { return m_rhs; } -private: - // Data members - LExpr m_lhs; - Rhs m_rhs; -}; - -// ************************************************************************** // -// ************** assertion::seed ************** // -// ************************************************************************** // -// seed added ot the input expression to form an assertion expression - -class seed { -public: - // ->* is highest precedence left to right operator - template<typename T> - value_expr<T> -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - operator->*( T&& v ) const - { - return value_expr<T>( std::forward<T>( v ) ); - } -#else - operator->*( T const& v ) const - { - return value_expr<T>( v ); - } -#endif -}; - -#undef BOOST_TEST_FOR_EACH_CONST_OP - -} // namespace assertion -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_ASSERTION_HPP_100911GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/assertion_result.hpp b/src/third_party/boost-1.69.0/boost/test/tools/assertion_result.hpp deleted file mode 100644 index 85eea741f74..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/assertion_result.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// Enhanced result for test predicate that include message explaining failure -// *************************************************************************** - -#ifndef BOOST_TEST_PREDICATE_RESULT_HPP_012705GER -#define BOOST_TEST_PREDICATE_RESULT_HPP_012705GER - -// Boost.Test -#include <boost/test/utils/class_properties.hpp> -#include <boost/test/utils/wrap_stringstream.hpp> -#include <boost/test/utils/basic_cstring/basic_cstring.hpp> - -// Boost -#include <boost/shared_ptr.hpp> -#include <boost/detail/workaround.hpp> - -// STL -#include <cstddef> // for std::size_t - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { - -// ************************************************************************** // -// ************** assertion_result ************** // -// ************************************************************************** // - -//!@brief Type used for storing the result of an assertion. -class BOOST_TEST_DECL assertion_result { - - //!@internal - typedef unit_test::const_string const_string; - - //!@internal - struct dummy { void nonnull() {} }; - - //!@internal - typedef void (dummy::*safe_bool)(); - -public: - // Constructor - assertion_result( bool pv_ ) - : p_predicate_value( pv_ ) - {} - - template<typename BoolConvertable> - assertion_result( BoolConvertable const& pv_ ) : p_predicate_value( !!pv_ ) {} - - // Access methods - bool operator!() const { return !p_predicate_value; } - void operator=( bool pv_ ) { p_predicate_value.value = pv_; } - operator safe_bool() const { return !!p_predicate_value ? &dummy::nonnull : 0; } - - // Public properties - BOOST_READONLY_PROPERTY( bool, (assertion_result) ) p_predicate_value; - - // Access methods - bool has_empty_message() const { return !m_message; } - wrap_stringstream& message() - { - if( !m_message ) - m_message.reset( new wrap_stringstream ); - - return *m_message; - } - const_string message() const { return !m_message ? const_string() : const_string( m_message->str() ); } - -private: - // Data members - shared_ptr<wrap_stringstream> m_message; -}; - -typedef assertion_result predicate_result; - -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_PREDICATE_RESULT_HPP_012705GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/collection_comparison_op.hpp b/src/third_party/boost-1.69.0/boost/test/tools/collection_comparison_op.hpp deleted file mode 100644 index ff3b3761319..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/collection_comparison_op.hpp +++ /dev/null @@ -1,450 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief Collection comparison with enhanced reporting -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_COLLECTION_COMPARISON_OP_HPP_050815GER -#define BOOST_TEST_TOOLS_COLLECTION_COMPARISON_OP_HPP_050815GER - -// Boost.Test -#include <boost/test/tools/assertion.hpp> - -#include <boost/test/utils/is_forward_iterable.hpp> -#include <boost/test/utils/is_cstring.hpp> - -// Boost -#include <boost/mpl/bool.hpp> -#include <boost/mpl/if.hpp> -#include <boost/utility/enable_if.hpp> -#include <boost/type_traits/decay.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { -namespace assertion { - -// ************************************************************************** // -// ************* selectors for specialized comparizon routines ************** // -// ************************************************************************** // - -template<typename T> -struct specialized_compare : public mpl::false_ {}; - -template <typename T> -struct is_c_array : public mpl::false_ {}; - -template<typename T, std::size_t N> -struct is_c_array<T [N]> : public mpl::true_ {}; - -template<typename T, std::size_t N> -struct is_c_array<T (&)[N]> : public mpl::true_ {}; - -#define BOOST_TEST_SPECIALIZED_COLLECTION_COMPARE(Col) \ -namespace boost { namespace test_tools { namespace assertion { \ -template<> \ -struct specialized_compare<Col> : public mpl::true_ {}; \ -}}} \ -/**/ - -// ************************************************************************** // -// ************** lexicographic_compare ************** // -// ************************************************************************** // - -namespace op { - -template <typename OP, bool can_be_equal, bool prefer_shorter, - typename Lhs, typename Rhs> -inline -typename boost::enable_if_c< - unit_test::is_forward_iterable<Lhs>::value && !unit_test::is_cstring<Lhs>::value - && unit_test::is_forward_iterable<Rhs>::value && !unit_test::is_cstring<Rhs>::value, - assertion_result>::type -lexicographic_compare( Lhs const& lhs, Rhs const& rhs ) -{ - assertion_result ar( true ); - - typedef unit_test::bt_iterator_traits<Lhs> t_Lhs_iterator; - typedef unit_test::bt_iterator_traits<Rhs> t_Rhs_iterator; - - typename t_Lhs_iterator::const_iterator first1 = t_Lhs_iterator::begin(lhs); - typename t_Rhs_iterator::const_iterator first2 = t_Rhs_iterator::begin(rhs); - typename t_Lhs_iterator::const_iterator last1 = t_Lhs_iterator::end(lhs); - typename t_Rhs_iterator::const_iterator last2 = t_Rhs_iterator::end(rhs); - std::size_t pos = 0; - - for( ; (first1 != last1) && (first2 != last2); ++first1, ++first2, ++pos ) { - assertion_result const& element_ar = OP::eval(*first1, *first2); - if( !can_be_equal && element_ar ) - return ar; // a < b - - assertion_result const& reverse_ar = OP::eval(*first2, *first1); - if( element_ar && !reverse_ar ) - return ar; // a<=b and !(b<=a) => a < b => return true - - if( element_ar || !reverse_ar ) - continue; // (a<=b and b<=a) or (!(a<b) and !(b<a)) => a == b => keep looking - - // !(a<=b) and b<=a => b < a => return false - ar = false; - ar.message() << "\nFailure at position " << pos << ": " - << tt_detail::print_helper(*first1) - << OP::revert() - << tt_detail::print_helper(*first2) - << ". " << element_ar.message(); - return ar; - } - - if( first1 != last1 ) { - if( prefer_shorter ) { - ar = false; - ar.message() << "\nFirst collection has extra trailing elements."; - } - } - else if( first2 != last2 ) { - if( !prefer_shorter ) { - ar = false; - ar.message() << "\nSecond collection has extra trailing elements."; - } - } - else if( !can_be_equal ) { - ar = false; - ar.message() << "\nCollections appear to be equal."; - } - - return ar; -} - -template <typename OP, bool can_be_equal, bool prefer_shorter, - typename Lhs, typename Rhs> -inline -typename boost::enable_if_c< - (unit_test::is_cstring<Lhs>::value || unit_test::is_cstring<Rhs>::value), - assertion_result>::type -lexicographic_compare( Lhs const& lhs, Rhs const& rhs ) -{ - typedef typename unit_test::deduce_cstring<Lhs>::type lhs_char_type; - typedef typename unit_test::deduce_cstring<Rhs>::type rhs_char_type; - - return lexicographic_compare<OP, can_be_equal, prefer_shorter>( - lhs_char_type(lhs), - rhs_char_type(rhs)); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** equality_compare ************** // -// ************************************************************************** // - -template <typename OP, typename Lhs, typename Rhs> -inline -typename boost::enable_if_c< - unit_test::is_forward_iterable<Lhs>::value && !unit_test::is_cstring<Lhs>::value - && unit_test::is_forward_iterable<Rhs>::value && !unit_test::is_cstring<Rhs>::value, - assertion_result>::type -element_compare( Lhs const& lhs, Rhs const& rhs ) -{ - typedef unit_test::bt_iterator_traits<Lhs> t_Lhs_iterator; - typedef unit_test::bt_iterator_traits<Rhs> t_Rhs_iterator; - - assertion_result ar( true ); - - if( t_Lhs_iterator::size(lhs) != t_Rhs_iterator::size(rhs) ) { - ar = false; - ar.message() << "\nCollections size mismatch: " << t_Lhs_iterator::size(lhs) << " != " << t_Rhs_iterator::size(rhs); - return ar; - } - - typename t_Lhs_iterator::const_iterator left = t_Lhs_iterator::begin(lhs); - typename t_Rhs_iterator::const_iterator right = t_Rhs_iterator::begin(rhs); - std::size_t pos = 0; - - for( ; pos < t_Lhs_iterator::size(lhs); ++left, ++right, ++pos ) { - assertion_result const element_ar = OP::eval( *left, *right ); - if( element_ar ) - continue; - - ar = false; - ar.message() << "\nMismatch at position " << pos << ": " - << tt_detail::print_helper(*left) - << OP::revert() - << tt_detail::print_helper(*right) - << ". " << element_ar.message(); - } - - return ar; -} - -// In case string comparison is branching here -template <typename OP, typename Lhs, typename Rhs> -inline -typename boost::enable_if_c< - (unit_test::is_cstring<Lhs>::value || unit_test::is_cstring<Rhs>::value), - assertion_result>::type -element_compare( Lhs const& lhs, Rhs const& rhs ) -{ - typedef typename unit_test::deduce_cstring<Lhs>::type lhs_char_type; - typedef typename unit_test::deduce_cstring<Rhs>::type rhs_char_type; - - return element_compare<OP>(lhs_char_type(lhs), - rhs_char_type(rhs)); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** non_equality_compare ************** // -// ************************************************************************** // - -template <typename OP, typename Lhs, typename Rhs> -inline assertion_result -non_equality_compare( Lhs const& lhs, Rhs const& rhs ) -{ - typedef unit_test::bt_iterator_traits<Lhs> t_Lhs_iterator; - typedef unit_test::bt_iterator_traits<Rhs> t_Rhs_iterator; - - assertion_result ar( true ); - - if( t_Lhs_iterator::size(lhs) != t_Rhs_iterator::size(rhs) ) - return ar; - - typename t_Lhs_iterator::const_iterator left = t_Lhs_iterator::begin(lhs); - typename t_Rhs_iterator::const_iterator right = t_Rhs_iterator::begin(rhs); - typename t_Lhs_iterator::const_iterator end = t_Lhs_iterator::end(lhs); - - for( ; left != end; ++left, ++right ) { - if( OP::eval( *left, *right ) ) - return ar; - } - - ar = false; - ar.message() << "\nCollections appear to be equal"; - - return ar; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** cctraits ************** // -// ************************************************************************** // -// set of collection comparison traits per comparison OP - -template<typename OP> -struct cctraits; - -template<typename Lhs, typename Rhs> -struct cctraits<op::EQ<Lhs, Rhs> > { - typedef specialized_compare<Lhs> is_specialized; -}; - -template<typename Lhs, typename Rhs> -struct cctraits<op::NE<Lhs, Rhs> > { - typedef specialized_compare<Lhs> is_specialized; -}; - -template<typename Lhs, typename Rhs> -struct cctraits<op::LT<Lhs, Rhs> > { - static const bool can_be_equal = false; - static const bool prefer_short = true; - - typedef specialized_compare<Lhs> is_specialized; -}; - -template<typename Lhs, typename Rhs> -struct cctraits<op::LE<Lhs, Rhs> > { - static const bool can_be_equal = true; - static const bool prefer_short = true; - - typedef specialized_compare<Lhs> is_specialized; -}; - -template<typename Lhs, typename Rhs> -struct cctraits<op::GT<Lhs, Rhs> > { - static const bool can_be_equal = false; - static const bool prefer_short = false; - - typedef specialized_compare<Lhs> is_specialized; -}; - -template<typename Lhs, typename Rhs> -struct cctraits<op::GE<Lhs, Rhs> > { - static const bool can_be_equal = true; - static const bool prefer_short = false; - - typedef specialized_compare<Lhs> is_specialized; -}; - -// ************************************************************************** // -// ************** compare_collections ************** // -// ************************************************************************** // -// Overloaded set of functions dispatching to specific implementation of comparison - -template <typename Lhs, typename Rhs, typename L, typename R> -inline assertion_result -compare_collections( Lhs const& lhs, Rhs const& rhs, boost::type<op::EQ<L, R> >*, mpl::true_ ) -{ - return assertion::op::element_compare<op::EQ<L, R> >( lhs, rhs ); -} - -//____________________________________________________________________________// - -template <typename Lhs, typename Rhs, typename L, typename R> -inline assertion_result -compare_collections( Lhs const& lhs, Rhs const& rhs, boost::type<op::EQ<L, R> >*, mpl::false_ ) -{ - return lhs == rhs; -} - -//____________________________________________________________________________// - -template <typename Lhs, typename Rhs, typename L, typename R> -inline assertion_result -compare_collections( Lhs const& lhs, Rhs const& rhs, boost::type<op::NE<L, R> >*, mpl::true_ ) -{ - return assertion::op::non_equality_compare<op::NE<L, R> >( lhs, rhs ); -} - -//____________________________________________________________________________// - -template <typename Lhs, typename Rhs, typename L, typename R> -inline assertion_result -compare_collections( Lhs const& lhs, Rhs const& rhs, boost::type<op::NE<L, R> >*, mpl::false_ ) -{ - return lhs != rhs; -} - -//____________________________________________________________________________// - -template <typename OP, typename Lhs, typename Rhs> -inline assertion_result -lexicographic_compare( Lhs const& lhs, Rhs const& rhs ) -{ - return assertion::op::lexicographic_compare<OP, cctraits<OP>::can_be_equal, cctraits<OP>::prefer_short>( lhs, rhs ); -} - -//____________________________________________________________________________// - -template <typename Lhs, typename Rhs, typename OP> -inline assertion_result -compare_collections( Lhs const& lhs, Rhs const& rhs, boost::type<OP>*, mpl::true_ ) -{ - return lexicographic_compare<OP>( lhs, rhs ); -} - -//____________________________________________________________________________// - -template <typename Lhs, typename Rhs, typename L, typename R> -inline assertion_result -compare_collections( Lhs const& lhs, Rhs const& rhs, boost::type<op::LT<L, R> >*, mpl::false_ ) -{ - return lhs < rhs; -} - -//____________________________________________________________________________// - -template <typename Lhs, typename Rhs, typename L, typename R> -inline assertion_result -compare_collections( Lhs const& lhs, Rhs const& rhs, boost::type<op::LE<L, R> >*, mpl::false_ ) -{ - return lhs <= rhs; -} - -//____________________________________________________________________________// - -template <typename Lhs, typename Rhs, typename L, typename R> -inline assertion_result -compare_collections( Lhs const& lhs, Rhs const& rhs, boost::type<op::GT<L, R> >*, mpl::false_ ) -{ - return lhs > rhs; -} - -//____________________________________________________________________________// - -template <typename Lhs, typename Rhs, typename L, typename R> -inline assertion_result -compare_collections( Lhs const& lhs, Rhs const& rhs, boost::type<op::GE<L, R> >*, mpl::false_ ) -{ - return lhs >= rhs; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ********* specialization of comparison operators for collections ********* // -// ************************************************************************** // - -#define DEFINE_COLLECTION_COMPARISON( oper, name, rev ) \ -template<typename Lhs,typename Rhs> \ -struct name<Lhs,Rhs,typename boost::enable_if_c< \ - unit_test::is_forward_iterable<Lhs>::value \ - && !unit_test::is_cstring_comparable<Lhs>::value \ - && unit_test::is_forward_iterable<Rhs>::value \ - && !unit_test::is_cstring_comparable<Rhs>::value>::type> { \ -public: \ - typedef assertion_result result_type; \ - typedef unit_test::bt_iterator_traits<Lhs> t_Lhs_iterator_helper; \ - typedef unit_test::bt_iterator_traits<Rhs> t_Rhs_iterator_helper; \ - \ - typedef name<Lhs, Rhs> OP; \ - \ - typedef typename \ - mpl::if_c< \ - mpl::or_< \ - typename is_c_array<Lhs>::type, \ - typename is_c_array<Rhs>::type \ - >::value, \ - mpl::true_, \ - typename \ - mpl::if_c<is_same<typename decay<Lhs>::type, \ - typename decay<Rhs>::type>::value, \ - typename cctraits<OP>::is_specialized, \ - mpl::false_>::type \ - >::type is_specialized; \ - \ - typedef name<typename t_Lhs_iterator_helper::value_type, \ - typename t_Rhs_iterator_helper::value_type \ - > elem_op; \ - \ - static assertion_result \ - eval( Lhs const& lhs, Rhs const& rhs) \ - { \ - return assertion::op::compare_collections( lhs, rhs, \ - (boost::type<elem_op>*)0, \ - is_specialized() ); \ - } \ - \ - template<typename PrevExprType> \ - static void \ - report( std::ostream&, \ - PrevExprType const&, \ - Rhs const& ) {} \ - \ - static char const* revert() \ - { return " " #rev " "; } \ - \ -}; \ -/**/ - -BOOST_TEST_FOR_EACH_COMP_OP( DEFINE_COLLECTION_COMPARISON ) -#undef DEFINE_COLLECTION_COMPARISON - -//____________________________________________________________________________// - -} // namespace op -} // namespace assertion -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_COLLECTION_COMPARISON_OP_HPP_050815GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/context.hpp b/src/third_party/boost-1.69.0/boost/test/tools/context.hpp deleted file mode 100644 index 71650065ef4..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/context.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: 74248 $ -// -// Description : test tools context interfaces -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_CONTEXT_HPP_111712GER -#define BOOST_TEST_TOOLS_CONTEXT_HPP_111712GER - -// Boost.Test -#include <boost/test/utils/lazy_ostream.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { -namespace tt_detail { - -// ************************************************************************** // -// ************** context_frame ************** // -// ************************************************************************** // - -struct BOOST_TEST_DECL context_frame { - explicit context_frame( ::boost::unit_test::lazy_ostream const& context_descr ); - ~context_frame(); - - operator bool(); - -private: - // Data members - int m_frame_id; -}; - -//____________________________________________________________________________// - -#define BOOST_TEST_INFO( context_descr ) \ - ::boost::unit_test::framework::add_context( BOOST_TEST_LAZY_MSG( context_descr ) , false ) \ -/**/ - -//____________________________________________________________________________// - -#define BOOST_TEST_CONTEXT( context_descr ) \ - if( ::boost::test_tools::tt_detail::context_frame BOOST_JOIN( context_frame_, __LINE__ ) = \ - ::boost::test_tools::tt_detail::context_frame( BOOST_TEST_LAZY_MSG( context_descr ) ) ) \ -/**/ - -//____________________________________________________________________________// - -} // namespace tt_detail -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_CONTEXT_HPP_111712GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/cstring_comparison_op.hpp b/src/third_party/boost-1.69.0/boost/test/tools/cstring_comparison_op.hpp deleted file mode 100644 index 50f181d8581..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/cstring_comparison_op.hpp +++ /dev/null @@ -1,88 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief C string comparison with enhanced reporting -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_CSTRING_COMPARISON_OP_HPP_050815GER -#define BOOST_TEST_TOOLS_CSTRING_COMPARISON_OP_HPP_050815GER - -// Boost.Test -#include <boost/test/tools/assertion.hpp> - -#include <boost/test/utils/is_cstring.hpp> -#include <boost/test/utils/basic_cstring/compare.hpp> - -// Boost -#include <boost/utility/enable_if.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { -namespace assertion { -namespace op { - -// ************************************************************************** // -// ************** string_compare ************** // -// ************************************************************************** // - -#define DEFINE_CSTRING_COMPARISON( oper, name, rev ) \ -template<typename Lhs,typename Rhs> \ -struct name<Lhs,Rhs,typename boost::enable_if_c< \ - ( unit_test::is_cstring_comparable<Lhs>::value \ - && unit_test::is_cstring_comparable<Rhs>::value) \ - >::type > \ -{ \ - typedef typename unit_test::deduce_cstring<Lhs>::type lhs_char_type; \ - typedef typename unit_test::deduce_cstring<Rhs>::type rhs_char_type; \ -public: \ - typedef assertion_result result_type; \ - \ - typedef name< \ - typename lhs_char_type::value_type, \ - typename rhs_char_type::value_type> elem_op; \ - \ - static bool \ - eval( Lhs const& lhs, Rhs const& rhs) \ - { \ - return lhs_char_type(lhs) oper rhs_char_type(rhs); \ - } \ - \ - template<typename PrevExprType> \ - static void \ - report( std::ostream& ostr, \ - PrevExprType const& lhs, \ - Rhs const& rhs) \ - { \ - lhs.report( ostr ); \ - ostr << revert() \ - << tt_detail::print_helper( rhs ); \ - } \ - \ - static char const* revert() \ - { return " " #rev " "; } \ -}; \ -/**/ - -BOOST_TEST_FOR_EACH_COMP_OP( DEFINE_CSTRING_COMPARISON ) -#undef DEFINE_CSTRING_COMPARISON - -//____________________________________________________________________________// - -} // namespace op -} // namespace assertion -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_CSTRING_COMPARISON_OP_HPP_050815GER - diff --git a/src/third_party/boost-1.69.0/boost/test/tools/detail/bitwise_manip.hpp b/src/third_party/boost-1.69.0/boost/test/tools/detail/bitwise_manip.hpp deleted file mode 100644 index f8c9685c107..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/detail/bitwise_manip.hpp +++ /dev/null @@ -1,123 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//! @file -//! Bitwise comparison manipulator implementation -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_DETAIL_BITWISE_MANIP_HPP_012705GER -#define BOOST_TEST_TOOLS_DETAIL_BITWISE_MANIP_HPP_012705GER - -// Boost Test -#include <boost/test/tools/detail/fwd.hpp> -#include <boost/test/tools/detail/indirections.hpp> - -#include <boost/test/tools/assertion_result.hpp> -#include <boost/test/tools/assertion.hpp> - -// STL -#include <climits> // for CHAR_BIT - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { - -// ************************************************************************** // -// ************** bitwise comparison manipulator ************** // -// ************************************************************************** // - -//! Bitwise comparison manipulator -struct bitwise {}; - -//____________________________________________________________________________// - -inline int -operator<<( unit_test::lazy_ostream const&, bitwise ) { return 0; } - -//____________________________________________________________________________// - -namespace tt_detail { - -/*!@brief Bitwise comparison of two operands - * - * This class constructs an @ref assertion_result that contains precise bit comparison information. - * In particular the location of the mismatches (if any) are printed in the assertion result. - */ -template<typename Lhs, typename Rhs, typename E> -inline assertion_result -bitwise_compare(Lhs const& lhs, Rhs const& rhs, E const& expr ) -{ - assertion_result pr( true ); - - std::size_t left_bit_size = sizeof(Lhs)*CHAR_BIT; - std::size_t right_bit_size = sizeof(Rhs)*CHAR_BIT; - - static Lhs const leftOne( 1 ); - static Rhs const rightOne( 1 ); - - std::size_t total_bits = left_bit_size < right_bit_size ? left_bit_size : right_bit_size; - - for( std::size_t counter = 0; counter < total_bits; ++counter ) { - if( (lhs & ( leftOne << counter )) != (rhs & (rightOne << counter)) ) { - if( pr ) { - pr.message() << " ["; - expr.report( pr.message().stream() ); - pr.message() << "]. Bitwise comparison failed"; - pr = false; - } - pr.message() << "\nMismatch at position " << counter; - } - } - - if( left_bit_size != right_bit_size ) { - if( pr ) { - pr.message() << " ["; - expr.report( pr.message().stream() ); - pr.message() << "]. Bitwise comparison failed"; - pr = false; - } - pr.message() << "\nOperands bit sizes mismatch: " << left_bit_size << " != " << right_bit_size; - } - - return pr; -} - -//____________________________________________________________________________// - -//! Returns an assertion_result using the bitwise comparison out of an expression -//! -//! This is used as a modifer of the normal operator<< on expressions to use the -//! bitwise comparison. -//! -//! @note Available only for compilers supporting the @c auto declaration. -template<typename T1, typename T2, typename T3, typename T4> -inline assertion_result -operator<<(assertion_evaluate_t<assertion::binary_expr<T1,T2,assertion::op::EQ<T3,T4> > > const& ae, bitwise ) -{ - return bitwise_compare( ae.m_e.lhs().value(), ae.m_e.rhs(), ae.m_e ); -} - -//____________________________________________________________________________// - -inline check_type -operator<<( assertion_type const& , bitwise ) -{ - return CHECK_BUILT_ASSERTION; -} - -//____________________________________________________________________________// - -} // namespace tt_detail -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_DETAIL_BITWISE_MANIP_HPP_012705GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/detail/expression_holder.hpp b/src/third_party/boost-1.69.0/boost/test/tools/detail/expression_holder.hpp deleted file mode 100644 index 694a2d5f4ec..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/detail/expression_holder.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: 74248 $ -// -// Description : toolbox implementation details -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_DETAIL_EXPRESSION_HOLDER_HPP_012705GER -#define BOOST_TEST_TOOLS_DETAIL_EXPRESSION_HOLDER_HPP_012705GER - -#ifdef BOOST_NO_CXX11_AUTO_DECLARATIONS - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { -namespace tt_detail { - -// ************************************************************************** // -// ************** tt_detail::expression_holder ************** // -// ************************************************************************** // - -class expression_holder { -public: - virtual ~expression_holder() {} - virtual assertion_result evaluate( bool no_message = false ) const = 0; -}; - -//____________________________________________________________________________// - -template<typename E> -class expression_holder_t: public expression_holder { -public: - explicit expression_holder_t( E const& e ) : m_expr( e ) {} - -private: - virtual assertion_result evaluate( bool no_message = false ) const { return m_expr.evaluate( no_message ); } - - E m_expr; -}; - -//____________________________________________________________________________// - -template<typename E> -expression_holder_t<E> -hold_expression( E const& e ) -{ - return expression_holder_t<E>( e ); -} - -//____________________________________________________________________________// - -} // namespace tt_detail -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif - -#endif // BOOST_TEST_TOOLS_DETAIL_EXPRESSION_HOLDER_HPP_012705GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/detail/fwd.hpp b/src/third_party/boost-1.69.0/boost/test/tools/detail/fwd.hpp deleted file mode 100644 index 339ab39eda8..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/detail/fwd.hpp +++ /dev/null @@ -1,121 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: 74248 $ -// -// Description : toolbox implementation types and forward declarations -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_DETAIL_FWD_HPP_012705GER -#define BOOST_TEST_TOOLS_DETAIL_FWD_HPP_012705GER - -// Boost.Test -#include <boost/test/detail/config.hpp> -#include <boost/test/utils/basic_cstring/io.hpp> - -// STL -#include <cstddef> // for std::size_t - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -class lazy_ostream; - -} // namespace unit_test - -namespace test_tools { - -using unit_test::const_string; -class assertion_result; - -//____________________________________________________________________________// - -namespace tt_detail { - -inline bool dummy_cond() { return false; } - -// ************************************************************************** // -// ************** types of supported assertions ************** // -// ************************************************************************** // - -//____________________________________________________________________________// - -enum check_type { - CHECK_PRED, - CHECK_MSG, - CHECK_EQUAL, - CHECK_NE, - CHECK_LT, - CHECK_LE, - CHECK_GT, - CHECK_GE, - CHECK_CLOSE, - CHECK_CLOSE_FRACTION, - CHECK_SMALL, - CHECK_BITWISE_EQUAL, - CHECK_PRED_WITH_ARGS, - CHECK_EQUAL_COLL, - CHECK_BUILT_ASSERTION -}; - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** levels of supported assertions ************** // -// ************************************************************************** // - -enum tool_level { - WARN, CHECK, REQUIRE, PASS -}; - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** Tools offline implementation ************** // -// ************************************************************************** // - -BOOST_TEST_DECL bool -report_assertion( assertion_result const& pr, unit_test::lazy_ostream const& assertion_descr, - const_string file_name, std::size_t line_num, - tool_level tl, check_type ct, - std::size_t num_args, ... ); - -//____________________________________________________________________________// - -BOOST_TEST_DECL assertion_result -format_assertion_result( const_string expr_val, const_string details ); - -//____________________________________________________________________________// - -BOOST_TEST_DECL assertion_result -format_fpc_report( const_string expr_val, const_string details ); - -//____________________________________________________________________________// - -BOOST_TEST_DECL bool -is_defined_impl( const_string symbol_name, const_string symbol_value ); - -//____________________________________________________________________________// - -BOOST_TEST_DECL assertion_result -equal_impl( char const* left, char const* right ); - -//____________________________________________________________________________// - -} // namespace tt_detail -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_DETAIL_FWD_HPP_012705GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/detail/indirections.hpp b/src/third_party/boost-1.69.0/boost/test/tools/detail/indirections.hpp deleted file mode 100644 index 836218d98d8..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/detail/indirections.hpp +++ /dev/null @@ -1,94 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: 74248 $ -// -// Description : inidiration interfaces to support manipulators and message output -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_DETAIL_INDIRECTIONS_HPP_112812GER -#define BOOST_TEST_TOOLS_DETAIL_INDIRECTIONS_HPP_112812GER - -// Boost.Test -#include <boost/test/tools/detail/fwd.hpp> - -#include <boost/test/tools/assertion_result.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { -namespace tt_detail { - -// ************************************************************************** // -// ************** assertion_evaluate indirection ************** // -// ************************************************************************** // - -template<typename E> -struct assertion_evaluate_t { - assertion_evaluate_t( E const& e ) : m_e( e ) {} - operator assertion_result() { return m_e.evaluate( true ); } - - E const& m_e; -}; - -//____________________________________________________________________________// - -template<typename E> -inline assertion_evaluate_t<E> -assertion_evaluate( E const& e ) { return assertion_evaluate_t<E>( e ); } - -//____________________________________________________________________________// - -template<typename E, typename T> -inline assertion_evaluate_t<E> -operator<<( assertion_evaluate_t<E> const& ae, T const& ) { return ae; } - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** assertion_text indirection ************** // -// ************************************************************************** // - -template<typename T> -inline unit_test::lazy_ostream const& -assertion_text( unit_test::lazy_ostream const& /*et*/, T const& m ) { return m; } - -//____________________________________________________________________________// - -inline unit_test::lazy_ostream const& -assertion_text( unit_test::lazy_ostream const& et, int ) { return et; } - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** assertion_evaluate indirection ************** // -// ************************************************************************** // - -struct assertion_type { - operator check_type() { return CHECK_MSG; } -}; - -//____________________________________________________________________________// - -template<typename T> -inline assertion_type -operator<<( assertion_type const& at, T const& ) { return at; } - -//____________________________________________________________________________// - -} // namespace tt_detail -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_DETAIL_INDIRECTIONS_HPP_112812GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/detail/it_pair.hpp b/src/third_party/boost-1.69.0/boost/test/tools/detail/it_pair.hpp deleted file mode 100644 index 4352fd464ff..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/detail/it_pair.hpp +++ /dev/null @@ -1,74 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: 74248 $ -// -// Description : support for backward compatible collection comparison interface -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_DETAIL_IT_PAIR_HPP_112812GER -#define BOOST_TEST_TOOLS_DETAIL_IT_PAIR_HPP_112812GER - -#ifdef BOOST_TEST_NO_OLD_TOOLS - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { -namespace tt_detail { - -// ************************************************************************** // -// ************** backward compatibility support ************** // -// ************************************************************************** // - -template<typename It> -struct it_pair { - typedef It const_iterator; - typedef typename std::iterator_traits<It>::value_type value_type; - - it_pair( It const& b, It const& e ) : m_begin( b ), m_size( 0 ) - { - It tmp = b; - while( tmp != e ) { ++m_size; ++tmp; } - } - - It begin() const { return m_begin; } - It end() const { return m_begin + m_size; } - size_t size() const { return m_size; } - -private: - It m_begin; - size_t m_size; -}; - -//____________________________________________________________________________// - -template<typename It> -it_pair<It> -make_it_pair( It const& b, It const& e ) { return it_pair<It>( b, e ); } - -//____________________________________________________________________________// - -template<typename T> -it_pair<T const*> -make_it_pair( T const* b, T const* e ) { return it_pair<T const*>( b, e ); } - -//____________________________________________________________________________// - -} // namespace tt_detail -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_NO_OLD_TOOLS - -#endif // BOOST_TEST_TOOLS_DETAIL_IT_PAIR_HPP_112812GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/detail/lexicographic_manip.hpp b/src/third_party/boost-1.69.0/boost/test/tools/detail/lexicographic_manip.hpp deleted file mode 100644 index f6ffff7a34c..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/detail/lexicographic_manip.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//! @file -//! Lexicographic comparison manipulator implementation -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_DETAIL_LEXICOGRAPHIC_MANIP_HPP_050815GER -#define BOOST_TEST_TOOLS_DETAIL_LEXICOGRAPHIC_MANIP_HPP_050815GER - -// Boost Test -#include <boost/test/tools/detail/fwd.hpp> -#include <boost/test/tools/detail/indirections.hpp> - -#include <boost/test/tools/assertion.hpp> -#include <boost/test/tools/collection_comparison_op.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { - -// ************************************************************************** // -// ************** per element comparison manipulator ************** // -// ************************************************************************** // - -//! Lexicographic comparison manipulator, for containers -struct lexicographic {}; - -//____________________________________________________________________________// - -inline int -operator<<( unit_test::lazy_ostream const&, lexicographic ) { return 0; } - -//____________________________________________________________________________// - -namespace tt_detail { - -template<typename T1, typename T2, typename OP> -inline assertion_result -operator<<(assertion_evaluate_t<assertion::binary_expr<T1,T2,OP> > const& ae, lexicographic ) -{ - typedef typename OP::elem_op elem_op; - return assertion::op::lexicographic_compare<elem_op>( ae.m_e.lhs().value(), ae.m_e.rhs() ); -} - -//____________________________________________________________________________// - -inline check_type -operator<<( assertion_type const&, lexicographic ) -{ - return CHECK_BUILT_ASSERTION; -} - -//____________________________________________________________________________// - -} // namespace tt_detail -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_DETAIL_LEXICOGRAPHIC_MANIP_HPP_050815GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/detail/per_element_manip.hpp b/src/third_party/boost-1.69.0/boost/test/tools/detail/per_element_manip.hpp deleted file mode 100644 index 4a9aebbaaac..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/detail/per_element_manip.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//! @file -//! Per element comparison manipulator implementation -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_DETAIL_PER_ELEMENT_MANIP_HPP_050815GER -#define BOOST_TEST_TOOLS_DETAIL_PER_ELEMENT_MANIP_HPP_050815GER - -// Boost Test -#include <boost/test/tools/detail/fwd.hpp> -#include <boost/test/tools/detail/indirections.hpp> - -#include <boost/test/tools/assertion.hpp> -#include <boost/test/tools/collection_comparison_op.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { - -// ************************************************************************** // -// ************** per element comparison manipulator ************** // -// ************************************************************************** // - -//! Per element comparison manipulator, for containers -struct per_element {}; - -//____________________________________________________________________________// - -inline int -operator<<( unit_test::lazy_ostream const&, per_element ) { return 0; } - -//____________________________________________________________________________// - -namespace tt_detail { - -template<typename T1, typename T2, typename OP> -inline assertion_result -operator<<(assertion_evaluate_t<assertion::binary_expr<T1,T2,OP> > const& ae, per_element ) -{ - typedef typename OP::elem_op elem_op; - return assertion::op::element_compare<elem_op>( ae.m_e.lhs().value(), ae.m_e.rhs() ); -} - -//____________________________________________________________________________// - -inline check_type -operator<<( assertion_type const&, per_element ) -{ - return CHECK_BUILT_ASSERTION; -} - -//____________________________________________________________________________// - -} // namespace tt_detail -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_DETAIL_PER_ELEMENT_MANIP_HPP_050815GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/detail/print_helper.hpp b/src/third_party/boost-1.69.0/boost/test/tools/detail/print_helper.hpp deleted file mode 100644 index 232fad1509b..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/detail/print_helper.hpp +++ /dev/null @@ -1,248 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: 74248 $ -// -// Description : defines level of indiration facilitating workarounds for non printable types -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_IMPL_COMMON_HPP_012705GER -#define BOOST_TEST_TOOLS_IMPL_COMMON_HPP_012705GER - -// Boost.Test -#include <boost/test/detail/config.hpp> -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/detail/workaround.hpp> - -// Boost -#include <boost/mpl/or.hpp> -#include <boost/static_assert.hpp> -#include <boost/type_traits/is_array.hpp> -#include <boost/type_traits/is_function.hpp> -#include <boost/type_traits/is_abstract.hpp> -#include <boost/type_traits/has_left_shift.hpp> - -#include <ios> -#include <iostream> -#include <limits> - -#if !defined(BOOST_NO_CXX11_NULLPTR) -#include <cstddef> -#endif - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { -namespace tt_detail { - -// ************************************************************************** // -// ************** boost_test_print_type ************** // -// ************************************************************************** // - - namespace impl { - template <class T> - std::ostream& boost_test_print_type(std::ostream& ostr, T const& t) { - BOOST_STATIC_ASSERT_MSG( (boost::has_left_shift<std::ostream,T>::value), - "Type has to implement operator<< to be printable"); - ostr << t; - return ostr; - } - - struct boost_test_print_type_impl { - template <class R> - std::ostream& operator()(std::ostream& ostr, R const& r) const { - return boost_test_print_type(ostr, r); - } - }; - } - - // To avoid ODR violations, see N4381 - template <class T> struct static_const { static const T value; }; - template <class T> const T static_const<T>::value = T(); - - namespace { - static const impl::boost_test_print_type_impl& boost_test_print_type = - static_const<impl::boost_test_print_type_impl>::value; - } - - -// ************************************************************************** // -// ************** print_log_value ************** // -// ************************************************************************** // - -template<typename T> -struct print_log_value { - void operator()( std::ostream& ostr, T const& t ) - { - typedef typename mpl::or_<is_array<T>,is_function<T>,is_abstract<T> >::type cant_use_nl; - - std::streamsize old_precision = set_precision( ostr, cant_use_nl() ); - - //ostr << t; - using boost::test_tools::tt_detail::boost_test_print_type; - boost_test_print_type(ostr, t); - - if( old_precision != (std::streamsize)-1 ) - ostr.precision( old_precision ); - } - - std::streamsize set_precision( std::ostream& ostr, mpl::false_ ) - { - if( std::numeric_limits<T>::is_specialized && std::numeric_limits<T>::radix == 2 ) - return ostr.precision( 2 + std::numeric_limits<T>::digits * 301/1000 ); - else if ( std::numeric_limits<T>::is_specialized && std::numeric_limits<T>::radix == 10 ) { -#ifdef BOOST_NO_CXX11_NUMERIC_LIMITS - // (was BOOST_NO_NUMERIC_LIMITS_LOWEST but now deprecated). - // No support for std::numeric_limits<double>::max_digits10, - // so guess that a couple of guard digits more than digits10 will display any difference. - return ostr.precision( 2 + std::numeric_limits<T>::digits10 ); -#else - // std::numeric_limits<double>::max_digits10; IS supported. - // Any noisy or guard digits needed to display any difference are included in max_digits10. - return ostr.precision( std::numeric_limits<T>::max_digits10 ); -#endif - } - // else if T is not specialized for std::numeric_limits<>, - // then will just get the default precision of 6 digits. - return (std::streamsize)-1; - } - - std::streamsize set_precision( std::ostream&, mpl::true_ ) { return (std::streamsize)-1; } -}; - -//____________________________________________________________________________// - -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) -template<typename T, std::size_t N > -struct print_log_value< T[N] > { - void operator()( std::ostream& ostr, T const* t ) - { - ostr << t; - } -}; -#endif - -//____________________________________________________________________________// - -template<> -struct BOOST_TEST_DECL print_log_value<bool> { - void operator()( std::ostream& ostr, bool t ); -}; - -//____________________________________________________________________________// - -template<> -struct BOOST_TEST_DECL print_log_value<char> { - void operator()( std::ostream& ostr, char t ); -}; - -//____________________________________________________________________________// - -template<> -struct BOOST_TEST_DECL print_log_value<unsigned char> { - void operator()( std::ostream& ostr, unsigned char t ); -}; - -//____________________________________________________________________________// - -template<> -struct BOOST_TEST_DECL print_log_value<char const*> { - void operator()( std::ostream& ostr, char const* t ); -}; - -//____________________________________________________________________________// - -template<> -struct BOOST_TEST_DECL print_log_value<wchar_t const*> { - void operator()( std::ostream& ostr, wchar_t const* t ); -}; - -#if !defined(BOOST_NO_CXX11_NULLPTR) -template<> -struct print_log_value<std::nullptr_t> { - // declaration and definition is here because of #12969 https://svn.boost.org/trac10/ticket/12969 - void operator()( std::ostream& ostr, std::nullptr_t /*t*/ ) { - ostr << "nullptr"; - } -}; -#endif - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** print_helper ************** // -// ************************************************************************** // -// Adds level of indirection to the output operation, allowing us to customize -// it for types that do not support operator << directly or for any other reason - -template<typename T> -struct print_helper_t { - explicit print_helper_t( T const& t ) : m_t( t ) {} - - T const& m_t; -}; - -//____________________________________________________________________________// - -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) -// Borland suffers premature pointer decay passing arrays by reference -template<typename T, std::size_t N > -struct print_helper_t< T[N] > { - explicit print_helper_t( T const * t ) : m_t( t ) {} - - T const * m_t; -}; -#endif - -//____________________________________________________________________________// - -template<typename T> -inline print_helper_t<T> -print_helper( T const& t ) -{ - return print_helper_t<T>( t ); -} - -//____________________________________________________________________________// - -template<typename T> -inline std::ostream& -operator<<( std::ostream& ostr, print_helper_t<T> const& ph ) -{ - print_log_value<T>()( ostr, ph.m_t ); - - return ostr; -} - -//____________________________________________________________________________// - -} // namespace tt_detail - -// ************************************************************************** // -// ************** BOOST_TEST_DONT_PRINT_LOG_VALUE ************** // -// ************************************************************************** // - -#define BOOST_TEST_DONT_PRINT_LOG_VALUE( the_type ) \ -namespace boost{ namespace test_tools{ namespace tt_detail{ \ -template<> \ -struct print_log_value<the_type > { \ - void operator()( std::ostream&, the_type const& ) {} \ -}; \ -}}} \ -/**/ - -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_IMPL_COMMON_HPP_012705GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/detail/tolerance_manip.hpp b/src/third_party/boost-1.69.0/boost/test/tools/detail/tolerance_manip.hpp deleted file mode 100644 index e07b0435913..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/detail/tolerance_manip.hpp +++ /dev/null @@ -1,130 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//! @file -//! @brief Floating point comparison tolerance manipulators -//! -//! This file defines several manipulators for floating point comparison. These -//! manipulators are intended to be used with BOOST_TEST. -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_DETAIL_TOLERANCE_MANIP_HPP_012705GER -#define BOOST_TEST_TOOLS_DETAIL_TOLERANCE_MANIP_HPP_012705GER - -// Boost Test -#include <boost/test/tools/detail/fwd.hpp> -#include <boost/test/tools/detail/indirections.hpp> - -#include <boost/test/tools/fpc_tolerance.hpp> -#include <boost/test/tools/floating_point_comparison.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { -namespace tt_detail { - -// ************************************************************************** // -// ************** fpc tolerance manipulator ************** // -// ************************************************************************** // - -template<typename FPT> -struct tolerance_manip { - explicit tolerance_manip( FPT const & tol ) : m_value( tol ) {} - - FPT m_value; -}; - -//____________________________________________________________________________// - -struct tolerance_manip_delay {}; - -template<typename FPT> -inline tolerance_manip<FPT> -operator%( FPT v, tolerance_manip_delay const& ) -{ - BOOST_STATIC_ASSERT_MSG( (fpc::tolerance_based<FPT>::value), - "tolerance should be specified using a floating points type" ); - - return tolerance_manip<FPT>( FPT(v / 100) ); -} - -//____________________________________________________________________________// - -template<typename E, typename FPT> -inline assertion_result -operator<<(assertion_evaluate_t<E> const& ae, tolerance_manip<FPT> const& tol) -{ - local_fpc_tolerance<FPT> lt( tol.m_value ); - - return ae.m_e.evaluate(); -} - -//____________________________________________________________________________// - -template<typename FPT> -inline int -operator<<( unit_test::lazy_ostream const&, tolerance_manip<FPT> const& ) { return 0; } - -//____________________________________________________________________________// - -template<typename FPT> -inline check_type -operator<<( assertion_type const& /*at*/, tolerance_manip<FPT> const& ) { return CHECK_BUILT_ASSERTION; } - -//____________________________________________________________________________// - -} // namespace tt_detail - - -/*! Tolerance manipulator - * - * These functions return a manipulator that can be used in conjunction with BOOST_TEST - * in order to specify the tolerance with which floating point comparisons are made. - */ -template<typename FPT> -inline tt_detail::tolerance_manip<FPT> -tolerance( FPT v ) -{ - BOOST_STATIC_ASSERT_MSG( (fpc::tolerance_based<FPT>::value), - "tolerance only for floating points" ); - - return tt_detail::tolerance_manip<FPT>( v ); -} - -//____________________________________________________________________________// - -//! @overload tolerance( FPT v ) -template<typename FPT> -inline tt_detail::tolerance_manip<FPT> -tolerance( fpc::percent_tolerance_t<FPT> v ) -{ - BOOST_STATIC_ASSERT_MSG( (fpc::tolerance_based<FPT>::value), - "tolerance only for floating points" ); - - return tt_detail::tolerance_manip<FPT>( static_cast<FPT>(v.m_value / 100) ); -} - -//____________________________________________________________________________// - -//! @overload tolerance( FPT v ) -inline tt_detail::tolerance_manip_delay -tolerance() -{ - return tt_detail::tolerance_manip_delay(); -} - -//____________________________________________________________________________// - -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_DETAIL_TOLERANCE_MANIP_HPP_012705GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/floating_point_comparison.hpp b/src/third_party/boost-1.69.0/boost/test/tools/floating_point_comparison.hpp deleted file mode 100644 index 810840e3459..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/floating_point_comparison.hpp +++ /dev/null @@ -1,317 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief algorithms for comparing floating point values -// *************************************************************************** - -#ifndef BOOST_TEST_FLOATING_POINT_COMPARISON_HPP_071894GER -#define BOOST_TEST_FLOATING_POINT_COMPARISON_HPP_071894GER - -// Boost.Test -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/tools/assertion_result.hpp> - -// Boost -#include <boost/limits.hpp> // for std::numeric_limits -#include <boost/static_assert.hpp> -#include <boost/assert.hpp> -#include <boost/mpl/bool.hpp> -#include <boost/type_traits/is_floating_point.hpp> -#include <boost/type_traits/is_array.hpp> -#include <boost/type_traits/conditional.hpp> -#include <boost/utility/enable_if.hpp> - -// STL -#include <iosfwd> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace math { -namespace fpc { - -// ************************************************************************** // -// ************** fpc::tolerance_based ************** // -// ************************************************************************** // - - -//! @internal -//! Protects the instanciation of std::numeric_limits from non-supported types (eg. T=array) -template <typename T, bool enabled> -struct tolerance_based_delegate; - -template <typename T> -struct tolerance_based_delegate<T, false> : mpl::false_ {}; - -template <typename T> -struct tolerance_based_delegate<T, true> -: mpl::bool_< - is_floating_point<T>::value || - (!std::numeric_limits<T>::is_integer && std::numeric_limits<T>::is_specialized && !std::numeric_limits<T>::is_exact)> -{}; - - -/*!@brief Indicates if a type can be compared using a tolerance scheme - * - * This is a metafunction that should evaluate to @c mpl::true_ if the type - * @c T can be compared using a tolerance based method, typically for floating point - * types. - * - * This metafunction can be specialized further to declare user types that are - * floating point (eg. boost.multiprecision). - */ -template <typename T> -struct tolerance_based : tolerance_based_delegate<T, !is_array<T>::value >::type {}; - -// ************************************************************************** // -// ************** fpc::strength ************** // -// ************************************************************************** // - -//! Method for comparing floating point numbers -enum strength { - FPC_STRONG, //!< "Very close" - equation 2' in docs, the default - FPC_WEAK //!< "Close enough" - equation 3' in docs. -}; - - -// ************************************************************************** // -// ************** tolerance presentation types ************** // -// ************************************************************************** // - -template<typename FPT> -struct percent_tolerance_t { - explicit percent_tolerance_t( FPT v ) : m_value( v ) {} - - FPT m_value; -}; - -//____________________________________________________________________________// - -template<typename FPT> -inline std::ostream& operator<<( std::ostream& out, percent_tolerance_t<FPT> t ) -{ - return out << t.m_value; -} - -//____________________________________________________________________________// - -template<typename FPT> -inline percent_tolerance_t<FPT> -percent_tolerance( FPT v ) -{ - return percent_tolerance_t<FPT>( v ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** details ************** // -// ************************************************************************** // - -namespace fpc_detail { - -// FPT is Floating-Point Type: float, double, long double or User-Defined. -template<typename FPT> -inline FPT -fpt_abs( FPT fpv ) -{ - return fpv < static_cast<FPT>(0) ? -fpv : fpv; -} - -//____________________________________________________________________________// - -template<typename FPT> -struct fpt_specialized_limits -{ - static FPT min_value() { return (std::numeric_limits<FPT>::min)(); } - static FPT max_value() { return (std::numeric_limits<FPT>::max)(); } -}; - -template<typename FPT> -struct fpt_non_specialized_limits -{ - static FPT min_value() { return static_cast<FPT>(0); } - static FPT max_value() { return static_cast<FPT>(1000000); } // for our purposes it doesn't really matter what value is returned here -}; - -template<typename FPT> -struct fpt_limits : boost::conditional<std::numeric_limits<FPT>::is_specialized, - fpt_specialized_limits<FPT>, - fpt_non_specialized_limits<FPT> - >::type -{}; - -//____________________________________________________________________________// - -// both f1 and f2 are unsigned here -template<typename FPT> -inline FPT -safe_fpt_division( FPT f1, FPT f2 ) -{ - // Avoid overflow. - if( (f2 < static_cast<FPT>(1)) && (f1 > f2*fpt_limits<FPT>::max_value()) ) - return fpt_limits<FPT>::max_value(); - - // Avoid underflow. - if( (f1 == static_cast<FPT>(0)) || - ((f2 > static_cast<FPT>(1)) && (f1 < f2*fpt_limits<FPT>::min_value())) ) - return static_cast<FPT>(0); - - return f1/f2; -} - -//____________________________________________________________________________// - -template<typename FPT, typename ToleranceType> -inline FPT -fraction_tolerance( ToleranceType tolerance ) -{ - return static_cast<FPT>(tolerance); -} - -//____________________________________________________________________________// - -template<typename FPT2, typename FPT> -inline FPT2 -fraction_tolerance( percent_tolerance_t<FPT> tolerance ) -{ - return FPT2(tolerance.m_value)*FPT2(0.01); -} - -//____________________________________________________________________________// - -} // namespace fpc_detail - -// ************************************************************************** // -// ************** close_at_tolerance ************** // -// ************************************************************************** // - - -/*!@brief Predicate for comparing floating point numbers - * - * This predicate is used to compare floating point numbers. In addition the comparison produces maximum - * related difference, which can be used to generate detailed error message - * The methods for comparing floating points are detailed in the documentation. The method is chosen - * by the @ref boost::math::fpc::strength given at construction. - * - * This predicate is not suitable for comparing to 0 or to infinity. - */ -template<typename FPT> -class close_at_tolerance { -public: - // Public typedefs - typedef bool result_type; - - // Constructor - template<typename ToleranceType> - explicit close_at_tolerance( ToleranceType tolerance, fpc::strength fpc_strength = FPC_STRONG ) - : m_fraction_tolerance( fpc_detail::fraction_tolerance<FPT>( tolerance ) ) - , m_strength( fpc_strength ) - , m_tested_rel_diff( 0 ) - { - BOOST_ASSERT_MSG( m_fraction_tolerance >= FPT(0), "tolerance must not be negative!" ); // no reason for tolerance to be negative - } - - // Access methods - //! Returns the tolerance - FPT fraction_tolerance() const { return m_fraction_tolerance; } - - //! Returns the comparison method - fpc::strength strength() const { return m_strength; } - - //! Returns the failing fraction - FPT tested_rel_diff() const { return m_tested_rel_diff; } - - /*! Compares two floating point numbers a and b such that their "left" relative difference |a-b|/a and/or - * "right" relative difference |a-b|/b does not exceed specified relative (fraction) tolerance. - * - * @param[in] left first floating point number to be compared - * @param[in] right second floating point number to be compared - * - * What is reported by @c tested_rel_diff in case of failure depends on the comparison method: - * - for @c FPC_STRONG: the max of the two fractions - * - for @c FPC_WEAK: the min of the two fractions - * The rationale behind is to report the tolerance to set in order to make a test pass. - */ - bool operator()( FPT left, FPT right ) const - { - FPT diff = fpc_detail::fpt_abs<FPT>( left - right ); - FPT fraction_of_right = fpc_detail::safe_fpt_division( diff, fpc_detail::fpt_abs( right ) ); - FPT fraction_of_left = fpc_detail::safe_fpt_division( diff, fpc_detail::fpt_abs( left ) ); - - FPT max_rel_diff = (std::max)( fraction_of_left, fraction_of_right ); - FPT min_rel_diff = (std::min)( fraction_of_left, fraction_of_right ); - - m_tested_rel_diff = m_strength == FPC_STRONG ? max_rel_diff : min_rel_diff; - - return m_tested_rel_diff <= m_fraction_tolerance; - } - -private: - // Data members - FPT m_fraction_tolerance; - fpc::strength m_strength; - mutable FPT m_tested_rel_diff; -}; - -// ************************************************************************** // -// ************** small_with_tolerance ************** // -// ************************************************************************** // - - -/*!@brief Predicate for comparing floating point numbers against 0 - * - * Serves the same purpose as boost::math::fpc::close_at_tolerance, but used when one - * of the operand is null. - */ -template<typename FPT> -class small_with_tolerance { -public: - // Public typedefs - typedef bool result_type; - - // Constructor - explicit small_with_tolerance( FPT tolerance ) // <= absolute tolerance - : m_tolerance( tolerance ) - { - BOOST_ASSERT( m_tolerance >= FPT(0) ); // no reason for the tolerance to be negative - } - - // Action method - bool operator()( FPT fpv ) const - { - return fpc::fpc_detail::fpt_abs( fpv ) <= m_tolerance; - } - -private: - // Data members - FPT m_tolerance; -}; - -// ************************************************************************** // -// ************** is_small ************** // -// ************************************************************************** // - -template<typename FPT> -inline bool -is_small( FPT fpv, FPT tolerance ) -{ - return small_with_tolerance<FPT>( tolerance )( fpv ); -} - -//____________________________________________________________________________// - -} // namespace fpc -} // namespace math -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_FLOATING_POINT_COMAPARISON_HPP_071894GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/fpc_op.hpp b/src/third_party/boost-1.69.0/boost/test/tools/fpc_op.hpp deleted file mode 100644 index c84820bdba0..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/fpc_op.hpp +++ /dev/null @@ -1,214 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief Floating point comparison with enhanced reporting -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_FPC_OP_HPP_050915GER -#define BOOST_TEST_TOOLS_FPC_OP_HPP_050915GER - -// Boost.Test -#include <boost/test/tools/assertion.hpp> - -#include <boost/test/tools/floating_point_comparison.hpp> -#include <boost/test/tools/fpc_tolerance.hpp> - -// Boost -#include <boost/type_traits/common_type.hpp> -#include <boost/utility/enable_if.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { -namespace assertion { -namespace op { - -// ************************************************************************** // -// ************** fpctraits ************** // -// ************************************************************************** // -// set of floating point comparison traits per comparison OP - -template<typename OP> -struct fpctraits { - // indicate if we should perform the operation with a "logical OR" - // with the "equality under tolerance". - static const bool equality_logical_disjunction = true; -}; - -template <typename Lhs, typename Rhs> -struct fpctraits<op::LT<Lhs,Rhs> > { - static const bool equality_logical_disjunction = false; -}; - -template <typename Lhs, typename Rhs> -struct fpctraits<op::GT<Lhs,Rhs> > { - static const bool equality_logical_disjunction = false; -}; - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** set of overloads to select correct fpc algo ************** // -// ************************************************************************** // -// we really only care about EQ vs NE. All other comparisons use direct first -// and then need EQ. For example a <= b (tolerance t) IFF a <= b OR a == b (tolerance t) - -template <typename FPT, typename Lhs, typename Rhs, typename OP> -inline assertion_result -compare_fpv( Lhs const& lhs, Rhs const& rhs, OP* cmp_operator) -{ - bool result = cmp_operator->eval_direct(lhs, rhs); - if(fpctraits<OP>::equality_logical_disjunction) { - return result || compare_fpv<FPT>(lhs, rhs, (op::EQ<Lhs, Rhs>*)0); - } - return result && compare_fpv<FPT>(lhs, rhs, (op::NE<Lhs, Rhs>*)0); -} - -//____________________________________________________________________________// - -template <typename FPT, typename Lhs, typename Rhs> -inline assertion_result -compare_fpv_near_zero( FPT const& fpv, op::EQ<Lhs,Rhs>* ) -{ - fpc::small_with_tolerance<FPT> P( fpc_tolerance<FPT>() ); - - assertion_result ar( P( fpv ) ); - if( !ar ) - ar.message() << "Absolute value exceeds tolerance [|" << fpv << "| > "<< fpc_tolerance<FPT>() << ']'; - - return ar; -} - -//____________________________________________________________________________// - -template <typename FPT, typename Lhs, typename Rhs> -inline assertion_result -compare_fpv_near_zero( FPT const& fpv, op::NE<Lhs,Rhs>* ) -{ - fpc::small_with_tolerance<FPT> P( fpc_tolerance<FPT>() ); - - assertion_result ar( !P( fpv ) ); - if( !ar ) - ar.message() << "Absolute value is within tolerance [|" << fpv << "| < "<< fpc_tolerance<FPT>() << ']'; - return ar; -} - -//____________________________________________________________________________// - -template <typename FPT, typename Lhs, typename Rhs> -inline assertion_result -compare_fpv( Lhs const& lhs, Rhs const& rhs, op::EQ<Lhs,Rhs>* ) -{ - if( lhs == 0 ) { - return compare_fpv_near_zero( rhs, (op::EQ<Lhs,Rhs>*)0 ); - } - else if( rhs == 0) { - return compare_fpv_near_zero( lhs, (op::EQ<Lhs,Rhs>*)0 ); - } - else { - fpc::close_at_tolerance<FPT> P( fpc_tolerance<FPT>(), fpc::FPC_STRONG ); - - assertion_result ar( P( lhs, rhs ) ); - if( !ar ) - ar.message() << "Relative difference exceeds tolerance [" - << P.tested_rel_diff() << " > " << P.fraction_tolerance() << ']'; - return ar; - } -} - -//____________________________________________________________________________// - -template <typename FPT, typename Lhs, typename Rhs> -inline assertion_result -compare_fpv( Lhs const& lhs, Rhs const& rhs, op::NE<Lhs,Rhs>* ) -{ - if( lhs == 0 ) { - return compare_fpv_near_zero( rhs, (op::NE<Lhs,Rhs>*)0 ); - } - else if( rhs == 0 ) { - return compare_fpv_near_zero( lhs, (op::NE<Lhs,Rhs>*)0 ); - } - else { - fpc::close_at_tolerance<FPT> P( fpc_tolerance<FPT>(), fpc::FPC_WEAK ); - - assertion_result ar( !P( lhs, rhs ) ); - if( !ar ) - ar.message() << "Relative difference is within tolerance [" - << P.tested_rel_diff() << " < " << fpc_tolerance<FPT>() << ']'; - - return ar; - } -} - -//____________________________________________________________________________// - -#define DEFINE_FPV_COMPARISON( oper, name, rev ) \ -template<typename Lhs,typename Rhs> \ -struct name<Lhs,Rhs,typename boost::enable_if_c< \ - (fpc::tolerance_based<Lhs>::value && \ - fpc::tolerance_based<Rhs>::value)>::type> { \ -public: \ - typedef typename common_type<Lhs,Rhs>::type FPT; \ - typedef name<Lhs,Rhs> OP; \ - \ - typedef assertion_result result_type; \ - \ - static bool \ - eval_direct( Lhs const& lhs, Rhs const& rhs ) \ - { \ - return lhs oper rhs; \ - } \ - \ - static assertion_result \ - eval( Lhs const& lhs, Rhs const& rhs ) \ - { \ - if( fpc_tolerance<FPT>() == FPT(0) \ - || (std::numeric_limits<Lhs>::has_infinity \ - && (lhs == std::numeric_limits<Lhs>::infinity())) \ - || (std::numeric_limits<Rhs>::has_infinity \ - && (rhs == std::numeric_limits<Rhs>::infinity()))) \ - { \ - return eval_direct( lhs, rhs ); \ - } \ - \ - return compare_fpv<FPT>( lhs, rhs, (OP*)0 ); \ - } \ - \ - template<typename PrevExprType> \ - static void \ - report( std::ostream& ostr, \ - PrevExprType const& lhs, \ - Rhs const& rhs ) \ - { \ - lhs.report( ostr ); \ - ostr << revert() \ - << tt_detail::print_helper( rhs ); \ - } \ - \ - static char const* revert() \ - { return " " #rev " "; } \ -}; \ -/**/ - -BOOST_TEST_FOR_EACH_COMP_OP( DEFINE_FPV_COMPARISON ) -#undef DEFINE_FPV_COMPARISON - -//____________________________________________________________________________// - -} // namespace op -} // namespace assertion -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_FPC_OP_HPP_050915GER - diff --git a/src/third_party/boost-1.69.0/boost/test/tools/fpc_tolerance.hpp b/src/third_party/boost-1.69.0/boost/test/tools/fpc_tolerance.hpp deleted file mode 100644 index c862a17e75a..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/fpc_tolerance.hpp +++ /dev/null @@ -1,103 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: 74248 $ -// -// Description : FPC tools tolerance holder -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_FPC_TOLERANCE_HPP_121612GER -#define BOOST_TEST_TOOLS_FPC_TOLERANCE_HPP_121612GER - -// Boost Test -#include <boost/test/tree/decorator.hpp> -#include <boost/test/tools/floating_point_comparison.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { - -namespace fpc = math::fpc; - -// ************************************************************************** // -// ************** floating point comparison tolerance ************** // -// ************************************************************************** // - -template<typename FPT> -inline FPT& -fpc_tolerance() -{ - static FPT s_value = 0; - return s_value; -} - -//____________________________________________________________________________// - -template<typename FPT> -struct local_fpc_tolerance { - local_fpc_tolerance( FPT fraction_tolerance ) : m_old_tolerance( fpc_tolerance<FPT>() ) - { - fpc_tolerance<FPT>() = fraction_tolerance; - } - - ~local_fpc_tolerance() - { - if( m_old_tolerance != (FPT)-1 ) - fpc_tolerance<FPT>() = m_old_tolerance; - } - -private: - // Data members - FPT m_old_tolerance; -}; - -//____________________________________________________________________________// - -} // namespace test_tools - -// ************************************************************************** // -// ************** decorator::tolerance ************** // -// ************************************************************************** // - -namespace unit_test { -namespace decorator { - -template<typename FPT> -inline fixture_t -tolerance( FPT v ) -{ - return fixture_t( test_unit_fixture_ptr( - new unit_test::class_based_fixture<test_tools::local_fpc_tolerance<FPT>,FPT>( v ) ) ); -} - -//____________________________________________________________________________// - -template<typename FPT> -inline fixture_t -tolerance( test_tools::fpc::percent_tolerance_t<FPT> v ) -{ - return fixture_t( test_unit_fixture_ptr( - new unit_test::class_based_fixture<test_tools::local_fpc_tolerance<FPT>,FPT>( boost::math::fpc::fpc_detail::fraction_tolerance<FPT>( v ) ) ) ); -} - -//____________________________________________________________________________// - -} // namespace decorator - -using decorator::tolerance; - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_FPC_TOLERANCE_HPP_121612GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/interface.hpp b/src/third_party/boost-1.69.0/boost/test/tools/interface.hpp deleted file mode 100644 index 5e84f1c6d4e..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/interface.hpp +++ /dev/null @@ -1,369 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: 81247 $ -// -// Description : contains definition for all test tools in test toolbox -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_INTERFACE_HPP_111712GER -#define BOOST_TEST_TOOLS_INTERFACE_HPP_111712GER - -// Boost.Test -#include <boost/test/unit_test_log.hpp> -#ifdef BOOST_TEST_TOOLS_DEBUGGABLE -#include <boost/test/debug.hpp> -#endif -#ifdef BOOST_NO_CXX11_AUTO_DECLARATIONS -#include <boost/test/tools/detail/expression_holder.hpp> -#endif - -#include <boost/test/detail/pp_variadic.hpp> - -#ifdef BOOST_TEST_NO_OLD_TOOLS -#include <boost/preprocessor/seq/to_tuple.hpp> - -#include <iterator> -#endif // BOOST_TEST_NO_OLD_TOOLS - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** BOOST_TEST_<level> ************** // -// ************************************************************************** // - -#define BOOST_TEST_BUILD_ASSERTION( P ) \ - (::boost::test_tools::assertion::seed()->*P) \ -/**/ - -//____________________________________________________________________________// - -// Implementation based on direct predicate evaluation -#define BOOST_TEST_TOOL_DIRECT_IMPL( P, level, M ) \ -do { \ - ::boost::test_tools::assertion_result res = (P); \ - report_assertion( \ - res, \ - BOOST_TEST_LAZY_MSG( M ), \ - BOOST_TEST_L(__FILE__), \ - static_cast<std::size_t>(__LINE__), \ - ::boost::test_tools::tt_detail::level, \ - ::boost::test_tools::tt_detail::CHECK_MSG, \ - 0 ); \ -} while( ::boost::test_tools::tt_detail::dummy_cond() ) \ -/**/ - -//____________________________________________________________________________// - -// Implementation based on expression template construction -#define BOOST_TEST_TOOL_ET_IMPL( P, level ) \ -do { \ - BOOST_TEST_PASSPOINT(); \ - \ - ::boost::test_tools::tt_detail:: \ - report_assertion( \ - BOOST_TEST_BUILD_ASSERTION( P ).evaluate(), \ - BOOST_TEST_LAZY_MSG( BOOST_TEST_STRINGIZE( P ) ), \ - BOOST_TEST_L(__FILE__), \ - static_cast<std::size_t>(__LINE__), \ - ::boost::test_tools::tt_detail::level, \ - ::boost::test_tools::tt_detail::CHECK_BUILT_ASSERTION, \ - 0 ); \ -} while( ::boost::test_tools::tt_detail::dummy_cond() ) \ -/**/ - -//____________________________________________________________________________// - -// Implementation based on expression template construction with extra tool arguments -#define BOOST_TEST_TOOL_ET_IMPL_EX( P, level, arg ) \ -do { \ - BOOST_TEST_PASSPOINT(); \ - \ - ::boost::test_tools::tt_detail:: \ - report_assertion( \ - ::boost::test_tools::tt_detail::assertion_evaluate( \ - BOOST_TEST_BUILD_ASSERTION( P ) ) \ - << arg, \ - ::boost::test_tools::tt_detail::assertion_text( \ - BOOST_TEST_LAZY_MSG( BOOST_TEST_STRINGIZE(P) ), \ - BOOST_TEST_LAZY_MSG( arg ) ), \ - BOOST_TEST_L(__FILE__), \ - static_cast<std::size_t>(__LINE__), \ - ::boost::test_tools::tt_detail::level, \ - ::boost::test_tools::tt_detail::assertion_type() \ - << arg, \ - 0 ); \ -} while( ::boost::test_tools::tt_detail::dummy_cond() ) \ -/**/ - -//____________________________________________________________________________// - -#ifdef BOOST_TEST_TOOLS_UNDER_DEBUGGER - -#define BOOST_TEST_TOOL_UNIV( level, P ) \ - BOOST_TEST_TOOL_DIRECT_IMPL( P, level, BOOST_TEST_STRINGIZE( P ) ) \ -/**/ - -#define BOOST_TEST_TOOL_UNIV_EX( level, P, ... ) \ - BOOST_TEST_TOOL_UNIV( level, P ) \ -/**/ - -#elif defined(BOOST_TEST_TOOLS_DEBUGGABLE) - -#define BOOST_TEST_TOOL_UNIV( level, P ) \ -do { \ - if( ::boost::debug::under_debugger() ) \ - BOOST_TEST_TOOL_DIRECT_IMPL( P, level, BOOST_TEST_STRINGIZE( P ) ); \ - else \ - BOOST_TEST_TOOL_ET_IMPL( P, level ); \ -} while( ::boost::test_tools::tt_detail::dummy_cond() ) \ -/**/ - -#define BOOST_TEST_TOOL_UNIV_EX( level, P, ... ) \ - BOOST_TEST_TOOL_UNIV( level, P ) \ -/**/ - -#else - -#define BOOST_TEST_TOOL_UNIV( level, P ) \ - BOOST_TEST_TOOL_ET_IMPL( P, level ) \ -/**/ - -#define BOOST_TEST_TOOL_UNIV_EX( level, P, ... ) \ - BOOST_TEST_TOOL_ET_IMPL_EX( P, level, __VA_ARGS__ ) \ -/**/ - -#endif - -//____________________________________________________________________________// - -#define BOOST_TEST_WARN( ... ) BOOST_TEST_INVOKE_IF_N_ARGS( \ - 2, BOOST_TEST_TOOL_UNIV, BOOST_TEST_TOOL_UNIV_EX, WARN, __VA_ARGS__ ) \ -/**/ -#define BOOST_TEST_CHECK( ... ) BOOST_TEST_INVOKE_IF_N_ARGS( \ - 2, BOOST_TEST_TOOL_UNIV, BOOST_TEST_TOOL_UNIV_EX, CHECK, __VA_ARGS__ ) \ -/**/ -#define BOOST_TEST_REQUIRE( ... ) BOOST_TEST_INVOKE_IF_N_ARGS( \ - 2, BOOST_TEST_TOOL_UNIV, BOOST_TEST_TOOL_UNIV_EX, REQUIRE, __VA_ARGS__ )\ -/**/ - -#define BOOST_TEST( ... ) BOOST_TEST_INVOKE_IF_N_ARGS( \ - 2, BOOST_TEST_TOOL_UNIV, BOOST_TEST_TOOL_UNIV_EX, CHECK, __VA_ARGS__ ) \ -/**/ - -//____________________________________________________________________________// - -#define BOOST_TEST_ERROR( M ) BOOST_CHECK_MESSAGE( false, M ) -#define BOOST_TEST_FAIL( M ) BOOST_REQUIRE_MESSAGE( false, M ) - -//____________________________________________________________________________// - -#define BOOST_TEST_IS_DEFINED( symb ) ::boost::test_tools::tt_detail::is_defined_impl( symb, BOOST_STRINGIZE(= symb) ) - -//____________________________________________________________________________// - -#ifdef BOOST_TEST_NO_OLD_TOOLS - -#ifdef BOOST_TEST_TOOLS_UNDER_DEBUGGER - -#define BOOST_CHECK_THROW_IMPL(S, E, TL, Ppassed, Mpassed, Pcaught, Mcaught)\ -do { try { \ - S; \ - BOOST_TEST_TOOL_DIRECT_IMPL( Ppassed, TL, Mpassed ); \ -} catch( E ) { \ - BOOST_TEST_TOOL_DIRECT_IMPL( Pcaught, TL, Mcaught ); \ -}} while( ::boost::test_tools::tt_detail::dummy_cond() ) \ -/**/ - -#elif defined(BOOST_TEST_TOOLS_DEBUGGABLE) - -#define BOOST_CHECK_THROW_IMPL(S, E, TL, Ppassed, Mpassed, Pcaught, Mcaught)\ -do { try { \ - if( ::boost::debug::under_debugger() ) \ - BOOST_TEST_PASSPOINT(); \ - S; \ - BOOST_TEST_TOOL_DIRECT_IMPL( Ppassed, TL, Mpassed ); \ -} catch( E ) { \ - BOOST_TEST_TOOL_DIRECT_IMPL( Pcaught, TL, Mcaught ); \ -}} while( ::boost::test_tools::tt_detail::dummy_cond() ) \ -/**/ - -#else - -#define BOOST_CHECK_THROW_IMPL(S, E, TL, Ppassed, Mpassed, Pcaught, Mcaught)\ -do { try { \ - BOOST_TEST_PASSPOINT(); \ - S; \ - BOOST_TEST_TOOL_DIRECT_IMPL( Ppassed, TL, Mpassed ); \ -} catch( E ) { \ - BOOST_TEST_TOOL_DIRECT_IMPL( Pcaught, TL, Mcaught ); \ -}} while( ::boost::test_tools::tt_detail::dummy_cond() ) \ -/**/ - -#endif - -//____________________________________________________________________________// - -#define BOOST_WARN_THROW( S, E ) \ - BOOST_CHECK_THROW_IMPL(S, E const&, WARN, \ - false, "exception " BOOST_STRINGIZE(E) " is expected", \ - true , "exception " BOOST_STRINGIZE(E) " is caught" ) \ -/**/ -#define BOOST_CHECK_THROW( S, E ) \ - BOOST_CHECK_THROW_IMPL(S, E const&, CHECK, \ - false, "exception " BOOST_STRINGIZE(E) " is expected", \ - true , "exception " BOOST_STRINGIZE(E) " is caught" ) \ -/**/ -#define BOOST_REQUIRE_THROW( S, E ) \ - BOOST_CHECK_THROW_IMPL(S, E const&, REQUIRE, \ - false, "exception " BOOST_STRINGIZE(E) " is expected", \ - true , "exception " BOOST_STRINGIZE(E) " is caught" ) \ -/**/ - -//____________________________________________________________________________// - -#define BOOST_WARN_EXCEPTION( S, E, P ) \ - BOOST_CHECK_THROW_IMPL(S, E const& ex, WARN, \ - false, "exception " BOOST_STRINGIZE(E) " is expected", \ - P(ex), "incorrect exception " BOOST_STRINGIZE(E) " is caught" ) \ -/**/ -#define BOOST_CHECK_EXCEPTION( S, E, P ) \ - BOOST_CHECK_THROW_IMPL(S, E const& ex, CHECK, \ - false, "exception " BOOST_STRINGIZE(E) " is expected", \ - P(ex), "incorrect exception " BOOST_STRINGIZE(E) " is caught" ) \ -/**/ -#define BOOST_REQUIRE_EXCEPTION( S, E, P ) \ - BOOST_CHECK_THROW_IMPL(S, E const& ex, REQUIRE, \ - false, "exception " BOOST_STRINGIZE(E) " is expected", \ - P(ex), "incorrect exception " BOOST_STRINGIZE(E) " is caught" ) \ -/**/ - -//____________________________________________________________________________// - -#define BOOST_WARN_NO_THROW( S ) \ - BOOST_CHECK_THROW_IMPL(S, ..., WARN, \ - true , "no exceptions thrown by " BOOST_STRINGIZE( S ), \ - false, "exception thrown by " BOOST_STRINGIZE( S ) ) \ -/**/ -#define BOOST_CHECK_NO_THROW( S ) \ - BOOST_CHECK_THROW_IMPL(S, ..., CHECK, \ - true , "no exceptions thrown by " BOOST_STRINGIZE( S ), \ - false, "exception thrown by " BOOST_STRINGIZE( S ) ) \ -/**/ -#define BOOST_REQUIRE_NO_THROW( S ) \ - BOOST_CHECK_THROW_IMPL(S, ..., REQUIRE, \ - true , "no exceptions thrown by " BOOST_STRINGIZE( S ), \ - false, "exception thrown by " BOOST_STRINGIZE( S ) ) \ -/**/ - -//____________________________________________________________________________// - -#define BOOST_WARN_MESSAGE( P, M ) BOOST_TEST_TOOL_DIRECT_IMPL( P, WARN, M ) -#define BOOST_CHECK_MESSAGE( P, M ) BOOST_TEST_TOOL_DIRECT_IMPL( P, CHECK, M ) -#define BOOST_REQUIRE_MESSAGE( P, M ) BOOST_TEST_TOOL_DIRECT_IMPL( P, REQUIRE, M ) - -//____________________________________________________________________________// - -//////////////////////////////////////////////////////////////////////////////// -///////////////////////////// DEPRECATED TOOLS ///////////////////////////// - -#define BOOST_WARN( P ) BOOST_TEST_WARN( P ) -#define BOOST_CHECK( P ) BOOST_TEST_CHECK( P ) -#define BOOST_REQUIRE( P ) BOOST_TEST_REQUIRE( P ) - -//____________________________________________________________________________// - -#define BOOST_ERROR( M ) BOOST_TEST_ERROR( M ) -#define BOOST_FAIL( M ) BOOST_TEST_FAIL( M ) - -//____________________________________________________________________________// - -#define BOOST_WARN_EQUAL( L, R ) BOOST_TEST_WARN( L == R ) -#define BOOST_CHECK_EQUAL( L, R ) BOOST_TEST_CHECK( L == R ) -#define BOOST_REQUIRE_EQUAL( L, R ) BOOST_TEST_REQUIRE( L == R ) - -#define BOOST_WARN_NE( L, R ) BOOST_TEST_WARN( L != R ) -#define BOOST_CHECK_NE( L, R ) BOOST_TEST_CHECK( L != R ) -#define BOOST_REQUIRE_NE( L, R ) BOOST_TEST_REQUIRE( L != R ) - -#define BOOST_WARN_LT( L, R ) BOOST_TEST_WARN( L < R ) -#define BOOST_CHECK_LT( L, R ) BOOST_TEST_CHECK( L < R ) -#define BOOST_REQUIRE_LT( L, R ) BOOST_TEST_REQUIRE( L < R ) - -#define BOOST_WARN_LE( L, R ) BOOST_TEST_WARN( L <= R ) -#define BOOST_CHECK_LE( L, R ) BOOST_TEST_CHECK( L <= R ) -#define BOOST_REQUIRE_LE( L, R ) BOOST_TEST_REQUIRE( L <= R ) - -#define BOOST_WARN_GT( L, R ) BOOST_TEST_WARN( L > R ) -#define BOOST_CHECK_GT( L, R ) BOOST_TEST_CHECK( L > R ) -#define BOOST_REQUIRE_GT( L, R ) BOOST_TEST_REQUIRE( L > R ) - -#define BOOST_WARN_GE( L, R ) BOOST_TEST_WARN( L >= R ) -#define BOOST_CHECK_GE( L, R ) BOOST_TEST_CHECK( L >= R ) -#define BOOST_REQUIRE_GE( L, R ) BOOST_TEST_REQUIRE( L >= R ) - -//____________________________________________________________________________// - -#define BOOST_WARN_CLOSE( L, R, T ) BOOST_TEST_WARN( L == R, T % ::boost::test_tools::tolerance() ) -#define BOOST_CHECK_CLOSE( L, R, T ) BOOST_TEST_CHECK( L == R, T % ::boost::test_tools::tolerance() ) -#define BOOST_REQUIRE_CLOSE( L, R, T ) BOOST_TEST_REQUIRE( L == R, T % ::boost::test_tools::tolerance() ) - -#define BOOST_WARN_CLOSE_FRACTION(L, R, T) BOOST_TEST_WARN( L == R, ::boost::test_tools::tolerance( T ) ) -#define BOOST_CHECK_CLOSE_FRACTION(L, R, T) BOOST_TEST_CHECK( L == R, ::boost::test_tools::tolerance( T ) ) -#define BOOST_REQUIRE_CLOSE_FRACTION(L,R,T) BOOST_TEST_REQUIRE( L == R, ::boost::test_tools::tolerance( T ) ) - -#define BOOST_WARN_SMALL( FPV, T ) BOOST_TEST_WARN( FPV == 0., ::boost::test_tools::tolerance( T ) ) -#define BOOST_CHECK_SMALL( FPV, T ) BOOST_TEST_CHECK( FPV == 0., ::boost::test_tools::tolerance( T ) ) -#define BOOST_REQUIRE_SMALL( FPV, T ) BOOST_TEST_REQUIRE( FPV == 0., ::boost::test_tools::tolerance( T ) ) - -//____________________________________________________________________________// - -#define BOOST_WARN_EQUAL_COLLECTIONS( L_begin, L_end, R_begin, R_end ) \ - BOOST_TEST_WARN( ::boost::test_tools::tt_detail::make_it_pair(L_begin, L_end) ==\ - ::boost::test_tools::tt_detail::make_it_pair(R_begin, R_end), \ - ::boost::test_tools::per_element() ) \ -/**/ - -#define BOOST_CHECK_EQUAL_COLLECTIONS( L_begin, L_end, R_begin, R_end ) \ - BOOST_TEST_CHECK( ::boost::test_tools::tt_detail::make_it_pair(L_begin, L_end) ==\ - ::boost::test_tools::tt_detail::make_it_pair(R_begin, R_end), \ - ::boost::test_tools::per_element() ) \ -/**/ - -#define BOOST_REQUIRE_EQUAL_COLLECTIONS( L_begin, L_end, R_begin, R_end ) \ - BOOST_TEST_REQUIRE( ::boost::test_tools::tt_detail::make_it_pair(L_begin, L_end) ==\ - ::boost::test_tools::tt_detail::make_it_pair(R_begin, R_end), \ - ::boost::test_tools::per_element() ) \ -/**/ - -//____________________________________________________________________________// - -#define BOOST_WARN_BITWISE_EQUAL( L, R ) BOOST_TEST_WARN( L == R, ::boost::test_tools::bitwise() ) -#define BOOST_CHECK_BITWISE_EQUAL( L, R ) BOOST_TEST_CHECK( L == R, ::boost::test_tools::bitwise() ) -#define BOOST_REQUIRE_BITWISE_EQUAL( L, R ) BOOST_TEST_REQUIRE( L == R, ::boost::test_tools::bitwise() ) - -//____________________________________________________________________________// - -#define BOOST_WARN_PREDICATE( P, ARGS ) BOOST_TEST_WARN( P BOOST_PP_SEQ_TO_TUPLE(ARGS) ) -#define BOOST_CHECK_PREDICATE( P, ARGS ) BOOST_TEST_CHECK( P BOOST_PP_SEQ_TO_TUPLE(ARGS) ) -#define BOOST_REQUIRE_PREDICATE( P, ARGS ) BOOST_TEST_REQUIRE( P BOOST_PP_SEQ_TO_TUPLE(ARGS) ) - -//____________________________________________________________________________// - -#define BOOST_IS_DEFINED( symb ) ::boost::test_tools::tt_detail::is_defined_impl( #symb, BOOST_STRINGIZE(= symb) ) - -//____________________________________________________________________________// - -#endif // BOOST_TEST_NO_OLD_TOOLS - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_INTERFACE_HPP_111712GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/old/impl.hpp b/src/third_party/boost-1.69.0/boost/test/tools/old/impl.hpp deleted file mode 100644 index b975f61b38a..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/old/impl.hpp +++ /dev/null @@ -1,358 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: 74248 $ -// -// Description : implementation details for old toolbox -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_OLD_IMPL_HPP_012705GER -#define BOOST_TEST_TOOLS_OLD_IMPL_HPP_012705GER - -// Boost.Test -#include <boost/test/unit_test_log.hpp> -#include <boost/test/tools/assertion_result.hpp> -#include <boost/test/tools/floating_point_comparison.hpp> - -#include <boost/test/tools/detail/fwd.hpp> -#include <boost/test/tools/detail/print_helper.hpp> - -// Boost -#include <boost/limits.hpp> -#include <boost/numeric/conversion/conversion_traits.hpp> // for numeric::conversion_traits -#include <boost/type_traits/is_array.hpp> - -#include <boost/preprocessor/repetition/repeat.hpp> -#include <boost/preprocessor/arithmetic/add.hpp> - -// STL -#include <cstddef> // for std::size_t -#include <climits> // for CHAR_BIT - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace test_tools { -namespace tt_detail { - -// ************************************************************************** // -// ************** old TOOLBOX Implementation ************** // -// ************************************************************************** // - -// This function adds level of indirection, but it makes sure we evaluate predicate -// arguments only once - -#ifndef BOOST_TEST_PROD -#define TEMPL_PARAMS( z, m, dummy ) , typename BOOST_JOIN( Arg, m ) - -#define FUNC_PARAMS( z, m, dummy ) \ - , BOOST_JOIN( Arg, m ) const& BOOST_JOIN( arg, m ) \ - , char const* BOOST_JOIN( BOOST_JOIN( arg, m ), _descr ) \ -/**/ - -#define PRED_PARAMS( z, m, dummy ) BOOST_PP_COMMA_IF( m ) BOOST_JOIN( arg, m ) - -#define ARG_INFO( z, m, dummy ) \ - , BOOST_JOIN( BOOST_JOIN( arg, m ), _descr ) \ - , &static_cast<const unit_test::lazy_ostream&>(unit_test::lazy_ostream::instance() \ - << ::boost::test_tools::tt_detail::print_helper( BOOST_JOIN( arg, m ) )) \ -/**/ - -#define IMPL_FRWD( z, n, dummy ) \ -template<typename Pred \ - BOOST_PP_REPEAT_ ## z( BOOST_PP_ADD( n, 1 ), TEMPL_PARAMS, _ )> \ -inline bool \ -check_frwd( Pred P, unit_test::lazy_ostream const& assertion_descr, \ - const_string file_name, std::size_t line_num, \ - tool_level tl, check_type ct \ - BOOST_PP_REPEAT_ ## z( BOOST_PP_ADD( n, 1 ), FUNC_PARAMS, _ ) \ -) \ -{ \ - return \ - report_assertion( P( BOOST_PP_REPEAT_ ## z(BOOST_PP_ADD(n, 1), PRED_PARAMS,_) ),\ - assertion_descr, file_name, line_num, tl, ct, \ - BOOST_PP_ADD( n, 1 ) \ - BOOST_PP_REPEAT_ ## z( BOOST_PP_ADD( n, 1 ), ARG_INFO, _ ) \ - ); \ -} \ -/**/ - -#ifndef BOOST_TEST_MAX_PREDICATE_ARITY -#define BOOST_TEST_MAX_PREDICATE_ARITY 5 -#endif - -BOOST_PP_REPEAT( BOOST_TEST_MAX_PREDICATE_ARITY, IMPL_FRWD, _ ) - -#undef TEMPL_PARAMS -#undef FUNC_PARAMS -#undef PRED_INFO -#undef ARG_INFO -#undef IMPL_FRWD - -#endif - -//____________________________________________________________________________// - -template <class Left, class Right> -inline assertion_result equal_impl( Left const& left, Right const& right ) -{ - return left == right; -} - -//____________________________________________________________________________// - -inline assertion_result equal_impl( char* left, char const* right ) { return equal_impl( static_cast<char const*>(left), static_cast<char const*>(right) ); } -inline assertion_result equal_impl( char const* left, char* right ) { return equal_impl( static_cast<char const*>(left), static_cast<char const*>(right) ); } -inline assertion_result equal_impl( char* left, char* right ) { return equal_impl( static_cast<char const*>(left), static_cast<char const*>(right) ); } - -#if !defined( BOOST_NO_CWCHAR ) -assertion_result BOOST_TEST_DECL equal_impl( wchar_t const* left, wchar_t const* right ); -inline assertion_result equal_impl( wchar_t* left, wchar_t const* right ) { return equal_impl( static_cast<wchar_t const*>(left), static_cast<wchar_t const*>(right) ); } -inline assertion_result equal_impl( wchar_t const* left, wchar_t* right ) { return equal_impl( static_cast<wchar_t const*>(left), static_cast<wchar_t const*>(right) ); } -inline assertion_result equal_impl( wchar_t* left, wchar_t* right ) { return equal_impl( static_cast<wchar_t const*>(left), static_cast<wchar_t const*>(right) ); } -#endif - -//____________________________________________________________________________// - -struct equal_impl_frwd { - template <typename Left, typename Right> - inline assertion_result - call_impl( Left const& left, Right const& right, mpl::false_ ) const - { - return equal_impl( left, right ); - } - - template <typename Left, typename Right> - inline assertion_result - call_impl( Left const& left, Right const& right, mpl::true_ ) const - { - return (*this)( right, &left[0] ); - } - - template <typename Left, typename Right> - inline assertion_result - operator()( Left const& left, Right const& right ) const - { - typedef typename is_array<Left>::type left_is_array; - return call_impl( left, right, left_is_array() ); - } -}; - -//____________________________________________________________________________// - -struct ne_impl { - template <class Left, class Right> - assertion_result operator()( Left const& left, Right const& right ) - { - return !equal_impl_frwd()( left, right ); - } -}; - -//____________________________________________________________________________// - -struct lt_impl { - template <class Left, class Right> - assertion_result operator()( Left const& left, Right const& right ) - { - return left < right; - } -}; - -//____________________________________________________________________________// - -struct le_impl { - template <class Left, class Right> - assertion_result operator()( Left const& left, Right const& right ) - { - return left <= right; - } -}; - -//____________________________________________________________________________// - -struct gt_impl { - template <class Left, class Right> - assertion_result operator()( Left const& left, Right const& right ) - { - return left > right; - } -}; - -//____________________________________________________________________________// - -struct ge_impl { - template <class Left, class Right> - assertion_result operator()( Left const& left, Right const& right ) - { - return left >= right; - } -}; - -//____________________________________________________________________________// - -struct equal_coll_impl { - template <typename Left, typename Right> - assertion_result operator()( Left left_begin, Left left_end, Right right_begin, Right right_end ) - { - assertion_result pr( true ); - std::size_t pos = 0; - - for( ; left_begin != left_end && right_begin != right_end; ++left_begin, ++right_begin, ++pos ) { - if( *left_begin != *right_begin ) { - pr = false; - pr.message() << "\nMismatch at position " << pos << ": " - << ::boost::test_tools::tt_detail::print_helper(*left_begin) - << " != " - << ::boost::test_tools::tt_detail::print_helper(*right_begin); - } - } - - if( left_begin != left_end ) { - std::size_t r_size = pos; - while( left_begin != left_end ) { - ++pos; - ++left_begin; - } - - pr = false; - pr.message() << "\nCollections size mismatch: " << pos << " != " << r_size; - } - - if( right_begin != right_end ) { - std::size_t l_size = pos; - while( right_begin != right_end ) { - ++pos; - ++right_begin; - } - - pr = false; - pr.message() << "\nCollections size mismatch: " << l_size << " != " << pos; - } - - return pr; - } -}; - -//____________________________________________________________________________// - -struct bitwise_equal_impl { - template <class Left, class Right> - assertion_result operator()( Left const& left, Right const& right ) - { - assertion_result pr( true ); - - std::size_t left_bit_size = sizeof(Left)*CHAR_BIT; - std::size_t right_bit_size = sizeof(Right)*CHAR_BIT; - - static Left const leftOne( 1 ); - static Right const rightOne( 1 ); - - std::size_t total_bits = left_bit_size < right_bit_size ? left_bit_size : right_bit_size; - - for( std::size_t counter = 0; counter < total_bits; ++counter ) { - if( ( left & ( leftOne << counter ) ) != ( right & ( rightOne << counter ) ) ) { - pr = false; - pr.message() << "\nMismatch at position " << counter; - } - } - - if( left_bit_size != right_bit_size ) { - pr = false; - pr.message() << "\nOperands bit sizes mismatch: " << left_bit_size << " != " << right_bit_size; - } - - return pr; - } -}; - -//____________________________________________________________________________// - -template<typename FPT1, typename FPT2> -struct comp_supertype { - // deduce "better" type from types of arguments being compared - // if one type is floating and the second integral we use floating type and - // value of integral type is promoted to the floating. The same for float and double - // But we don't want to compare two values of integral types using this tool. - typedef typename numeric::conversion_traits<FPT1,FPT2>::supertype type; - BOOST_STATIC_ASSERT_MSG( !is_integral<type>::value, "Only floating-point types can be compared!"); -}; - -} // namespace tt_detail - -namespace fpc = math::fpc; - -// ************************************************************************** // -// ************** check_is_close ************** // -// ************************************************************************** // - -struct BOOST_TEST_DECL check_is_close_t { - // Public typedefs - typedef assertion_result result_type; - - template<typename FPT1, typename FPT2, typename ToleranceType> - assertion_result - operator()( FPT1 left, FPT2 right, ToleranceType tolerance ) const - { - fpc::close_at_tolerance<typename tt_detail::comp_supertype<FPT1,FPT2>::type> pred( tolerance, fpc::FPC_STRONG ); - - assertion_result ar( pred( left, right ) ); - - if( !ar ) - ar.message() << pred.tested_rel_diff(); - - return ar; - } -}; - -//____________________________________________________________________________// - -template<typename FPT1, typename FPT2, typename ToleranceType> -inline assertion_result -check_is_close( FPT1 left, FPT2 right, ToleranceType tolerance ) -{ - return check_is_close_t()( left, right, tolerance ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** check_is_small ************** // -// ************************************************************************** // - -struct BOOST_TEST_DECL check_is_small_t { - // Public typedefs - typedef bool result_type; - - template<typename FPT> - bool - operator()( FPT fpv, FPT tolerance ) const - { - return fpc::is_small( fpv, tolerance ); - } -}; - -//____________________________________________________________________________// - -template<typename FPT> -inline bool -check_is_small( FPT fpv, FPT tolerance ) -{ - return fpc::is_small( fpv, tolerance ); -} - -//____________________________________________________________________________// - -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_OLD_IMPL_HPP_012705GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/old/interface.hpp b/src/third_party/boost-1.69.0/boost/test/tools/old/interface.hpp deleted file mode 100644 index 2d6f8b78c0c..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/old/interface.hpp +++ /dev/null @@ -1,282 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: 81247 $ -// -// Description : contains definition for all test tools in old test toolbox -// *************************************************************************** - -#ifndef BOOST_TEST_TOOLS_OLD_INTERFACE_HPP_111712GER -#define BOOST_TEST_TOOLS_OLD_INTERFACE_HPP_111712GER - -// Boost -#include <boost/preprocessor/seq/for_each.hpp> -#include <boost/preprocessor/seq/size.hpp> -#include <boost/preprocessor/seq/to_tuple.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** TOOL BOX ************** // -// ************************************************************************** // - -// In macros below following argument abbreviations are used: -// P - predicate -// M - message -// S - statement -// E - exception -// L - left argument -// R - right argument -// TL - tool level -// CT - check type -// ARGS - arguments list (as PP sequence) - -// frwd_type: -// 0 - args exists and need to be forwarded; call check_frwd -// 1 - args exists, but do not need to be forwarded; call report_assertion directly -// 2 - no arguments; call report_assertion directly - -#define BOOST_TEST_TOOL_PASS_PRED0( P, ARGS ) P -#define BOOST_TEST_TOOL_PASS_PRED1( P, ARGS ) P BOOST_PP_SEQ_TO_TUPLE(ARGS) -#define BOOST_TEST_TOOL_PASS_PRED2( P, ARGS ) P - -#define BOOST_TEST_TOOL_PASS_ARG( r, _, arg ) , arg, BOOST_STRINGIZE( arg ) -#define BOOST_TEST_TOOL_PASS_ARG_DSCR( r, _, arg ) , BOOST_STRINGIZE( arg ) - -#define BOOST_TEST_TOOL_PASS_ARGS0( ARGS ) \ - BOOST_PP_SEQ_FOR_EACH( BOOST_TEST_TOOL_PASS_ARG, _, ARGS ) -#define BOOST_TEST_TOOL_PASS_ARGS1( ARGS ) \ - , BOOST_PP_SEQ_SIZE(ARGS) BOOST_PP_SEQ_FOR_EACH( BOOST_TEST_TOOL_PASS_ARG_DSCR, _, ARGS ) -#define BOOST_TEST_TOOL_PASS_ARGS2( ARGS ) \ - , 0 - -#define BOOST_TEST_TOOL_IMPL( frwd_type, P, assertion_descr, TL, CT, ARGS ) \ -do { \ - BOOST_TEST_PASSPOINT(); \ - ::boost::test_tools::tt_detail:: \ - BOOST_PP_IF( frwd_type, report_assertion, check_frwd ) ( \ - BOOST_JOIN( BOOST_TEST_TOOL_PASS_PRED, frwd_type )( P, ARGS ), \ - BOOST_TEST_LAZY_MSG( assertion_descr ), \ - BOOST_TEST_L(__FILE__), \ - static_cast<std::size_t>(__LINE__), \ - ::boost::test_tools::tt_detail::TL, \ - ::boost::test_tools::tt_detail::CT \ - BOOST_JOIN( BOOST_TEST_TOOL_PASS_ARGS, frwd_type )( ARGS ) ); \ -} while( ::boost::test_tools::tt_detail::dummy_cond() ) \ -/**/ - -//____________________________________________________________________________// - -#define BOOST_WARN( P ) BOOST_TEST_TOOL_IMPL( 2, \ - (P), BOOST_TEST_STRINGIZE( P ), WARN, CHECK_PRED, _ ) -#define BOOST_CHECK( P ) BOOST_TEST_TOOL_IMPL( 2, \ - (P), BOOST_TEST_STRINGIZE( P ), CHECK, CHECK_PRED, _ ) -#define BOOST_REQUIRE( P ) BOOST_TEST_TOOL_IMPL( 2, \ - (P), BOOST_TEST_STRINGIZE( P ), REQUIRE, CHECK_PRED, _ ) - -//____________________________________________________________________________// - -#define BOOST_WARN_MESSAGE( P, M ) BOOST_TEST_TOOL_IMPL( 2, (P), M, WARN, CHECK_MSG, _ ) -#define BOOST_CHECK_MESSAGE( P, M ) BOOST_TEST_TOOL_IMPL( 2, (P), M, CHECK, CHECK_MSG, _ ) -#define BOOST_REQUIRE_MESSAGE( P, M ) BOOST_TEST_TOOL_IMPL( 2, (P), M, REQUIRE, CHECK_MSG, _ ) - -//____________________________________________________________________________// - -#define BOOST_ERROR( M ) BOOST_CHECK_MESSAGE( false, M ) -#define BOOST_FAIL( M ) BOOST_REQUIRE_MESSAGE( false, M ) - -//____________________________________________________________________________// - -#define BOOST_CHECK_THROW_IMPL( S, E, P, postfix, TL ) \ -do { \ - try { \ - BOOST_TEST_PASSPOINT(); \ - S; \ - BOOST_TEST_TOOL_IMPL( 2, false, "exception " BOOST_STRINGIZE(E) " expected but not raised", \ - TL, CHECK_MSG, _ ); \ - } catch( E const& ex ) { \ - ::boost::unit_test::ut_detail::ignore_unused_variable_warning( ex ); \ - BOOST_TEST_TOOL_IMPL( 2, P, \ - "exception \"" BOOST_STRINGIZE( E )"\" raised as expected" postfix, \ - TL, CHECK_MSG, _ ); \ - } \ -} while( ::boost::test_tools::tt_detail::dummy_cond() ) \ -/**/ - -//____________________________________________________________________________// - -#define BOOST_WARN_THROW( S, E ) BOOST_CHECK_THROW_IMPL( S, E, true, "", WARN ) -#define BOOST_CHECK_THROW( S, E ) BOOST_CHECK_THROW_IMPL( S, E, true, "", CHECK ) -#define BOOST_REQUIRE_THROW( S, E ) BOOST_CHECK_THROW_IMPL( S, E, true, "", REQUIRE ) - -//____________________________________________________________________________// - -#define BOOST_WARN_EXCEPTION( S, E, P ) BOOST_CHECK_THROW_IMPL( S, E, P( ex ), \ - ": validation on the raised exception through predicate \"" BOOST_STRINGIZE(P) "\"", WARN ) -#define BOOST_CHECK_EXCEPTION( S, E, P ) BOOST_CHECK_THROW_IMPL( S, E, P( ex ), \ - ": validation on the raised exception through predicate \"" BOOST_STRINGIZE(P) "\"", CHECK ) -#define BOOST_REQUIRE_EXCEPTION( S, E, P ) BOOST_CHECK_THROW_IMPL( S, E, P( ex ), \ - ": validation on the raised exception through predicate \"" BOOST_STRINGIZE(P) "\"", REQUIRE ) - -//____________________________________________________________________________// - -#define BOOST_CHECK_NO_THROW_IMPL( S, TL ) \ -do { \ - try { \ - S; \ - BOOST_TEST_TOOL_IMPL( 2, true, "no exceptions thrown by " BOOST_STRINGIZE( S ), \ - TL, CHECK_MSG, _ ); \ - } catch( ... ) { \ - BOOST_TEST_TOOL_IMPL( 2, false, "unexpected exception thrown by " BOOST_STRINGIZE( S ), \ - TL, CHECK_MSG, _ ); \ - } \ -} while( ::boost::test_tools::tt_detail::dummy_cond() ) \ -/**/ - -#define BOOST_WARN_NO_THROW( S ) BOOST_CHECK_NO_THROW_IMPL( S, WARN ) -#define BOOST_CHECK_NO_THROW( S ) BOOST_CHECK_NO_THROW_IMPL( S, CHECK ) -#define BOOST_REQUIRE_NO_THROW( S ) BOOST_CHECK_NO_THROW_IMPL( S, REQUIRE ) - -//____________________________________________________________________________// - -#define BOOST_WARN_EQUAL( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::equal_impl_frwd(), "", WARN, CHECK_EQUAL, (L)(R) ) -#define BOOST_CHECK_EQUAL( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::equal_impl_frwd(), "", CHECK, CHECK_EQUAL, (L)(R) ) -#define BOOST_REQUIRE_EQUAL( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::equal_impl_frwd(), "", REQUIRE, CHECK_EQUAL, (L)(R) ) - -//____________________________________________________________________________// - -#define BOOST_WARN_NE( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::ne_impl(), "", WARN, CHECK_NE, (L)(R) ) -#define BOOST_CHECK_NE( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::ne_impl(), "", CHECK, CHECK_NE, (L)(R) ) -#define BOOST_REQUIRE_NE( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::ne_impl(), "", REQUIRE, CHECK_NE, (L)(R) ) - -//____________________________________________________________________________// - -#define BOOST_WARN_LT( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::lt_impl(), "", WARN, CHECK_LT, (L)(R) ) -#define BOOST_CHECK_LT( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::lt_impl(), "", CHECK, CHECK_LT, (L)(R) ) -#define BOOST_REQUIRE_LT( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::lt_impl(), "", REQUIRE, CHECK_LT, (L)(R) ) - -//____________________________________________________________________________// - -#define BOOST_WARN_LE( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::le_impl(), "", WARN, CHECK_LE, (L)(R) ) -#define BOOST_CHECK_LE( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::le_impl(), "", CHECK, CHECK_LE, (L)(R) ) -#define BOOST_REQUIRE_LE( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::le_impl(), "", REQUIRE, CHECK_LE, (L)(R) ) - -//____________________________________________________________________________// - -#define BOOST_WARN_GT( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::gt_impl(), "", WARN, CHECK_GT, (L)(R) ) -#define BOOST_CHECK_GT( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::gt_impl(), "", CHECK, CHECK_GT, (L)(R) ) -#define BOOST_REQUIRE_GT( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::gt_impl(), "", REQUIRE, CHECK_GT, (L)(R) ) - -//____________________________________________________________________________// - -#define BOOST_WARN_GE( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::ge_impl(), "", WARN, CHECK_GE, (L)(R) ) -#define BOOST_CHECK_GE( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::ge_impl(), "", CHECK, CHECK_GE, (L)(R) ) -#define BOOST_REQUIRE_GE( L, R ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::tt_detail::ge_impl(), "", REQUIRE, CHECK_GE, (L)(R) ) - -//____________________________________________________________________________// - -#define BOOST_WARN_CLOSE( L, R, T ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::check_is_close_t(), "", WARN, CHECK_CLOSE, (L)(R)(::boost::math::fpc::percent_tolerance(T)) ) -#define BOOST_CHECK_CLOSE( L, R, T ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::check_is_close_t(), "", CHECK, CHECK_CLOSE, (L)(R)(::boost::math::fpc::percent_tolerance(T)) ) -#define BOOST_REQUIRE_CLOSE( L, R, T ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::check_is_close_t(), "", REQUIRE, CHECK_CLOSE, (L)(R)(::boost::math::fpc::percent_tolerance(T)) ) - -//____________________________________________________________________________// - -#define BOOST_WARN_CLOSE_FRACTION(L, R, T) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::check_is_close_t(), "", WARN, CHECK_CLOSE_FRACTION, (L)(R)(T) ) -#define BOOST_CHECK_CLOSE_FRACTION(L, R, T) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::check_is_close_t(), "", CHECK, CHECK_CLOSE_FRACTION, (L)(R)(T) ) -#define BOOST_REQUIRE_CLOSE_FRACTION(L,R,T) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::check_is_close_t(), "", REQUIRE, CHECK_CLOSE_FRACTION, (L)(R)(T) ) - -//____________________________________________________________________________// - -#define BOOST_WARN_SMALL( FPV, T ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::check_is_small_t(), "", WARN, CHECK_SMALL, (FPV)(T) ) -#define BOOST_CHECK_SMALL( FPV, T ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::check_is_small_t(), "", CHECK, CHECK_SMALL, (FPV)(T) ) -#define BOOST_REQUIRE_SMALL( FPV, T ) BOOST_TEST_TOOL_IMPL( 0, \ - ::boost::test_tools::check_is_small_t(), "", REQUIRE, CHECK_SMALL, (FPV)(T) ) - -//____________________________________________________________________________// - -#define BOOST_WARN_PREDICATE( P, ARGS ) BOOST_TEST_TOOL_IMPL( 0, \ - P, BOOST_TEST_STRINGIZE( P ), WARN, CHECK_PRED_WITH_ARGS, ARGS ) -#define BOOST_CHECK_PREDICATE( P, ARGS ) BOOST_TEST_TOOL_IMPL( 0, \ - P, BOOST_TEST_STRINGIZE( P ), CHECK, CHECK_PRED_WITH_ARGS, ARGS ) -#define BOOST_REQUIRE_PREDICATE( P, ARGS ) BOOST_TEST_TOOL_IMPL( 0, \ - P, BOOST_TEST_STRINGIZE( P ), REQUIRE, CHECK_PRED_WITH_ARGS, ARGS ) - -//____________________________________________________________________________// - -#define BOOST_WARN_EQUAL_COLLECTIONS( L_begin, L_end, R_begin, R_end ) \ - BOOST_TEST_TOOL_IMPL( 1, ::boost::test_tools::tt_detail::equal_coll_impl(), \ - "", WARN, CHECK_EQUAL_COLL, (L_begin)(L_end)(R_begin)(R_end) ) \ -/**/ -#define BOOST_CHECK_EQUAL_COLLECTIONS( L_begin, L_end, R_begin, R_end ) \ - BOOST_TEST_TOOL_IMPL( 1, ::boost::test_tools::tt_detail::equal_coll_impl(), \ - "", CHECK, CHECK_EQUAL_COLL, (L_begin)(L_end)(R_begin)(R_end) ) \ -/**/ -#define BOOST_REQUIRE_EQUAL_COLLECTIONS( L_begin, L_end, R_begin, R_end ) \ - BOOST_TEST_TOOL_IMPL( 1, ::boost::test_tools::tt_detail::equal_coll_impl(), \ - "", REQUIRE, CHECK_EQUAL_COLL, (L_begin)(L_end)(R_begin)(R_end) ) \ -/**/ - -//____________________________________________________________________________// - -#define BOOST_WARN_BITWISE_EQUAL( L, R ) BOOST_TEST_TOOL_IMPL( 1, \ - ::boost::test_tools::tt_detail::bitwise_equal_impl(), "", WARN, CHECK_BITWISE_EQUAL, (L)(R) ) -#define BOOST_CHECK_BITWISE_EQUAL( L, R ) BOOST_TEST_TOOL_IMPL( 1, \ - ::boost::test_tools::tt_detail::bitwise_equal_impl(), "", CHECK, CHECK_BITWISE_EQUAL, (L)(R) ) -#define BOOST_REQUIRE_BITWISE_EQUAL( L, R ) BOOST_TEST_TOOL_IMPL( 1, \ - ::boost::test_tools::tt_detail::bitwise_equal_impl(), "", REQUIRE, CHECK_BITWISE_EQUAL, (L)(R) ) - -//____________________________________________________________________________// - -#define BOOST_IS_DEFINED( symb ) ::boost::test_tools::tt_detail::is_defined_impl( #symb, BOOST_STRINGIZE(= symb) ) - -//____________________________________________________________________________// - -#ifdef BOOST_TEST_NO_NEW_TOOLS - -#define BOOST_TEST_WARN( P ) BOOST_WARN( P ) -#define BOOST_TEST_CHECK( P ) BOOST_CHECK( P ) -#define BOOST_TEST_REQUIRE( P ) BOOST_REQUIRE( P ) - -#define BOOST_TEST( P ) BOOST_CHECK( P ) - -#endif - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TOOLS_OLD_INTERFACE_HPP_111712GER diff --git a/src/third_party/boost-1.69.0/boost/test/tools/output_test_stream.hpp b/src/third_party/boost-1.69.0/boost/test/tools/output_test_stream.hpp deleted file mode 100644 index 2abbf7b5219..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tools/output_test_stream.hpp +++ /dev/null @@ -1,107 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief output_test_stream class definition -// *************************************************************************** - -#ifndef BOOST_TEST_OUTPUT_TEST_STREAM_HPP_012705GER -#define BOOST_TEST_OUTPUT_TEST_STREAM_HPP_012705GER - -// Boost.Test -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/utils/wrap_stringstream.hpp> -#include <boost/test/tools/assertion_result.hpp> - -// STL -#include <cstddef> // for std::size_t - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** output_test_stream ************** // -// ************************************************************************** // - - - -namespace boost { -namespace test_tools { - -//! Class to be used to simplify testing of ostream-based output operations -class BOOST_TEST_DECL output_test_stream : public wrap_stringstream::wrapped_stream { - typedef unit_test::const_string const_string; -public: - //! Constructor - //! - //!@param[in] pattern_file_name indicates the name of the file for matching. If the - //! string is empty, the standard input or output streams are used instead - //! (depending on match_or_save) - //!@param[in] match_or_save if true, the pattern file will be read, otherwise it will be - //! written - //!@param[in] text_or_binary if false, opens the stream in binary mode. Otherwise the stream - //! is opened with default flags and the carriage returns are ignored. - explicit output_test_stream( const_string pattern_file_name = const_string(), - bool match_or_save = true, - bool text_or_binary = true ); - - // Destructor - virtual ~output_test_stream(); - - //! Checks if the stream is empty - //! - //!@param[in] flush_stream if true, flushes the stream after the call - virtual assertion_result is_empty( bool flush_stream = true ); - - //! Checks the length of the stream - //! - //!@param[in] length target length - //!@param[in] flush_stream if true, flushes the stream after the call. Set to false to call - //! additional checks on the same content. - virtual assertion_result check_length( std::size_t length, bool flush_stream = true ); - - //! Checks the content of the stream against a string - //! - //!@param[in] arg_ the target stream - //!@param[in] flush_stream if true, flushes the stream after the call. - virtual assertion_result is_equal( const_string arg_, bool flush_stream = true ); - - //! Checks the content of the stream against a pattern file - //! - //!@param[in] flush_stream if true, flushes/resets the stream after the call. - virtual assertion_result match_pattern( bool flush_stream = true ); - - //! Flushes the stream - void flush(); - -protected: - - //! Returns the string representation of the stream - //! - //! May be overriden in order to mutate the string before the matching operations. - virtual std::string get_stream_string_representation() const; - -private: - // helper functions - - //! Length of the stream - std::size_t length(); - - //! Synching the stream into an internal string representation - virtual void sync(); - - struct Impl; - Impl* m_pimpl; -}; - -} // namespace test_tools -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_OUTPUT_TEST_STREAM_HPP_012705GER diff --git a/src/third_party/boost-1.69.0/boost/test/tree/auto_registration.hpp b/src/third_party/boost-1.69.0/boost/test/tree/auto_registration.hpp deleted file mode 100644 index e9510be2928..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tree/auto_registration.hpp +++ /dev/null @@ -1,54 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: 74640 $ -// -// Description : defines auto_test_unit_registrar -// *************************************************************************** - -#ifndef BOOST_TEST_TREE_AUTO_REGISTRATION_HPP_100211GER -#define BOOST_TEST_TREE_AUTO_REGISTRATION_HPP_100211GER - -// Boost.Test -#include <boost/test/detail/config.hpp> -#include <boost/test/tree/decorator.hpp> -#include <boost/test/tree/test_unit.hpp> - -// STL -#include <list> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace ut_detail { - -// ************************************************************************** // -// ************** auto_test_unit_registrar ************** // -// ************************************************************************** // - -struct BOOST_TEST_DECL auto_test_unit_registrar { - // Constructors - auto_test_unit_registrar( test_case* tc, decorator::collector_t& decorators, counter_t exp_fail = 0 ); - explicit auto_test_unit_registrar( const_string ts_name, const_string ts_file, std::size_t ts_line, decorator::collector_t& decorators ); - explicit auto_test_unit_registrar( test_unit_generator const& tc_gen, decorator::collector_t& decorators ); - explicit auto_test_unit_registrar( boost::shared_ptr<test_unit_generator> tc_gen, decorator::collector_t& decorators ); - explicit auto_test_unit_registrar( int ); -}; - -} // namespace ut_detail -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TREE_AUTO_REGISTRATION_HPP_100211GER - diff --git a/src/third_party/boost-1.69.0/boost/test/tree/decorator.hpp b/src/third_party/boost-1.69.0/boost/test/tree/decorator.hpp deleted file mode 100644 index 6537152538d..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tree/decorator.hpp +++ /dev/null @@ -1,280 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: 62016 $ -// -// Description : defines decorators to be using with auto registered test units -// *************************************************************************** - -#ifndef BOOST_TEST_TREE_DECORATOR_HPP_091911GER -#define BOOST_TEST_TREE_DECORATOR_HPP_091911GER - -// Boost.Test -#include <boost/test/detail/config.hpp> -#include <boost/test/detail/global_typedef.hpp> - -#include <boost/test/tree/fixture.hpp> - -#include <boost/test/tools/assertion_result.hpp> -#include <boost/test/utils/basic_cstring/basic_cstring.hpp> - -// Boost -#include <boost/shared_ptr.hpp> -#include <boost/function/function0.hpp> -#include <boost/function/function1.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -// STL -#include <vector> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -class test_unit; - -namespace decorator { - -// ************************************************************************** // -// ************** decorator::collector_t ************** // -// ************************************************************************** // - -class base; -typedef boost::shared_ptr<base> base_ptr; - -class BOOST_TEST_DECL collector_t { - -public: - collector_t& operator*( base const& d ); - - void store_in( test_unit& tu ); - - void reset(); - - std::vector<base_ptr> get_lazy_decorators() const; - - // singleton pattern - BOOST_TEST_SINGLETON_CONS( collector_t ) - - private: - // Data members - std::vector<base_ptr> m_tu_decorators; -}; - - -// ************************************************************************** // -// ************** decorator::base ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL base { -public: - // composition interface - collector_t& operator*() const; - - // application interface - virtual void apply( test_unit& tu ) = 0; - - // deep cloning interface - virtual base_ptr clone() const = 0; - -protected: - virtual ~base() {} -}; - -// ************************************************************************** // -// ************** decorator::label ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL label : public decorator::base { -public: - explicit label( const_string l ) : m_label( l ) {} - -private: - // decorator::base interface - virtual void apply( test_unit& tu ); - virtual base_ptr clone() const { return base_ptr(new label( m_label )); } - - // Data members - const_string m_label; -}; - -// ************************************************************************** // -// ************** decorator::expected_failures ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL expected_failures : public decorator::base { -public: - explicit expected_failures( counter_t ef ) : m_exp_fail( ef ) {} - -private: - // decorator::base interface - virtual void apply( test_unit& tu ); - virtual base_ptr clone() const { return base_ptr(new expected_failures( m_exp_fail )); } - - // Data members - counter_t m_exp_fail; -}; - -// ************************************************************************** // -// ************** decorator::timeout ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL timeout : public decorator::base { -public: - explicit timeout( unsigned t ) : m_timeout( t ) {} - -private: - // decorator::base interface - virtual void apply( test_unit& tu ); - virtual base_ptr clone() const { return base_ptr(new timeout( m_timeout )); } - - // Data members - unsigned m_timeout; -}; - -// ************************************************************************** // -// ************** decorator::description ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL description : public decorator::base { -public: - explicit description( const_string descr ) : m_description( descr ) {} - -private: - // decorator::base interface - virtual void apply( test_unit& tu ); - virtual base_ptr clone() const { return base_ptr(new description( m_description )); } - - // Data members - const_string m_description; -}; - -// ************************************************************************** // -// ************** decorator::depends_on ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL depends_on : public decorator::base { -public: - explicit depends_on( const_string dependency ) : m_dependency( dependency ) {} - -private: - // decorator::base interface - virtual void apply( test_unit& tu ); - virtual base_ptr clone() const { return base_ptr(new depends_on( m_dependency )); } - - // Data members - const_string m_dependency; -}; - -// ************************************************************************** // -// ************** decorator::enable_if/enabled/disabled ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL enable_if_impl : public decorator::base { -protected: - void apply_impl( test_unit& tu, bool condition ); -}; - -template<bool condition> -class enable_if : public enable_if_impl { -private: - // decorator::base interface - virtual void apply( test_unit& tu ) { this->apply_impl( tu, condition ); } - virtual base_ptr clone() const { return base_ptr(new enable_if<condition>()); } -}; - -typedef enable_if<true> enabled; -typedef enable_if<false> disabled; - -// ************************************************************************** // -// ************** decorator::fixture ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL fixture_t : public decorator::base { -public: - // Constructor - explicit fixture_t( test_unit_fixture_ptr impl ) : m_impl( impl ) {} - -private: - // decorator::base interface - virtual void apply( test_unit& tu ); - virtual base_ptr clone() const { return base_ptr(new fixture_t( m_impl )); } - - // Data members - test_unit_fixture_ptr m_impl; -}; - -//____________________________________________________________________________// - -template<typename F> -inline fixture_t -fixture() -{ - return fixture_t( test_unit_fixture_ptr( new unit_test::class_based_fixture<F>() ) ); -} - -//____________________________________________________________________________// - -template<typename F, typename Arg> -inline fixture_t -fixture( Arg const& arg ) -{ - return fixture_t( test_unit_fixture_ptr( new unit_test::class_based_fixture<F,Arg>( arg ) ) ); -} - -//____________________________________________________________________________// - -inline fixture_t -fixture( boost::function<void()> const& setup, boost::function<void()> const& teardown = boost::function<void()>() ) -{ - return fixture_t( test_unit_fixture_ptr( new unit_test::function_based_fixture( setup, teardown ) ) ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** decorator::depends_on ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL precondition : public decorator::base { -public: - typedef boost::function<test_tools::assertion_result (test_unit_id)> predicate_t; - - explicit precondition( predicate_t p ) : m_precondition( p ) {} - -private: - // decorator::base interface - virtual void apply( test_unit& tu ); - virtual base_ptr clone() const { return base_ptr(new precondition( m_precondition )); } - - // Data members - predicate_t m_precondition; -}; - -} // namespace decorator - -using decorator::label; -using decorator::expected_failures; -using decorator::timeout; -using decorator::description; -using decorator::depends_on; -using decorator::enable_if; -using decorator::enabled; -using decorator::disabled; -using decorator::fixture; -using decorator::precondition; - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TREE_DECORATOR_HPP_091911GER diff --git a/src/third_party/boost-1.69.0/boost/test/tree/fixture.hpp b/src/third_party/boost-1.69.0/boost/test/tree/fixture.hpp deleted file mode 100644 index 8e07b2aa1d0..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tree/fixture.hpp +++ /dev/null @@ -1,191 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// Defines fixture interface and object makers -// *************************************************************************** - -#ifndef BOOST_TEST_TREE_FIXTURE_HPP_100311GER -#define BOOST_TEST_TREE_FIXTURE_HPP_100311GER - -// Boost.Test -#include <boost/test/detail/config.hpp> - -// Boost -#include <boost/shared_ptr.hpp> -#include <boost/scoped_ptr.hpp> -#include <boost/function/function0.hpp> -#include <boost/utility/declval.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** test_unit_fixture ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL test_unit_fixture { -public: - virtual ~test_unit_fixture() {} - - // Fixture interface - virtual void setup() = 0; - virtual void teardown() = 0; -}; - -typedef shared_ptr<test_unit_fixture> test_unit_fixture_ptr; - -// ************************************************************************** // -// ************** fixture helper functions ************** // -// ************************************************************************** // - -namespace impl_fixture { - -#if defined(BOOST_NO_CXX11_DECLTYPE) || defined(BOOST_NO_CXX11_TRAILING_RESULT_TYPES) - - template<typename U, void (U::*)()> struct fixture_detect {}; - - template<typename T> - struct has_setup { - private: - template<typename U> static char Test(fixture_detect<U, &U::setup>*); - template<typename U> static int Test(...); - public: - static const bool value = sizeof(Test<T>(0)) == sizeof(char); - }; - - template<typename T> - struct has_teardown { - private: - template<typename U> static char Test(fixture_detect<U, &U::teardown>*); - template<typename U> static int Test(...); - public: - static const bool value = sizeof(Test<T>(0)) == sizeof(char); - }; - -#else - - template<typename U> struct fixture_detect { typedef char type; }; - template<typename T> - struct has_setup { - private: - template<typename U> static auto Test(U*) -> typename fixture_detect<decltype(boost::declval<U>().setup())>::type; - template<typename U> static int Test(...); - public: - static const bool value = sizeof(Test<T>(0)) == sizeof(char); - }; - - template<typename T> - struct has_teardown { - private: - template<typename U> static auto Test(U*) -> typename fixture_detect<decltype(boost::declval<U>().teardown())>::type; - template<typename U> static int Test(...); - public: - static const bool value = sizeof(Test<T>(0)) == sizeof(char); - }; - -#endif - - template <bool has_setup = false> - struct call_setup { template <class U> void operator()(U& ) { } }; - - template <> - struct call_setup<true> { template <class U> void operator()(U& u) { u.setup(); } }; - - template <bool has_teardown = false> - struct call_teardown { template <class U> void operator()(U& ) { } }; - - template <> - struct call_teardown<true> { template <class U> void operator()(U& u) { u.teardown(); } }; -} - -//! Calls the fixture "setup" if detected by the compiler, otherwise does nothing. -template <class U> -void setup_conditional(U& u) { - return impl_fixture::call_setup<impl_fixture::has_setup<U>::value>()(u); -} - -//! Calls the fixture "teardown" if detected by the compiler, otherwise does nothing. -template <class U> -void teardown_conditional(U& u) { - return impl_fixture::call_teardown<impl_fixture::has_teardown<U>::value>()(u); -} - - -// ************************************************************************** // -// ************** class_based_fixture ************** // -// ************************************************************************** // - -template<typename F, typename Arg=void> -class class_based_fixture : public test_unit_fixture { -public: - // Constructor - explicit class_based_fixture( Arg const& arg ) : m_inst(), m_arg( arg ) {} - -private: - // Fixture interface - virtual void setup() { m_inst.reset( new F( m_arg ) ); setup_conditional(*m_inst); } - virtual void teardown() { teardown_conditional(*m_inst); m_inst.reset(); } - - // Data members - scoped_ptr<F> m_inst; - Arg m_arg; -}; - -//____________________________________________________________________________// - -template<typename F> -class class_based_fixture<F,void> : public test_unit_fixture { -public: - // Constructor - class_based_fixture() : m_inst( 0 ) {} - -private: - // Fixture interface - virtual void setup() { m_inst.reset( new F ); setup_conditional(*m_inst); } - virtual void teardown() { teardown_conditional(*m_inst); m_inst.reset(); } - - // Data members - scoped_ptr<F> m_inst; -}; - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** function_based_fixture ************** // -// ************************************************************************** // - -class function_based_fixture : public test_unit_fixture { -public: - // Constructor - function_based_fixture( boost::function<void ()> const& setup_, boost::function<void ()> const& teardown_ ) - : m_setup( setup_ ) - , m_teardown( teardown_ ) - { - } - -private: - // Fixture interface - virtual void setup() { if( m_setup ) m_setup(); } - virtual void teardown() { if( m_teardown ) m_teardown(); } - - // Data members - boost::function<void ()> m_setup; - boost::function<void ()> m_teardown; -}; - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TREE_FIXTURE_HPP_100311GER - diff --git a/src/third_party/boost-1.69.0/boost/test/tree/global_fixture.hpp b/src/third_party/boost-1.69.0/boost/test/tree/global_fixture.hpp deleted file mode 100644 index 7c96d34e898..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tree/global_fixture.hpp +++ /dev/null @@ -1,123 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// Defines global_fixture -// *************************************************************************** - -#ifndef BOOST_TEST_TREE_GLOBAL_FIXTURE_HPP_091911GER -#define BOOST_TEST_TREE_GLOBAL_FIXTURE_HPP_091911GER - -// Boost.Test -#include <boost/test/detail/config.hpp> -#include <boost/test/detail/global_typedef.hpp> - -#include <boost/test/tree/observer.hpp> -#include <boost/test/tree/fixture.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** global_configuration ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL global_configuration : public test_observer { - -public: - // Constructor - global_configuration(); - - // Dtor - virtual ~global_configuration(); - - // Happens after the framework global observer init has been done - virtual int priority() { return 1; } -}; - - - -// ************************************************************************** // -// ************** global_fixture ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL global_fixture : public test_unit_fixture { - -public: - // Constructor - global_fixture(); - - // Dtor - virtual ~global_fixture(); -}; - -//____________________________________________________________________________// - -namespace ut_detail { - -template<typename F> -struct global_configuration_impl : public global_configuration { - // Constructor - global_configuration_impl() : m_configuration_observer( 0 ) { - } - - // test observer interface - virtual void test_start( counter_t ) { - m_configuration_observer = new F; - } - - // test observer interface - virtual void test_finish() { - if(m_configuration_observer) { - delete m_configuration_observer; - m_configuration_observer = 0; - } - } -private: - // Data members - F* m_configuration_observer; -}; - -template<typename F> -struct global_fixture_impl : public global_fixture { - // Constructor - global_fixture_impl() : m_fixture( 0 ) { - } - - // test fixture interface - virtual void setup() { - m_fixture = new F; - setup_conditional(*m_fixture); - } - - // test fixture interface - virtual void teardown() { - if(m_fixture) { - teardown_conditional(*m_fixture); - } - delete m_fixture; - m_fixture = 0; - } - -private: - // Data members - F* m_fixture; -}; - -} // namespace ut_detail -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TREE_GLOBAL_FIXTURE_HPP_091911GER - diff --git a/src/third_party/boost-1.69.0/boost/test/tree/observer.hpp b/src/third_party/boost-1.69.0/boost/test/tree/observer.hpp deleted file mode 100644 index bd6fc9bff59..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tree/observer.hpp +++ /dev/null @@ -1,116 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief defines abstract interface for test observer -// *************************************************************************** - -#ifndef BOOST_TEST_TEST_OBSERVER_HPP_021005GER -#define BOOST_TEST_TEST_OBSERVER_HPP_021005GER - -// Boost.Test -#include <boost/test/detail/fwd_decl.hpp> -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/detail/config.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** test_observer ************** // -// ************************************************************************** // - -/// @brief Generic test observer interface -/// -/// This interface is used by observers in order to receive notifications from the -/// Boost.Test framework on the current execution state. -/// -/// Several observers can be running at the same time, and it is not unusual to -/// have interactions among them. The @ref test_observer::priority member function allows the specification -/// of a particular order among them (lowest priority executed first, except specified otherwise). -/// -class BOOST_TEST_DECL test_observer { -public: - - //! Called before the framework starts executing the test cases - //! - //! @param[in] number_of_test_cases indicates the number of test cases. Only active - //! test cases are taken into account. - virtual void test_start( counter_t /* number_of_test_cases */ ) {} - - //! Called after the framework ends executing the test cases - //! - //! @note The call is made with a reversed priority order. - virtual void test_finish() {} - - //! Called when a critical error is detected - //! - //! The critical errors are mainly the signals sent by the system and caught by the Boost.Test framework. - //! Since the running binary may be in incoherent/instable state, the test execution is aborted and all remaining - //! tests are discarded. - //! - //! @note may be called before test_observer::test_unit_finish() - virtual void test_aborted() {} - - //! Called before the framework starts executing a test unit - //! - //! @param[in] test_unit the test being executed - virtual void test_unit_start( test_unit const& /* test */) {} - - //! Called at each end of a test unit. - //! - //! @param elapsed duration of the test unit in microseconds. - virtual void test_unit_finish( test_unit const& /* test */, unsigned long /* elapsed */ ) {} - virtual void test_unit_skipped( test_unit const& tu, const_string ) { test_unit_skipped( tu ); } - virtual void test_unit_skipped( test_unit const& ) {} ///< backward compatibility - - //! Called when a test unit indicates a fatal error. - //! - //! A fatal error happens when - //! - a strong assertion (with @c REQUIRE) fails, which indicates that the test case cannot continue - //! - an unexpected exception is caught by the Boost.Test framework - virtual void test_unit_aborted( test_unit const& ) {} - - virtual void assertion_result( unit_test::assertion_result ar ) - { - switch( ar ) { - case AR_PASSED: assertion_result( true ); break; - case AR_FAILED: assertion_result( false ); break; - case AR_TRIGGERED: break; - default: break; - } - } - - //! Called when an exception is intercepted - //! - //! In case an exception is intercepted, this call happens before the call - //! to @ref test_unit_aborted in order to log - //! additional data about the exception. - virtual void exception_caught( execution_exception const& ) {} - - //! The priority indicates the order at which this observer is initialized - //! and tore down in the UTF framework. The order is lowest to highest priority. - virtual int priority() { return 0; } - -protected: - //! Deprecated - virtual void assertion_result( bool /* passed */ ) {} - - BOOST_TEST_PROTECTED_VIRTUAL ~test_observer() {} -}; - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TEST_OBSERVER_HPP_021005GER - diff --git a/src/third_party/boost-1.69.0/boost/test/tree/test_case_counter.hpp b/src/third_party/boost-1.69.0/boost/test/tree/test_case_counter.hpp deleted file mode 100644 index a74f37f152e..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tree/test_case_counter.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// Defines @ref test_case_counter -// *************************************************************************** - -#ifndef BOOST_TEST_TREE_TEST_CASE_COUNTER_HPP_100211GER -#define BOOST_TEST_TREE_TEST_CASE_COUNTER_HPP_100211GER - -// Boost.Test -#include <boost/test/detail/config.hpp> -#include <boost/test/utils/class_properties.hpp> - -#include <boost/test/tree/test_unit.hpp> -#include <boost/test/tree/visitor.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** test_case_counter ************** // -// ************************************************************************** // - -///! Counts the number of enabled test cases -class test_case_counter : public test_tree_visitor { -public: - // Constructor - test_case_counter() : p_count( 0 ) {} - - BOOST_READONLY_PROPERTY( counter_t, (test_case_counter)) p_count; -private: - // test tree visitor interface - virtual void visit( test_case const& tc ) { if( tc.is_enabled() ) ++p_count.value; } - virtual bool test_suite_start( test_suite const& ts ) { return ts.is_enabled(); } -}; - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TREE_TEST_CASE_COUNTER_HPP_100211GER - diff --git a/src/third_party/boost-1.69.0/boost/test/tree/test_case_template.hpp b/src/third_party/boost-1.69.0/boost/test/tree/test_case_template.hpp deleted file mode 100644 index e8629802208..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tree/test_case_template.hpp +++ /dev/null @@ -1,192 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -///@ file -/// Defines template_test_case_gen -// *************************************************************************** - -#ifndef BOOST_TEST_TREE_TEST_CASE_TEMPLATE_HPP_091911GER -#define BOOST_TEST_TREE_TEST_CASE_TEMPLATE_HPP_091911GER - -// Boost.Test -#include <boost/test/detail/config.hpp> -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/detail/fwd_decl.hpp> -#include <boost/test/detail/workaround.hpp> -#include <boost/test/tree/test_unit.hpp> - -#include <boost/test/utils/class_properties.hpp> - -#include <boost/test/tree/observer.hpp> - - -// Boost -#include <boost/shared_ptr.hpp> -#include <boost/mpl/for_each.hpp> -#include <boost/mpl/identity.hpp> -#include <boost/type.hpp> -#include <boost/type_traits/is_const.hpp> -#include <boost/function/function0.hpp> - -#if defined(BOOST_NO_TYPEID) || defined(BOOST_NO_RTTI) -# include <boost/current_function.hpp> -#else -# include <boost/core/demangle.hpp> -#endif - -// STL -#include <string> // for std::string -#include <list> // for std::list - -#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \ - !defined(BOOST_NO_CXX11_HDR_TUPLE) && \ - !defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) - #include <tuple> -#endif - -#include <boost/test/detail/suppress_warnings.hpp> - - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace ut_detail { - -// ************************************************************************** // -// ************** test_case_template_invoker ************** // -// ************************************************************************** // - -template<typename TestCaseTemplate,typename TestType> -class test_case_template_invoker { -public: - void operator()() { TestCaseTemplate::run( (boost::type<TestType>*)0 ); } -}; - -// ************************************************************************** // -// ************** generate_test_case_4_type ************** // -// ************************************************************************** // - -template<typename Generator, typename TestCaseTemplate> -struct generate_test_case_4_type { - explicit generate_test_case_4_type( const_string tc_name, const_string tc_file, std::size_t tc_line, Generator& G ) - : m_test_case_name( tc_name ) - , m_test_case_file( tc_file ) - , m_test_case_line( tc_line ) - , m_holder( G ) - {} - - template<typename TestType> - void operator()( mpl::identity<TestType> ) - { - std::string full_name; - assign_op( full_name, m_test_case_name, 0 ); - full_name += '<'; -#if !defined(BOOST_NO_TYPEID) && !defined(BOOST_NO_RTTI) - full_name += boost::core::demangle(typeid(TestType).name()); // same as execution_monitor.ipp -#else - full_name += BOOST_CURRENT_FUNCTION; -#endif - if( boost::is_const<TestType>::value ) - full_name += "_const"; - full_name += '>'; - - m_holder.m_test_cases.push_back( new test_case( ut_detail::normalize_test_case_name( full_name ), - m_test_case_file, - m_test_case_line, - test_case_template_invoker<TestCaseTemplate,TestType>() ) ); - } - -private: - // Data members - const_string m_test_case_name; - const_string m_test_case_file; - std::size_t m_test_case_line; - Generator& m_holder; -}; - -// ************************************************************************** // -// ************** test_case_template ************** // -// ************************************************************************** // - -class template_test_case_gen_base : public test_unit_generator { -public: - virtual test_unit* next() const - { - if( m_test_cases.empty() ) - return 0; - - test_unit* res = m_test_cases.front(); - m_test_cases.pop_front(); - - return res; - } - - // Data members - mutable std::list<test_unit*> m_test_cases; -}; - -template<typename TestCaseTemplate,typename TestTypesList> -class template_test_case_gen : public template_test_case_gen_base { -public: - // Constructor - template_test_case_gen( const_string tc_name, const_string tc_file, std::size_t tc_line ) - { - typedef generate_test_case_4_type<template_test_case_gen<TestCaseTemplate,TestTypesList>,TestCaseTemplate> single_test_gen; - - mpl::for_each<TestTypesList,mpl::make_identity<mpl::_> >( single_test_gen( tc_name, tc_file, tc_line, *this ) ); - } -}; - -// Describing template test cases with tuples -#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \ - !defined(BOOST_NO_CXX11_HDR_TUPLE) && \ - !defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) && \ - !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) - -template<typename TestCaseTemplate, typename... tuple_parameter_pack> -class template_test_case_gen<TestCaseTemplate, std::tuple<tuple_parameter_pack...> > : public template_test_case_gen_base { - - template<int... Is> - struct seq { }; - - template<int N, int... Is> - struct gen_seq : gen_seq<N - 1, N - 1, Is...> { }; - - template<int... Is> - struct gen_seq<0, Is...> : seq<Is...> { }; - - template<typename tuple_t, typename F, int... Is> - void for_each(F &f, seq<Is...>) - { - auto l = { (f(mpl::identity<typename std::tuple_element<Is, tuple_t>::type>()), 0)... }; - (void)l; // silence warning - } - -public: - // Constructor - template_test_case_gen( const_string tc_name, const_string tc_file, std::size_t tc_line ) - { - using tuple_t = std::tuple<tuple_parameter_pack...>; - using this_type = template_test_case_gen<TestCaseTemplate, tuple_t >; - using single_test_gen = generate_test_case_4_type<this_type, TestCaseTemplate>; - - single_test_gen op( tc_name, tc_file, tc_line, *this ); - - this->for_each<tuple_t>(op, gen_seq<sizeof...(tuple_parameter_pack)>()); - } -}; - -#endif /* C++11 variadic, tuples and type alias */ - -} // namespace ut_detail -} // unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TREE_TEST_CASE_TEMPLATE_HPP_091911GER diff --git a/src/third_party/boost-1.69.0/boost/test/tree/test_unit.hpp b/src/third_party/boost-1.69.0/boost/test/tree/test_unit.hpp deleted file mode 100644 index 48033af8977..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tree/test_unit.hpp +++ /dev/null @@ -1,293 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// Defines @ref boost::unit_test::test_unit "test_unit", @ref boost::unit_test::test_case "test_case", -/// @ref boost::unit_test::test_suite "test_suite" and @ref boost::unit_test::master_test_suite_t "master_test_suite_t" -// *************************************************************************** - -#ifndef BOOST_TEST_TREE_TEST_UNIT_HPP_100211GER -#define BOOST_TEST_TREE_TEST_UNIT_HPP_100211GER - -// Boost.Test -#include <boost/test/detail/config.hpp> -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/detail/fwd_decl.hpp> - -#include <boost/test/tree/decorator.hpp> -#include <boost/test/tree/fixture.hpp> - -#include <boost/test/tools/assertion_result.hpp> - -#include <boost/test/utils/class_properties.hpp> - -// Boost -#include <boost/function/function0.hpp> -#include <boost/function/function1.hpp> - -// STL -#include <vector> -#include <string> -#include <map> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -namespace framework { -class state; -BOOST_TEST_DECL master_test_suite_t& master_test_suite(); -} - -// ************************************************************************** // -// ************** test_unit ************** // -// ************************************************************************** // - -typedef std::vector<test_unit_id> test_unit_id_list; - -class BOOST_TEST_DECL test_unit { -public: - enum { type = TUT_ANY }; - enum run_status { RS_DISABLED, RS_ENABLED, RS_INHERIT, RS_INVALID }; - - typedef std::vector<test_unit_id> id_list; - typedef std::vector<test_unit_fixture_ptr> fixture_list_t; - typedef BOOST_READONLY_PROPERTY(test_unit_id,(framework::state)) id_t; - typedef BOOST_READONLY_PROPERTY(test_unit_id,(test_suite)) parent_id_t; - typedef BOOST_READONLY_PROPERTY(id_list,(test_unit)) id_list_t; - typedef std::vector<decorator::base_ptr> decor_list_t; - typedef BOOST_READONLY_PROPERTY(std::vector<std::string>,(test_unit)) label_list_t; - - typedef boost::function<test_tools::assertion_result (test_unit_id)> precondition_t; - typedef BOOST_READONLY_PROPERTY(std::vector<precondition_t>,(test_unit)) precond_list_t; - - // preconditions management - void depends_on( test_unit* tu ); - void add_precondition( precondition_t const& ); - test_tools::assertion_result check_preconditions() const; - - // labels management - void add_label( const_string l ); - bool has_label( const_string l ) const; - - // helper access methods - void increase_exp_fail( counter_t num ); - bool is_enabled() const { return p_run_status == RS_ENABLED; } - std::string full_name() const; - - // Public r/o properties - test_unit_type const p_type; ///< type for this test unit - const_string const p_type_name; ///< "case"/"suite"/"module" - const_string const p_file_name; - std::size_t const p_line_num; - id_t p_id; ///< unique id for this test unit - parent_id_t p_parent_id; ///< parent test suite id - label_list_t p_labels; ///< list of labels associated with this test unit - - id_list_t p_dependencies; ///< list of test units this one depends on - precond_list_t p_preconditions; ///< user supplied preconditions for this test unit; - - // Public r/w properties - readwrite_property<std::string> p_name; ///< name for this test unit - readwrite_property<std::string> p_description; ///< description for this test unit - readwrite_property<unsigned> p_timeout; ///< timeout for the test unit execution in seconds - readwrite_property<counter_t> p_expected_failures; ///< number of expected failures in this test unit - - readwrite_property<run_status> p_default_status; ///< run status obtained by this unit during setup phase - readwrite_property<run_status> p_run_status; ///< run status assigned to this unit before execution phase after applying all filters - - readwrite_property<counter_t> p_sibling_rank; ///< rank of this test unit amoung siblings of the same parent - - readwrite_property<decor_list_t> p_decorators; ///< automatically assigned decorators; execution is delayed till framework::finalize_setup_phase function - readwrite_property<fixture_list_t> p_fixtures; ///< fixtures associated with this test unit - -protected: - ~test_unit(); - // Constructor - test_unit( const_string tu_name, const_string tc_file, std::size_t tc_line, test_unit_type t ); - // Master test suite constructor - explicit test_unit( const_string module_name ); - -private: -}; - -// ************************************************************************** // -// ************** test_unit_generator ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL test_unit_generator { -public: - virtual test_unit* next() const = 0; - -protected: - BOOST_TEST_PROTECTED_VIRTUAL ~test_unit_generator() {} -}; - -// ************************************************************************** // -// ************** test_case ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL test_case : public test_unit { -public: - enum { type = TUT_CASE }; - - // Constructor - test_case( const_string tc_name, boost::function<void ()> const& test_func ); - test_case( const_string tc_name, const_string tc_file, std::size_t tc_line, boost::function<void ()> const& test_func ); - - // Public property - typedef BOOST_READONLY_PROPERTY(boost::function<void ()>,(test_case)) test_func; - - test_func p_test_func; - -private: - friend class framework::state; - ~test_case() {} -}; - -// ************************************************************************** // -// ************** test_suite ************** // -// ************************************************************************** // - -//! Class representing test suites -class BOOST_TEST_DECL test_suite : public test_unit { -public: - enum { type = TUT_SUITE }; - - // Constructor - explicit test_suite( const_string ts_name, const_string ts_file, std::size_t ts_line ); - - // test unit list management - - /*!@brief Adds a test unit to a test suite. - * - * It is possible to specify the timeout and the expected failures. - */ - void add( test_unit* tu, counter_t expected_failures = 0, unsigned timeout = 0 ); - - /// @overload - void add( test_unit_generator const& gen, unsigned timeout = 0 ); - - /// @overload - void add( test_unit_generator const& gen, decorator::collector_t& decorators ); - - /// @overload - void add( boost::shared_ptr<test_unit_generator> gen_ptr, decorator::collector_t& decorators ); - - //! Removes a test from the test suite. - void remove( test_unit_id id ); - - //! Generates all the delayed test_units from the generators - void generate( ); - - //! Check for duplicates name in test cases - //! - //! Raises a setup_error if there are duplicates - void check_for_duplicate_test_cases(); - - // access methods - test_unit_id get( const_string tu_name ) const; - std::size_t size() const { return m_children.size(); } - -protected: - // Master test suite constructor - explicit test_suite( const_string module_name ); - - friend BOOST_TEST_DECL - void traverse_test_tree( test_suite const&, test_tree_visitor&, bool ); - friend class framework::state; - virtual ~test_suite() {} - - typedef std::multimap<counter_t,test_unit_id> children_per_rank; - // Data members - - test_unit_id_list m_children; - children_per_rank m_ranked_children; ///< maps child sibling rank to list of children with that rank - - std::vector< std::pair<boost::shared_ptr<test_unit_generator>, std::vector<decorator::base_ptr> > > m_generators; /// lazy evaluation -}; - -// ************************************************************************** // -// ************** master_test_suite ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL master_test_suite_t : public test_suite { -private: - master_test_suite_t(); - master_test_suite_t(const master_test_suite_t&); // undefined - master_test_suite_t& operator=(master_test_suite_t const &); // undefined - -public: - // Data members - int argc; - char** argv; - - friend master_test_suite_t& boost::unit_test::framework::master_test_suite(); -}; - -// ************************************************************************** // -// ************** user_tc_method_invoker ************** // -// ************************************************************************** // - -namespace ut_detail { - -BOOST_TEST_DECL std::string normalize_test_case_name( const_string tu_name ); - -//____________________________________________________________________________// - -template<typename InstanceType,typename UserTestCase> -struct user_tc_method_invoker { - typedef void (UserTestCase::*TestMethod )(); - - user_tc_method_invoker( shared_ptr<InstanceType> inst, TestMethod test_method ) - : m_inst( inst ), m_test_method( test_method ) {} - - void operator()() { ((*m_inst).*m_test_method)(); } - - shared_ptr<InstanceType> m_inst; - TestMethod m_test_method; -}; - -} // namespace ut_detail - -// ************************************************************************** // -// ************** make_test_case ************** // -// ************************************************************************** // - -inline test_case* -make_test_case( boost::function<void ()> const& test_func, const_string tc_name, const_string tc_file, std::size_t tc_line ) -{ - return new test_case( ut_detail::normalize_test_case_name( tc_name ), tc_file, tc_line, test_func ); -} - -//____________________________________________________________________________// - -template<typename UserTestCase, typename InstanceType> -inline test_case* -make_test_case( void (UserTestCase::* test_method )(), - const_string tc_name, - const_string tc_file, - std::size_t tc_line, - boost::shared_ptr<InstanceType> user_test_case ) -{ - return new test_case( ut_detail::normalize_test_case_name( tc_name ), - tc_file, - tc_line, - ut_detail::user_tc_method_invoker<InstanceType,UserTestCase>( user_test_case, test_method ) ); -} - -//____________________________________________________________________________// - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TREE_TEST_UNIT_HPP_100211GER diff --git a/src/third_party/boost-1.69.0/boost/test/tree/traverse.hpp b/src/third_party/boost-1.69.0/boost/test/tree/traverse.hpp deleted file mode 100644 index d27917cacea..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tree/traverse.hpp +++ /dev/null @@ -1,58 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: -1 $ -// -// Description : defines traverse_test_tree algorithm -// *************************************************************************** - -#ifndef BOOST_TEST_TREE_TRAVERSE_HPP_100211GER -#define BOOST_TEST_TREE_TRAVERSE_HPP_100211GER - -// Boost.Test -#include <boost/test/detail/config.hpp> - -#include <boost/test/tree/test_unit.hpp> -#include <boost/test/tree/visitor.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** traverse_test_tree ************** // -// ************************************************************************** // - -BOOST_TEST_DECL void traverse_test_tree( test_case const&, test_tree_visitor&, bool ignore_status = false ); -BOOST_TEST_DECL void traverse_test_tree( test_suite const&, test_tree_visitor&, bool ignore_status = false ); -BOOST_TEST_DECL void traverse_test_tree( test_unit_id , test_tree_visitor&, bool ignore_status = false ); - -//____________________________________________________________________________// - -inline void -traverse_test_tree( test_unit const& tu, test_tree_visitor& V, bool ignore_status = false ) -{ - if( tu.p_type == TUT_CASE ) - traverse_test_tree( static_cast<test_case const&>( tu ), V, ignore_status ); - else - traverse_test_tree( static_cast<test_suite const&>( tu ), V, ignore_status ); -} - -//____________________________________________________________________________// - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TREE_TRAVERSE_HPP_100211GER diff --git a/src/third_party/boost-1.69.0/boost/test/tree/visitor.hpp b/src/third_party/boost-1.69.0/boost/test/tree/visitor.hpp deleted file mode 100644 index 8f1bae5c92b..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/tree/visitor.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision: -1 $ -// -// Description : defines test_tree_visitor -// *************************************************************************** - -#ifndef BOOST_TEST_TREE_VISITOR_HPP_100211GER -#define BOOST_TEST_TREE_VISITOR_HPP_100211GER - -// Boost.Test -#include <boost/test/detail/config.hpp> - -#include <boost/test/tree/test_unit.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** test_tree_visitor ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL test_tree_visitor { -public: - // test tree visitor interface - virtual bool visit( test_unit const& ) { return true; } - virtual void visit( test_case const& tc ) { visit( (test_unit const&)tc ); } - virtual bool test_suite_start( test_suite const& ts ){ return visit( (test_unit const&)ts ); } - virtual void test_suite_finish( test_suite const& ) {} - -protected: - BOOST_TEST_PROTECTED_VIRTUAL ~test_tree_visitor() {} -}; - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_TREE_VISITOR_HPP_100211GER - diff --git a/src/third_party/boost-1.69.0/boost/test/unit_test.hpp b/src/third_party/boost-1.69.0/boost/test/unit_test.hpp deleted file mode 100644 index e6a236a1b5b..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/unit_test.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief Entry point into the Unit Test Framework -/// -/// This header should be the only header necessary to include to start using the framework -// *************************************************************************** - -#ifndef BOOST_TEST_UNIT_TEST_HPP_071894GER -#define BOOST_TEST_UNIT_TEST_HPP_071894GER - -// Boost.Test -#include <boost/test/test_tools.hpp> -#include <boost/test/unit_test_suite.hpp> - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** Auto Linking ************** // -// ************************************************************************** // - -#if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_TEST_NO_LIB) && \ - !defined(BOOST_TEST_SOURCE) && !defined(BOOST_TEST_INCLUDED) -# define BOOST_LIB_NAME boost_unit_test_framework - -# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_TEST_DYN_LINK) -# define BOOST_DYN_LINK -# endif - -# include <boost/config/auto_link.hpp> - -#endif // auto-linking disabled - -// ************************************************************************** // -// ************** unit_test_main ************** // -// ************************************************************************** // - -namespace boost { namespace unit_test { - -int BOOST_TEST_DECL unit_test_main( init_unit_test_func init_func, int argc, char* argv[] ); - -} - -// !! ?? to remove -namespace unit_test_framework=unit_test; - -} - -#if defined(BOOST_TEST_DYN_LINK) && defined(BOOST_TEST_MAIN) && !defined(BOOST_TEST_NO_MAIN) - -// ************************************************************************** // -// ************** main function for tests using dll ************** // -// ************************************************************************** // - -int BOOST_TEST_CALL_DECL -main( int argc, char* argv[] ) -{ - return ::boost::unit_test::unit_test_main( &init_unit_test, argc, argv ); -} - -//____________________________________________________________________________// - -#endif // BOOST_TEST_DYN_LINK && BOOST_TEST_MAIN && !BOOST_TEST_NO_MAIN - -#endif // BOOST_TEST_UNIT_TEST_HPP_071894GER diff --git a/src/third_party/boost-1.69.0/boost/test/unit_test_log.hpp b/src/third_party/boost-1.69.0/boost/test/unit_test_log.hpp deleted file mode 100644 index d65a728747c..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/unit_test_log.hpp +++ /dev/null @@ -1,280 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief defines singleton class unit_test_log and all manipulators. -/// unit_test_log has output stream like interface. It's implementation is -/// completely hidden with pimple idiom -// *************************************************************************** - -#ifndef BOOST_TEST_UNIT_TEST_LOG_HPP_071894GER -#define BOOST_TEST_UNIT_TEST_LOG_HPP_071894GER - -// Boost.Test -#include <boost/test/tree/observer.hpp> - -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/detail/log_level.hpp> -#include <boost/test/detail/fwd_decl.hpp> - -#include <boost/test/utils/wrap_stringstream.hpp> -#include <boost/test/utils/lazy_ostream.hpp> - -// Boost - -// STL -#include <iosfwd> // for std::ostream& - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** log manipulators ************** // -// ************************************************************************** // - -namespace log { - -struct BOOST_TEST_DECL begin { - begin( const_string fn, std::size_t ln ) - : m_file_name( fn ) - , m_line_num( ln ) - {} - - const_string m_file_name; - std::size_t m_line_num; -}; - -struct end {}; - -} // namespace log - -// ************************************************************************** // -// ************** entry_value_collector ************** // -// ************************************************************************** // - -namespace ut_detail { - -class BOOST_TEST_DECL entry_value_collector { -public: - // Constructors - entry_value_collector() : m_last( true ) {} - entry_value_collector( entry_value_collector const& rhs ) : m_last( true ) { rhs.m_last = false; } - ~entry_value_collector(); - - // collection interface - entry_value_collector const& operator<<( lazy_ostream const& ) const; - entry_value_collector const& operator<<( const_string ) const; - -private: - // Data members - mutable bool m_last; -}; - -} // namespace ut_detail - -// ************************************************************************** // -// ************** unit_test_log ************** // -// ************************************************************************** // - -/// @brief Manages the sets of loggers, their streams and log levels -/// -/// The Boost.Test framework allows for having several formatters/loggers at the same time, each of which -/// having their own log level and output stream. -/// -/// This class serves the purpose of -/// - exposing an interface to the test framework (as a boost::unit_test::test_observer) -/// - exposing an interface to the testing tools -/// - managing several loggers -/// -/// @note Accesses to the functions exposed by this class are made through the singleton -/// @c boost::unit_test::unit_test_log. -/// -/// Users/developers willing to implement their own formatter need to: -/// - implement a boost::unit_test::unit_test_log_formatter that will output the desired format -/// - register the formatter during a eg. global fixture using the method @c set_formatter (though the framework singleton). -/// -/// @warning this observer has a higher priority than the @ref boost::unit_test::results_collector_t. This means -/// that the various @ref boost::unit_test::test_results associated to each test unit may not be available at the time -/// the @c test_unit_start, @c test_unit_finish ... are called. -/// -/// @see -/// - boost::unit_test::test_observer -/// - boost::unit_test::unit_test_log_formatter -class BOOST_TEST_DECL unit_test_log_t : public test_observer { -public: - // test_observer interface implementation - virtual void test_start( counter_t test_cases_amount ); - virtual void test_finish(); - virtual void test_aborted(); - - virtual void test_unit_start( test_unit const& ); - virtual void test_unit_finish( test_unit const&, unsigned long elapsed ); - virtual void test_unit_skipped( test_unit const&, const_string ); - virtual void test_unit_aborted( test_unit const& ); - - virtual void exception_caught( execution_exception const& ex ); - - virtual int priority() { return 2; } - - // log configuration methods - //! Sets the stream for all loggers - //! - //! This will override the log sink/stream of all loggers, whether enabled or not. - void set_stream( std::ostream& ); - - //! Sets the stream for specific logger - //! - //! @note Has no effect if the specified format is not found - //! @par Since Boost 1.62 - void set_stream( output_format, std::ostream& ); - - //! Returns a pointer to the stream associated to specific logger - //! - //! @note Returns a null pointer if the format is not found - //! @par Since Boost 1.67 - std::ostream* get_stream( output_format ) const; - - - //! Sets the threshold level for all loggers/formatters. - //! - //! This will override the log level of all loggers, whether enabled or not. - void set_threshold_level( log_level ); - - //! Sets the threshold/log level of a specific format - //! - //! @note Has no effect if the specified format is not found - //! @par Since Boost 1.62 - void set_threshold_level( output_format, log_level ); - - //! Add a format to the set of loggers - //! - //! Adding a logger means that the specified logger is enabled. The log level is managed by the formatter itself - //! and specifies what events are forwarded to the underlying formatter. - //! @par Since Boost 1.62 - void add_format( output_format ); - - //! Sets the format of the logger - //! - //! This will become the only active format of the logs. - void set_format( output_format ); - - //! Returns the logger instance for a specific format. - //! - //! @returns the logger/formatter instance, or @c (unit_test_log_formatter*)0 if the format is not found. - //! @par Since Boost 1.62 - unit_test_log_formatter* get_formatter( output_format ); - - //! Sets the logger instance - //! - //! The specified logger becomes the unique active one. The custom log formatter has the - //! format @c OF_CUSTOM_LOGGER. If such a format exists already, its formatter gets replaced by the one - //! given in argument. - //! - //! The log level and output stream of the new formatter are taken from the currently active logger. In case - //! several loggers are active, the order of priority is CUSTOM, HRF, XML, and JUNIT. - //! If (unit_test_log_formatter*)0 is given as argument, the custom logger (if any) is removed. - //! - //! @note The ownership of the pointer is transfered to the Boost.Test framework. This call is equivalent to - //! - a call to @c add_formatter - //! - a call to @c set_format(OF_CUSTOM_LOGGER) - //! - a configuration of the newly added logger with a previously configured stream and log level. - void set_formatter( unit_test_log_formatter* ); - - //! Adds a custom log formatter to the set of formatters - //! - //! The specified logger is added with the format @c OF_CUSTOM_LOGGER, such that it can - //! be futher selected or its stream/log level can be specified. - //! If there is already a custom logger (with @c OF_CUSTOM_LOGGER), then - //! the existing one gets replaced by the one given in argument. - //! The provided logger is added with an enabled state. - //! If (unit_test_log_formatter*)0 is given as argument, the custom logger (if any) is removed and - //! no other action is performed. - //! - //! @note The ownership of the pointer is transfered to the Boost.Test framework. - //! @par Since Boost 1.62 - void add_formatter( unit_test_log_formatter* the_formatter ); - - // test progress logging - void set_checkpoint( const_string file, std::size_t line_num, const_string msg = const_string() ); - - // entry logging - unit_test_log_t& operator<<( log::begin const& ); // begin entry - unit_test_log_t& operator<<( log::end const& ); // end entry - unit_test_log_t& operator<<( log_level ); // set entry level - unit_test_log_t& operator<<( const_string ); // log entry value - unit_test_log_t& operator<<( lazy_ostream const& ); // log entry value - - ut_detail::entry_value_collector operator()( log_level ); // initiate entry collection - -private: - // Implementation helpers - bool log_entry_start(output_format log_format); - void log_entry_context( log_level l ); - void clear_entry_context(); - - // Singleton - BOOST_TEST_SINGLETON_CONS( unit_test_log_t ) -}; // unit_test_log_t - -BOOST_TEST_SINGLETON_INST( unit_test_log ) - -// helper macros -#define BOOST_TEST_LOG_ENTRY( ll ) \ - (::boost::unit_test::unit_test_log \ - << ::boost::unit_test::log::begin( BOOST_TEST_L(__FILE__), __LINE__ ))(ll) \ -/**/ - -} // namespace unit_test -} // namespace boost - -// ************************************************************************** // -// ************** Unit test log interface helpers ************** // -// ************************************************************************** // - -// messages sent by the framework -#define BOOST_TEST_FRAMEWORK_MESSAGE( M ) \ - (::boost::unit_test::unit_test_log \ - << ::boost::unit_test::log::begin( \ - "boost.test framework", \ - __LINE__ )) \ - ( ::boost::unit_test::log_messages ) \ - << BOOST_TEST_LAZY_MSG( M ) \ -/**/ - - -#define BOOST_TEST_MESSAGE( M ) \ - BOOST_TEST_LOG_ENTRY( ::boost::unit_test::log_messages ) \ - << BOOST_TEST_LAZY_MSG( M ) \ -/**/ - -//____________________________________________________________________________// - -#define BOOST_TEST_PASSPOINT() \ - ::boost::unit_test::unit_test_log.set_checkpoint( \ - BOOST_TEST_L(__FILE__), \ - static_cast<std::size_t>(__LINE__) ) \ -/**/ - -//____________________________________________________________________________// - -#define BOOST_TEST_CHECKPOINT( M ) \ - ::boost::unit_test::unit_test_log.set_checkpoint( \ - BOOST_TEST_L(__FILE__), \ - static_cast<std::size_t>(__LINE__), \ - (::boost::wrap_stringstream().ref() << M).str() ) \ -/**/ - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UNIT_TEST_LOG_HPP_071894GER - diff --git a/src/third_party/boost-1.69.0/boost/test/unit_test_log_formatter.hpp b/src/third_party/boost-1.69.0/boost/test/unit_test_log_formatter.hpp deleted file mode 100644 index 79b74e08493..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/unit_test_log_formatter.hpp +++ /dev/null @@ -1,322 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief Defines unit test log formatter interface -/// -/// You can define a class with implements this interface and use an instance of it -/// as a Unit Test Framework log formatter -// *************************************************************************** - -#ifndef BOOST_TEST_UNIT_TEST_LOG_FORMATTER_HPP_071894GER -#define BOOST_TEST_UNIT_TEST_LOG_FORMATTER_HPP_071894GER - -// Boost.Test -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/detail/log_level.hpp> -#include <boost/test/detail/fwd_decl.hpp> - -// STL -#include <iosfwd> -#include <string> // for std::string -#include <iostream> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -/// Collection of log entry attributes -// ************************************************************************** // - -struct BOOST_TEST_DECL log_entry_data { - log_entry_data() - { - m_file_name.reserve( 200 ); - } - - std::string m_file_name; ///< log entry file name - std::size_t m_line_num; ///< log entry line number - log_level m_level; ///< log entry level - - void clear() - { - m_file_name.erase(); - m_line_num = 0; - m_level = log_nothing; - } -}; - -// ************************************************************************** // -/// Collection of log checkpoint attributes -// ************************************************************************** // - -struct BOOST_TEST_DECL log_checkpoint_data -{ - const_string m_file_name; ///< log checkpoint file name - std::size_t m_line_num; ///< log checkpoint file name - std::string m_message; ///< log checkpoint message - - void clear() - { - m_file_name.clear(); - m_line_num = 0; - m_message = std::string(); - } -}; - -// ************************************************************************** // -/// @brief Abstract Unit Test Framework log formatter interface -/// -/// During the test module execution Unit Test Framework can report messages about success -/// or failure of assertions, which test suites are being run and more (specifically which -/// messages are reported depends on log level threshold selected by the user). -/// -/// All these messages constitute Unit Test Framework log. There are many ways (formats) to present -/// these messages to the user. -/// -/// Boost.Test comes with three formats: -/// - Compiler-like log format: intended for human consumption/diagnostic -/// - XML based log format: intended for processing by automated regression test systems. -/// - JUNIT based log format: intended for processing by automated regression test systems. -/// -/// If you want to produce some other format you need to implement class with specific interface and use -/// method @c unit_test_log_t::set_formatter during a test module initialization to set an active formatter. -/// The class unit_test_log_formatter defines this interface. -/// -/// This interface requires you to format all possible messages being produced in the log. -/// These includes error messages about failed assertions, messages about caught exceptions and -/// information messages about test units being started/ended. All the methods in this interface takes -/// a reference to standard stream as a first argument. This is where final messages needs to be directed -/// to. Also you are given all the information necessary to produce a message. -/// -/// @par Since Boost 1.62: -/// - Each formatter may indicate the default output stream. This is convenient for instance for streams intended -/// for automated processing that indicate a file. See @c get_default_stream_description for more details. -/// - Each formatter may manage its own log level through the getter/setter @c get_log_level and @c set_log_level . -/// -/// @see -/// - boost::unit_test::test_observer for an indication of the calls of the test observer interface -class BOOST_TEST_DECL unit_test_log_formatter { -public: - /// Types of log entries (messages written into a log) - enum log_entry_types { BOOST_UTL_ET_INFO, ///< Information message from the framework - BOOST_UTL_ET_MESSAGE, ///< Information message from the user - BOOST_UTL_ET_WARNING, ///< Warning (non error) condition notification message - BOOST_UTL_ET_ERROR, ///< Non fatal error notification message - BOOST_UTL_ET_FATAL_ERROR ///< Fatal error notification message - }; - - //! Constructor - unit_test_log_formatter() - : m_log_level(log_all_errors) - {} - - // Destructor - virtual ~unit_test_log_formatter() {} - - // @name Test start/finish - - /// Invoked at the beginning of test module execution - /// - /// @param[in] os output stream to write a messages to - /// @param[in] test_cases_amount total test case amount to be run - /// @see log_finish - virtual void log_start( std::ostream& os, counter_t test_cases_amount ) = 0; - - /// Invoked at the end of test module execution - /// - /// @param[in] os output stream to write a messages into - /// @see log_start - virtual void log_finish( std::ostream& os ) = 0; - - /// Invoked when Unit Test Framework build information is requested - /// - /// @param[in] os output stream to write a messages into - virtual void log_build_info( std::ostream& os ) = 0; - // @} - - // @name Test unit start/finish - - /// Invoked when test unit starts (either test suite or test case) - /// - /// @param[in] os output stream to write a messages into - /// @param[in] tu test unit being started - /// @see test_unit_finish - virtual void test_unit_start( std::ostream& os, test_unit const& tu ) = 0; - - /// Invoked when test unit finishes - /// - /// @param[in] os output stream to write a messages into - /// @param[in] tu test unit being finished - /// @param[in] elapsed time in microseconds spend executing this test unit - /// @see test_unit_start - virtual void test_unit_finish( std::ostream& os, test_unit const& tu, unsigned long elapsed ) = 0; - - /// Invoked if test unit skipped for any reason - /// - /// @param[in] os output stream to write a messages into - /// @param[in] tu skipped test unit - /// @param[in] reason explanation why was it skipped - virtual void test_unit_skipped( std::ostream& os, test_unit const& tu, const_string /* reason */) - { - test_unit_skipped( os, tu ); - } - - /// Deprecated version of this interface - virtual void test_unit_skipped( std::ostream& /* os */, test_unit const& /* tu */) {} - - /// Invoked when a test unit is aborted - virtual void test_unit_aborted( std::ostream& /* os */, test_unit const& /* tu */) {} - - // @} - - // @name Uncaught exception report - - /// Invoked when Unit Test Framework detects uncaught exception - /// - /// The framwork calls this function when an uncaught exception it detected. - /// This call is followed by context information: - /// - one call to @c entry_context_start, - /// - as many calls to @c log_entry_context as there are context entries - /// - one call to @c entry_context_finish - /// - /// The logging of the exception information is finilized by a call to @c log_exception_finish. - /// - /// @param[in] os output stream to write a messages into - /// @param[in] lcd information about the last checkpoint before the exception was triggered - /// @param[in] ex information about the caught exception - /// @see log_exception_finish - virtual void log_exception_start( std::ostream& os, log_checkpoint_data const& lcd, execution_exception const& ex ) = 0; - - /// Invoked when Unit Test Framework detects uncaught exception - /// - /// Call to this function finishes uncaught exception report. - /// @param[in] os output stream to write a messages into - /// @see log_exception_start - virtual void log_exception_finish( std::ostream& os ) = 0; - // @} - - // @name Regular log entry - - /// Invoked by Unit Test Framework to start new log entry - - /// Call to this function starts new log entry. It is followed by series of log_entry_value calls and finally call to log_entry_finish. - /// A log entry may consist of one or more values being reported. Some of these values will be plain strings, while others can be complicated - /// expressions in a form of "lazy" expression template lazy_ostream. - /// @param[in] os output stream to write a messages into - /// @param[in] led log entry attributes - /// @param[in] let log entry type log_entry_finish - /// @see log_entry_value, log_entry_finish - /// - /// @note call to this function may happen before any call to test_unit_start or all calls to test_unit_finish as the - /// framework might log errors raised during global initialization/shutdown. - virtual void log_entry_start( std::ostream& os, log_entry_data const& led, log_entry_types let ) = 0; - - /// Invoked by Unit Test Framework to report a log entry content - /// - /// This is one of two overloaded methods to report log entry content. This one is used to report plain string value. - /// @param[in] os output stream to write a messages into. - /// @param[in] value log entry string value - /// @see log_entry_start, log_entry_finish - virtual void log_entry_value( std::ostream& os, const_string value ) = 0; - - /// Invoked by Unit Test Framework to report a log entry content - - /// This is one of two overloaded methods to report log entry content. This one is used to report some complicated expression passed as - /// an expression template lazy_ostream. In most cases default implementation provided by the framework should work as is (it just converts - /// the lazy expression into a string. - /// @param[in] os output stream to write a messages into - /// @param[in] value log entry "lazy" value - /// @see log_entry_start, log_entry_finish - virtual void log_entry_value( std::ostream& os, lazy_ostream const& value ); // there is a default impl - - /// Invoked by Unit Test Framework to finish a log entry report - - /// @param[in] os output stream to write a messages into - /// @see log_entry_start, log_entry_start - virtual void log_entry_finish( std::ostream& os ) = 0; - // @} - - // @name Log entry context report - - /// Invoked by Unit Test Framework to start log entry context report - // - /// Unit Test Framework logs for failed assertions and uncaught exceptions context if one was defined by a test module. - /// Context consists of multiple "scopes" identified by description messages assigned by the test module using - /// BOOST_TEST_INFO/BOOST_TEST_CONTEXT statements. - /// @param[in] os output stream to write a messages into - /// @param[in] l entry log_level, to be used to fine tune the message - /// @see log_entry_context, entry_context_finish - virtual void entry_context_start( std::ostream& os, log_level l ) = 0; - - /// Invoked by Unit Test Framework to report log entry context "scope" description - // - /// Each "scope" description is reported by separate call to log_entry_context. - /// @param[in] os output stream to write a messages into - /// @param[in] l entry log_level, to be used to fine tune the message - /// @param[in] value context "scope" description - /// @see log_entry_start, entry_context_finish - virtual void log_entry_context( std::ostream& os, log_level l, const_string value ) = 0; - - /// Invoked by Unit Test Framework to finish log entry context report - /// - /// @param[in] os output stream to write a messages into - /// @param[in] l entry log_level, to be used to fine tune the message - /// @see log_entry_start, entry_context_context - virtual void entry_context_finish( std::ostream& os, log_level l ) = 0; - // @} - - // @name Log level management - - /// Sets the log level of the logger/formatter - /// - /// Some loggers need to manage the log level by their own. This - /// member function let the implementation decide of that. - /// @par Since Boost 1.62 - virtual void set_log_level(log_level new_log_level); - - /// Returns the log level of the logger/formatter - /// @par Since Boost 1.62 - virtual log_level get_log_level() const; - // @} - - - // @name Stream management - - /// Returns a default stream for this logger. - /// - /// The returned string describes the stream as if it was passed from - /// the command line @c "--log_sink" parameter. With that regards, @b stdout and @b stderr - /// have special meaning indicating the standard output or error stream respectively. - /// - /// @par Since Boost 1.62 - virtual std::string get_default_stream_description() const - { - return "stdout"; - } - - // @} - - -protected: - log_level m_log_level; - -}; - -} // namespace unit_test -} // namespace boost - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UNIT_TEST_LOG_FORMATTER_HPP_071894GER - diff --git a/src/third_party/boost-1.69.0/boost/test/unit_test_monitor.hpp b/src/third_party/boost-1.69.0/boost/test/unit_test_monitor.hpp deleted file mode 100644 index b056051cafa..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/unit_test_monitor.hpp +++ /dev/null @@ -1,61 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief defines specific version of execution monitor used to managed run unit of test cases -/// -/// Translates execution exception into error level -// *************************************************************************** - -#ifndef BOOST_TEST_UNIT_TEST_MONITOR_HPP_020905GER -#define BOOST_TEST_UNIT_TEST_MONITOR_HPP_020905GER - -// Boost.Test -#include <boost/test/execution_monitor.hpp> -#include <boost/test/detail/fwd_decl.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** unit_test_monitor ************** // -// ************************************************************************** // - -class BOOST_TEST_DECL unit_test_monitor_t :public execution_monitor { -public: - enum error_level { - test_ok = 0, - /// Indicates a failure to prepare the unit test (eg. fixture). Does not - /// account for tests skipped because of parent tests failed/skipped. - test_setup_failure = -1, - unexpected_exception = -2, - os_exception = -3, - os_timeout = -4, - fatal_error = -5 // includes both system and user - }; - - static bool is_critical_error( error_level e ) { return e <= fatal_error; } - - // monitor method - error_level execute_and_translate( boost::function<void ()> const& func, unsigned timeout = 0 ); - - // singleton pattern - BOOST_TEST_SINGLETON_CONS( unit_test_monitor_t ) -}; - -BOOST_TEST_SINGLETON_INST( unit_test_monitor ) - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UNIT_TEST_MONITOR_HPP_020905GER diff --git a/src/third_party/boost-1.69.0/boost/test/unit_test_parameters.hpp b/src/third_party/boost-1.69.0/boost/test/unit_test_parameters.hpp deleted file mode 100644 index e7e60d344f0..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/unit_test_parameters.hpp +++ /dev/null @@ -1,168 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief Provides access to various Unit Test Framework runtime parameters -/// -/// Primarily for use by the framework itself -// *************************************************************************** - -#ifndef BOOST_TEST_UNIT_TEST_PARAMETERS_HPP_071894GER -#define BOOST_TEST_UNIT_TEST_PARAMETERS_HPP_071894GER - -// Boost.Test -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/utils/runtime/argument.hpp> -#include <boost/make_shared.hpp> - -// Boost -#include <boost/function/function0.hpp> - -// STL -#include <iostream> -#include <fstream> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace runtime_config { - -// ************************************************************************** // -// ************** runtime_config ************** // -// ************************************************************************** // - -// UTF parameters -BOOST_TEST_DECL extern std::string btrt_auto_start_dbg; -BOOST_TEST_DECL extern std::string btrt_break_exec_path; -BOOST_TEST_DECL extern std::string btrt_build_info; -BOOST_TEST_DECL extern std::string btrt_catch_sys_errors; -BOOST_TEST_DECL extern std::string btrt_color_output; -BOOST_TEST_DECL extern std::string btrt_detect_fp_except; -BOOST_TEST_DECL extern std::string btrt_detect_mem_leaks; -BOOST_TEST_DECL extern std::string btrt_list_content; -BOOST_TEST_DECL extern std::string btrt_list_labels; -BOOST_TEST_DECL extern std::string btrt_log_format; -BOOST_TEST_DECL extern std::string btrt_log_level; -BOOST_TEST_DECL extern std::string btrt_log_sink; -BOOST_TEST_DECL extern std::string btrt_combined_logger; -BOOST_TEST_DECL extern std::string btrt_output_format; -BOOST_TEST_DECL extern std::string btrt_random_seed; -BOOST_TEST_DECL extern std::string btrt_report_format; -BOOST_TEST_DECL extern std::string btrt_report_level; -BOOST_TEST_DECL extern std::string btrt_report_mem_leaks; -BOOST_TEST_DECL extern std::string btrt_report_sink; -BOOST_TEST_DECL extern std::string btrt_result_code; -BOOST_TEST_DECL extern std::string btrt_run_filters; -BOOST_TEST_DECL extern std::string btrt_save_test_pattern; -BOOST_TEST_DECL extern std::string btrt_show_progress; -BOOST_TEST_DECL extern std::string btrt_use_alt_stack; -BOOST_TEST_DECL extern std::string btrt_wait_for_debugger; -BOOST_TEST_DECL extern std::string btrt_help; -BOOST_TEST_DECL extern std::string btrt_usage; -BOOST_TEST_DECL extern std::string btrt_version; - -BOOST_TEST_DECL void init( int& argc, char** argv ); - -// ************************************************************************** // -// ************** runtime_param::get ************** // -// ************************************************************************** // - -/// Access to arguments -BOOST_TEST_DECL runtime::arguments_store const& argument_store(); - -template<typename T> -inline T const& -get( runtime::cstring parameter_name ) -{ - return argument_store().get<T>( parameter_name ); -} - -inline bool has( runtime::cstring parameter_name ) -{ - return argument_store().has( parameter_name ); -} - -/// For public access -BOOST_TEST_DECL bool save_pattern(); - -// ************************************************************************** // -// ************** stream_holder ************** // -// ************************************************************************** // - -class stream_holder { -public: - // Constructor - explicit stream_holder( std::ostream& default_stream = std::cout ) - : m_stream( &default_stream ) - { - } - - void setup( const const_string& stream_name, - boost::function<void ()> const &cleaner_callback = boost::function<void ()>() ) - { - if(stream_name.empty()) - return; - - if( stream_name == "stderr" ) { - m_stream = &std::cerr; - if(cleaner_callback) { - m_cleaner = boost::make_shared<callback_cleaner>(cleaner_callback); - } - else { - m_cleaner.reset(); - } - } - else if( stream_name == "stdout" ) { - m_stream = &std::cout; - if (cleaner_callback) { - m_cleaner = boost::make_shared<callback_cleaner>(cleaner_callback); - } - else { - m_cleaner.reset(); - } - } - else { - m_cleaner = boost::make_shared<callback_cleaner>(cleaner_callback); - m_cleaner->m_file.open( std::string(stream_name.begin(), stream_name.end()).c_str() ); - m_stream = &m_cleaner->m_file; - } - } - - // Access methods - std::ostream& ref() const { return *m_stream; } - -private: - struct callback_cleaner { - callback_cleaner(boost::function<void ()> cleaner_callback) - : m_cleaner_callback(cleaner_callback) - , m_file() { - } - ~callback_cleaner() { - if( m_cleaner_callback ) - m_cleaner_callback(); - } - boost::function<void ()> m_cleaner_callback; - std::ofstream m_file; - }; - - // Data members - boost::shared_ptr<callback_cleaner> m_cleaner; - std::ostream* m_stream; -}; - -} // namespace runtime_config -} // namespace unit_test -} // namespace boost - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UNIT_TEST_PARAMETERS_HPP_071894GER diff --git a/src/third_party/boost-1.69.0/boost/test/unit_test_suite.hpp b/src/third_party/boost-1.69.0/boost/test/unit_test_suite.hpp deleted file mode 100644 index 698362e5881..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/unit_test_suite.hpp +++ /dev/null @@ -1,405 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// @brief Defines Unit Test Framework public API -// *************************************************************************** - -#ifndef BOOST_TEST_UNIT_TEST_SUITE_HPP_071894GER -#define BOOST_TEST_UNIT_TEST_SUITE_HPP_071894GER - -// Boost.Test -#include <boost/test/framework.hpp> -#include <boost/test/tree/auto_registration.hpp> -#include <boost/test/tree/test_case_template.hpp> -#include <boost/test/tree/global_fixture.hpp> - - -#include <boost/test/detail/suppress_warnings.hpp> - - -#include <boost/test/detail/pp_variadic.hpp> - - - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** Non-auto (explicit) test case interface ************** // -// ************************************************************************** // - -#define BOOST_TEST_CASE_NAME( test_function, test_name ) \ -boost::unit_test::make_test_case( boost::function<void ()>(test_function), \ - test_name , \ - __FILE__, __LINE__ ) -#define BOOST_TEST_CASE( test_function ) \ -BOOST_TEST_CASE_NAME(test_function, BOOST_TEST_STRINGIZE( test_function) ) -#define BOOST_CLASS_TEST_CASE( test_function, tc_instance ) \ -boost::unit_test::make_test_case( (test_function), \ - BOOST_TEST_STRINGIZE( test_function ), \ - __FILE__, __LINE__, tc_instance ) - -// ************************************************************************** // -// ************** BOOST_TEST_SUITE ************** // -// ************************************************************************** // - -#define BOOST_TEST_SUITE( testsuite_name ) \ -( new boost::unit_test::test_suite( testsuite_name, __FILE__, __LINE__ ) ) - -// ************************************************************************** // -// ************** BOOST_AUTO_TEST_SUITE ************** // -// ************************************************************************** // - -#define BOOST_AUTO_TEST_SUITE_WITH_DECOR( suite_name, decorators ) \ -namespace suite_name { \ -BOOST_AUTO_TU_REGISTRAR( suite_name )( \ - BOOST_STRINGIZE( suite_name ), \ - __FILE__, __LINE__, \ - decorators ); \ -/**/ - -#define BOOST_AUTO_TEST_SUITE_NO_DECOR( suite_name ) \ - BOOST_AUTO_TEST_SUITE_WITH_DECOR( \ - suite_name, \ - boost::unit_test::decorator::collector_t::instance() ) \ -/**/ - -#if BOOST_PP_VARIADICS -#define BOOST_AUTO_TEST_SUITE( ... ) \ - BOOST_TEST_INVOKE_IF_N_ARGS( 1, \ - BOOST_AUTO_TEST_SUITE_NO_DECOR, \ - BOOST_AUTO_TEST_SUITE_WITH_DECOR, \ - __VA_ARGS__) \ -/**/ - -#else /* BOOST_PP_VARIADICS */ - -#define BOOST_AUTO_TEST_SUITE( suite_name ) \ - BOOST_AUTO_TEST_SUITE_NO_DECOR( suite_name ) \ -/**/ - - -#endif /* BOOST_PP_VARIADICS */ - -// ************************************************************************** // -// ************** BOOST_FIXTURE_TEST_SUITE ************** // -// ************************************************************************** // - -#define BOOST_FIXTURE_TEST_SUITE_WITH_DECOR(suite_name, F, decorators) \ - BOOST_AUTO_TEST_SUITE_WITH_DECOR( suite_name, decorators ) \ -typedef F BOOST_AUTO_TEST_CASE_FIXTURE; \ -/**/ - -#define BOOST_FIXTURE_TEST_SUITE_NO_DECOR( suite_name, F ) \ - BOOST_AUTO_TEST_SUITE_NO_DECOR( suite_name ) \ -typedef F BOOST_AUTO_TEST_CASE_FIXTURE; \ -/**/ - -#if BOOST_PP_VARIADICS - -#define BOOST_FIXTURE_TEST_SUITE( ... ) \ - BOOST_TEST_INVOKE_IF_N_ARGS( 2, \ - BOOST_FIXTURE_TEST_SUITE_NO_DECOR, \ - BOOST_FIXTURE_TEST_SUITE_WITH_DECOR, \ - __VA_ARGS__) \ -/**/ - -#else /* BOOST_PP_VARIADICS */ - -#define BOOST_FIXTURE_TEST_SUITE( suite_name, F ) \ - BOOST_FIXTURE_TEST_SUITE_NO_DECOR( suite_name, F ) \ -/**/ - - -#endif /* BOOST_PP_VARIADICS */ - - -// ************************************************************************** // -// ************** BOOST_AUTO_TEST_SUITE_END ************** // -// ************************************************************************** // - -#define BOOST_AUTO_TEST_SUITE_END() \ -BOOST_AUTO_TU_REGISTRAR( end_suite )( 1 ); \ -} \ -/**/ - -// ************************************************************************** // -// ************** BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES ************** // -// ************************************************************************** // - -/// @deprecated use decorator instead -#define BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( test_name, n ) \ -BOOST_TEST_DECORATOR( * boost::unit_test::expected_failures( n ) ) \ -/**/ - -// ************************************************************************** // -// ************** BOOST_FIXTURE_TEST_CASE ************** // -// ************************************************************************** // - -#define BOOST_FIXTURE_TEST_CASE_WITH_DECOR( test_name, F, decorators ) \ -struct test_name : public F { void test_method(); }; \ - \ -static void BOOST_AUTO_TC_INVOKER( test_name )() \ -{ \ - BOOST_TEST_CHECKPOINT('"' << #test_name << "\" fixture ctor"); \ - test_name t; \ - BOOST_TEST_CHECKPOINT('"' << #test_name << "\" fixture setup"); \ - boost::unit_test::setup_conditional(t); \ - BOOST_TEST_CHECKPOINT('"' << #test_name << "\" test entry"); \ - t.test_method(); \ - BOOST_TEST_CHECKPOINT('"' << #test_name << "\" fixture teardown"); \ - boost::unit_test::teardown_conditional(t); \ - BOOST_TEST_CHECKPOINT('"' << #test_name << "\" fixture dtor"); \ -} \ - \ -struct BOOST_AUTO_TC_UNIQUE_ID( test_name ) {}; \ - \ -BOOST_AUTO_TU_REGISTRAR( test_name )( \ - boost::unit_test::make_test_case( \ - &BOOST_AUTO_TC_INVOKER( test_name ), \ - #test_name, __FILE__, __LINE__ ), \ - decorators ); \ - \ -void test_name::test_method() \ -/**/ - -#define BOOST_FIXTURE_TEST_CASE_NO_DECOR( test_name, F ) \ -BOOST_FIXTURE_TEST_CASE_WITH_DECOR( test_name, F, \ - boost::unit_test::decorator::collector_t::instance() ) \ -/**/ - -#if BOOST_PP_VARIADICS - -#define BOOST_FIXTURE_TEST_CASE( ... ) \ - BOOST_TEST_INVOKE_IF_N_ARGS( 2, \ - BOOST_FIXTURE_TEST_CASE_NO_DECOR, \ - BOOST_FIXTURE_TEST_CASE_WITH_DECOR, \ - __VA_ARGS__) \ -/**/ - -#else /* BOOST_PP_VARIADICS */ - -#define BOOST_FIXTURE_TEST_CASE( test_name, F ) \ - BOOST_FIXTURE_TEST_CASE_NO_DECOR(test_name, F) \ -/**/ - - -#endif /* BOOST_PP_VARIADICS */ - -// ************************************************************************** // -// ************** BOOST_AUTO_TEST_CASE ************** // -// ************************************************************************** // - -#define BOOST_AUTO_TEST_CASE_NO_DECOR( test_name ) \ - BOOST_FIXTURE_TEST_CASE_NO_DECOR( test_name, \ - BOOST_AUTO_TEST_CASE_FIXTURE ) \ -/**/ - -#define BOOST_AUTO_TEST_CASE_WITH_DECOR( test_name, decorators ) \ - BOOST_FIXTURE_TEST_CASE_WITH_DECOR( test_name, \ - BOOST_AUTO_TEST_CASE_FIXTURE, decorators ) \ -/**/ - -#if BOOST_PP_VARIADICS - -#define BOOST_AUTO_TEST_CASE( ... ) \ - BOOST_TEST_INVOKE_IF_N_ARGS( 1, \ - BOOST_AUTO_TEST_CASE_NO_DECOR, \ - BOOST_AUTO_TEST_CASE_WITH_DECOR, \ - __VA_ARGS__) \ -/**/ - -#else /* BOOST_PP_VARIADICS */ - -#define BOOST_AUTO_TEST_CASE( test_name ) \ - BOOST_AUTO_TEST_CASE_NO_DECOR( test_name ) \ -/**/ - - -#endif /* BOOST_PP_VARIADICS */ - -// ************************************************************************** // -// ************** BOOST_FIXTURE_TEST_CASE_TEMPLATE ************** // -// ************************************************************************** // - -#define BOOST_FIXTURE_TEST_CASE_TEMPLATE( test_name, type_name, TL, F ) \ -template<typename type_name> \ -struct test_name : public F \ -{ void test_method(); }; \ - \ -struct BOOST_AUTO_TC_INVOKER( test_name ) { \ - template<typename TestType> \ - static void run( boost::type<TestType>* = 0 ) \ - { \ - BOOST_TEST_CHECKPOINT('"' << #test_name <<"\" fixture entry."); \ - test_name<TestType> t; boost::unit_test::setup_conditional(t); \ - BOOST_TEST_CHECKPOINT('"' << #test_name << "\" entry."); \ - t.test_method(); \ - BOOST_TEST_CHECKPOINT('"' << #test_name << "\" exit."); \ - boost::unit_test::teardown_conditional(t); \ - } \ -}; \ - \ -BOOST_AUTO_TU_REGISTRAR( test_name )( \ - boost::unit_test::ut_detail::template_test_case_gen< \ - BOOST_AUTO_TC_INVOKER( test_name ),TL >( \ - BOOST_STRINGIZE( test_name ), __FILE__, __LINE__ ), \ - boost::unit_test::decorator::collector_t::instance() ); \ - \ -template<typename type_name> \ -void test_name<type_name>::test_method() \ -/**/ - -// ************************************************************************** // -// ************** BOOST_AUTO_TEST_CASE_TEMPLATE ************** // -// ************************************************************************** // - -#define BOOST_AUTO_TEST_CASE_TEMPLATE( test_name, type_name, TL ) \ -BOOST_FIXTURE_TEST_CASE_TEMPLATE( test_name, type_name, TL, \ - BOOST_AUTO_TEST_CASE_FIXTURE ) \ -/**/ - -// ************************************************************************** // -// ************** BOOST_TEST_CASE_TEMPLATE ************** // -// ************************************************************************** // - -#define BOOST_TEST_CASE_TEMPLATE( name, typelist ) \ - boost::unit_test::ut_detail::template_test_case_gen<name,typelist>( \ - BOOST_TEST_STRINGIZE( name ), __FILE__, __LINE__ ) \ -/**/ - -// ************************************************************************** // -// ************** BOOST_TEST_CASE_TEMPLATE_FUNCTION ************** // -// ************************************************************************** // - -#define BOOST_TEST_CASE_TEMPLATE_FUNCTION( name, type_name ) \ -template<typename type_name> \ -void BOOST_JOIN( name, _impl )( boost::type<type_name>* ); \ - \ -struct name { \ - template<typename TestType> \ - static void run( boost::type<TestType>* frwrd = 0 ) \ - { \ - BOOST_JOIN( name, _impl )( frwrd ); \ - } \ -}; \ - \ -template<typename type_name> \ -void BOOST_JOIN( name, _impl )( boost::type<type_name>* ) \ -/**/ - -// ************************************************************************** // -// ************** BOOST_GLOBAL_FIXTURE ************** // -// ************************************************************************** // - -#define BOOST_GLOBAL_FIXTURE( F ) \ -static boost::unit_test::ut_detail::global_configuration_impl<F> BOOST_JOIN( gf_, F ) \ -/**/ - -// ************************************************************************** // -// ************** BOOST_TEST_GLOBAL_CONFIGURATION ************** // -// ************************************************************************** // - -#define BOOST_TEST_GLOBAL_CONFIGURATION( F ) \ -static boost::unit_test::ut_detail::global_configuration_impl<F> BOOST_JOIN( gf_, F ) \ -/**/ - -// ************************************************************************** // -// ************** BOOST_TEST_GLOBAL_FIXTURE ************** // -// ************************************************************************** // - -#define BOOST_TEST_GLOBAL_FIXTURE( F ) \ -static boost::unit_test::ut_detail::global_fixture_impl<F> BOOST_JOIN( gf_, F ) \ -/**/ - -// ************************************************************************** // -// ************** BOOST_TEST_DECORATOR ************** // -// ************************************************************************** // - -#define BOOST_TEST_DECORATOR( D ) \ -static boost::unit_test::decorator::collector_t const& \ -BOOST_TEST_APPEND_UNIQUE_ID(decorator_collector) = D; \ -/**/ - -// ************************************************************************** // -// ************** BOOST_AUTO_TEST_CASE_FIXTURE ************** // -// ************************************************************************** // - -namespace boost { namespace unit_test { namespace ut_detail { - -struct nil_t {}; - -} // namespace ut_detail -} // unit_test -} // namespace boost - -// Intentionally is in global namespace, so that FIXTURE_TEST_SUITE can reset it in user code. -typedef ::boost::unit_test::ut_detail::nil_t BOOST_AUTO_TEST_CASE_FIXTURE; - -// ************************************************************************** // -// ************** Auto registration facility helper macros ************** // -// ************************************************************************** // - -// Facility for having a unique name based on __LINE__ and __COUNTER__ (later if available) -#if defined(__COUNTER__) - #define BOOST_TEST_INTERNAL_HAS_COUNTER -#endif - -#if defined(BOOST_TEST_INTERNAL_HAS_COUNTER) - #define BOOST_TEST_APPEND_UNIQUE_ID( name ) \ - BOOST_JOIN( BOOST_JOIN( name, __LINE__ ), __COUNTER__) - /**/ -#else - #define BOOST_TEST_APPEND_UNIQUE_ID( name ) \ - BOOST_JOIN( name, __LINE__ ) - /**/ -#endif -/**/ - -#define BOOST_AUTO_TU_REGISTRAR( test_name ) \ -static boost::unit_test::ut_detail::auto_test_unit_registrar \ -BOOST_TEST_APPEND_UNIQUE_ID( BOOST_JOIN( test_name, _registrar ) ) \ -/**/ -#define BOOST_AUTO_TC_INVOKER( test_name ) BOOST_JOIN( test_name, _invoker ) -#define BOOST_AUTO_TC_UNIQUE_ID( test_name ) BOOST_JOIN( test_name, _id ) - -// ************************************************************************** // -// ************** BOOST_TEST_MAIN ************** // -// ************************************************************************** // - -#if defined(BOOST_TEST_MAIN) - -#ifdef BOOST_TEST_ALTERNATIVE_INIT_API -bool init_unit_test() { -#else -::boost::unit_test::test_suite* -init_unit_test_suite( int, char* [] ) { -#endif - -#ifdef BOOST_TEST_MODULE - using namespace ::boost::unit_test; - assign_op( framework::master_test_suite().p_name.value, BOOST_TEST_STRINGIZE( BOOST_TEST_MODULE ).trim( "\"" ), 0 ); - -#endif - -#ifdef BOOST_TEST_ALTERNATIVE_INIT_API - return true; -} -#else - return 0; -} -#endif - -#endif - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - - -#endif // BOOST_TEST_UNIT_TEST_SUITE_HPP_071894GER - diff --git a/src/third_party/boost-1.69.0/boost/test/utils/algorithm.hpp b/src/third_party/boost-1.69.0/boost/test/utils/algorithm.hpp deleted file mode 100644 index 7f16816c3a9..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/algorithm.hpp +++ /dev/null @@ -1,326 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -/// @file -/// Addition to STL algorithms -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_ALGORITHM_HPP -#define BOOST_TEST_UTILS_ALGORITHM_HPP - -// STL -#include <utility> -#include <algorithm> // std::find -#include <functional> // std::bind1st or std::bind - -#include <boost/test/detail/suppress_warnings.hpp> - -#ifdef BOOST_NO_CXX98_BINDERS -#define BOOST_TEST_BIND1ST(F,A) std::bind( (F), (A), std::placeholders::_1 ) -#else -#define BOOST_TEST_BIND1ST(F,A) std::bind1st( (F), (A) ) -#endif - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace utils { - -/// @brief this algorithm search through two collections for first mismatch position that get returned as a pair -/// of iterators, first pointing to the mismatch position in first collection, second iterator in second one -/// -/// @param first1 - first collection begin iterator -/// @param last1 - first collection end iterator -/// @param first2 - second collection begin iterator -/// @param last2 - second collection end iterator -template <class InputIter1, class InputIter2> -inline std::pair<InputIter1, InputIter2> -mismatch( InputIter1 first1, InputIter1 last1, - InputIter2 first2, InputIter2 last2 ) -{ - while( first1 != last1 && first2 != last2 && *first1 == *first2 ) { - ++first1; - ++first2; - } - - return std::pair<InputIter1, InputIter2>(first1, first2); -} - -//____________________________________________________________________________// - -/// @brief this algorithm search through two collections for first mismatch position that get returned as a pair -/// of iterators, first pointing to the mismatch position in first collection, second iterator in second one. This algorithms -/// uses supplied predicate for collection elements comparison -/// -/// @param first1 - first collection begin iterator -/// @param last1 - first collection end iterator -/// @param first2 - second collection begin iterator -/// @param last2 - second collection end iterator -/// @param pred - predicate to be used for search -template <class InputIter1, class InputIter2, class Predicate> -inline std::pair<InputIter1, InputIter2> -mismatch( InputIter1 first1, InputIter1 last1, - InputIter2 first2, InputIter2 last2, - Predicate pred ) -{ - while( first1 != last1 && first2 != last2 && pred( *first1, *first2 ) ) { - ++first1; - ++first2; - } - - return std::pair<InputIter1, InputIter2>(first1, first2); -} - -//____________________________________________________________________________// - -/// @brief this algorithm search through first collection for first element that does not belong a second one -/// -/// @param first1 - first collection begin iterator -/// @param last1 - first collection end iterator -/// @param first2 - second collection begin iterator -/// @param last2 - second collection end iterator -template<class ForwardIterator1, class ForwardIterator2> -inline ForwardIterator1 -find_first_not_of( ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2 ) -{ - while( first1 != last1 ) { - if( std::find( first2, last2, *first1 ) == last2 ) - break; - ++first1; - } - - return first1; -} - -//____________________________________________________________________________// - -/// @brief this algorithm search through first collection for first element that does not satisfy binary -/// predicate in conjunction will any element in second collection -/// -/// @param first1 - first collection begin iterator -/// @param last1 - first collection end iterator -/// @param first2 - second collection begin iterator -/// @param last2 - second collection end iterator -/// @param pred - predicate to be used for search -template<class ForwardIterator1, class ForwardIterator2, class Predicate> -inline ForwardIterator1 -find_first_not_of( ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - Predicate pred ) -{ - while( first1 != last1 ) { - if( std::find_if( first2, last2, BOOST_TEST_BIND1ST( pred, *first1 ) ) == last2 ) - break; - ++first1; - } - - return first1; -} - -//____________________________________________________________________________// - -/// @brief this algorithm search through first collection for last element that belongs to a second one -/// -/// @param first1 - first collection begin iterator -/// @param last1 - first collection end iterator -/// @param first2 - second collection begin iterator -/// @param last2 - second collection end iterator -template<class BidirectionalIterator1, class ForwardIterator2> -inline BidirectionalIterator1 -find_last_of( BidirectionalIterator1 first1, BidirectionalIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2 ) -{ - if( first1 == last1 || first2 == last2 ) - return last1; - - BidirectionalIterator1 it1 = last1; - while( --it1 != first1 && std::find( first2, last2, *it1 ) == last2 ) {} - - return it1 == first1 && std::find( first2, last2, *it1 ) == last2 ? last1 : it1; -} - -//____________________________________________________________________________// - -/// @brief this algorithm search through first collection for last element that satisfy binary -/// predicate in conjunction will at least one element in second collection -/// -/// @param first1 - first collection begin iterator -/// @param last1 - first collection end iterator -/// @param first2 - second collection begin iterator -/// @param last2 - second collection end iterator -/// @param pred - predicate to be used for search -template<class BidirectionalIterator1, class ForwardIterator2, class Predicate> -inline BidirectionalIterator1 -find_last_of( BidirectionalIterator1 first1, BidirectionalIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - Predicate pred ) -{ - if( first1 == last1 || first2 == last2 ) - return last1; - - BidirectionalIterator1 it1 = last1; - while( --it1 != first1 && std::find_if( first2, last2, BOOST_TEST_BIND1ST( pred, *it1 ) ) == last2 ) {} - - return it1 == first1 && std::find_if( first2, last2, BOOST_TEST_BIND1ST( pred, *it1 ) ) == last2 ? last1 : it1; -} - -//____________________________________________________________________________// - -/// @brief this algorithm search through first collection for last element that does not belong to a second one -/// -/// @param first1 - first collection begin iterator -/// @param last1 - first collection end iterator -/// @param first2 - second collection begin iterator -/// @param last2 - second collection end iterator -template<class BidirectionalIterator1, class ForwardIterator2> -inline BidirectionalIterator1 -find_last_not_of( BidirectionalIterator1 first1, BidirectionalIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2 ) -{ - if( first1 == last1 || first2 == last2 ) - return last1; - - BidirectionalIterator1 it1 = last1; - while( --it1 != first1 && std::find( first2, last2, *it1 ) != last2 ) {} - - return it1 == first1 && std::find( first2, last2, *it1 ) != last2 ? last1 : it1; -} - -//____________________________________________________________________________// - -/// @brief this algorithm search through first collection for last element that does not satisfy binary -/// predicate in conjunction will any element in second collection -/// -/// @param first1 - first collection begin iterator -/// @param last1 - first collection end iterator -/// @param first2 - second collection begin iterator -/// @param last2 - second collection end iterator -/// @param pred - predicate to be used for search -template<class BidirectionalIterator1, class ForwardIterator2, class Predicate> -inline BidirectionalIterator1 -find_last_not_of( BidirectionalIterator1 first1, BidirectionalIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - Predicate pred ) -{ - if( first1 == last1 || first2 == last2 ) - return last1; - - BidirectionalIterator1 it1 = last1; - while( --it1 != first1 && std::find_if( first2, last2, BOOST_TEST_BIND1ST( pred, *it1 ) ) != last2 ) {} - - return it1 == first1 && std::find_if( first2, last2, BOOST_TEST_BIND1ST( pred, *it1 ) ) == last2 ? last1 : it1; -} - -//____________________________________________________________________________// - - -/// @brief This algorithm replaces all occurrences of a set of substrings by another substrings -/// -/// @param str - string of operation -/// @param first1 - iterator to the beginning of the substrings to replace -/// @param last1 - iterator to the end of the substrings to replace -/// @param first2 - iterator to the beginning of the substrings to replace with -/// @param last2 - iterator to the end of the substrings to replace with -template<class StringClass, class ForwardIterator> -inline StringClass -replace_all_occurrences_of( StringClass str, - ForwardIterator first1, ForwardIterator last1, - ForwardIterator first2, ForwardIterator last2) -{ - for(; first1 != last1 && first2 != last2; ++first1, ++first2) { - std::size_t found = str.find( *first1 ); - while( found != StringClass::npos ) { - str.replace(found, first1->size(), *first2 ); - found = str.find( *first1, found + first2->size() ); - } - } - - return str; -} - -/// @brief This algorithm replaces all occurrences of a string with basic wildcards -/// with another (optionally containing wildcards as well). -/// -/// @param str - string to transform -/// @param it_string_to_find - iterator to the beginning of the substrings to replace -/// @param it_string_to_find_end - iterator to the end of the substrings to replace -/// @param it_string_to_replace - iterator to the beginning of the substrings to replace with -/// @param it_string_to_replace_end - iterator to the end of the substrings to replace with -/// -/// The wildcard is the symbol '*'. Only a unique wildcard per string is supported. The replacement -/// string may also contain a wildcard, in which case it is considered as a placeholder to the content -/// of the wildcard in the source string. -/// Example: -/// - In order to replace the occurrences of @c 'time=\"some-variable-value\"' to a constant string, -/// one may use @c 'time=\"*\"' as the string to search for, and 'time=\"0.0\"' as the replacement string. -/// - In order to replace the occurrences of 'file.cpp(XX)' per 'file.cpp:XX', where XX is a variable to keep, -/// on may use @c 'file.cpp(*)' as the string to search for, and 'file.cpp:*' as the replacement string. -template<class StringClass, class ForwardIterator> -inline StringClass -replace_all_occurrences_with_wildcards( - StringClass str, - ForwardIterator it_string_to_find, ForwardIterator it_string_to_find_end, - ForwardIterator it_string_to_replace, ForwardIterator it_string_to_replace_end) -{ - for(; it_string_to_find != it_string_to_find_end && it_string_to_replace != it_string_to_replace_end; - ++it_string_to_find, ++ it_string_to_replace) { - - std::size_t wildcard_pos = it_string_to_find->find("*"); - if(wildcard_pos == StringClass::npos) { - ForwardIterator it_to_find_current_end(it_string_to_find); - ForwardIterator it_to_replace_current_end(it_string_to_replace); - str = replace_all_occurrences_of( - str, - it_string_to_find, ++it_to_find_current_end, - it_string_to_replace, ++it_to_replace_current_end); - continue; - } - - std::size_t wildcard_pos_replace = it_string_to_replace->find("*"); - - std::size_t found_begin = str.find( it_string_to_find->substr(0, wildcard_pos) ); - while( found_begin != StringClass::npos ) { - std::size_t found_end = str.find(it_string_to_find->substr(wildcard_pos+1), found_begin + wildcard_pos + 1); // to simplify - if( found_end != StringClass::npos ) { - - if( wildcard_pos_replace == StringClass::npos ) { - StringClass replace_content = *it_string_to_replace; - str.replace( - found_begin, - found_end + (it_string_to_find->size() - wildcard_pos - 1 ) - found_begin, - replace_content); - } else { - StringClass replace_content = - it_string_to_replace->substr(0, wildcard_pos_replace) - + str.substr(found_begin + wildcard_pos, - found_end - found_begin - wildcard_pos) - + it_string_to_replace->substr(wildcard_pos_replace+1) ; - str.replace( - found_begin, - found_end + (it_string_to_find->size() - wildcard_pos - 1 ) - found_begin, - replace_content); - - } - } - - // may adapt the restart to the replacement and be more efficient - found_begin = str.find( it_string_to_find->substr(0, wildcard_pos), found_begin + 1 ); - } - } - - return str; -} - -} // namespace utils -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_ALGORITHM_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/assign_op.hpp b/src/third_party/boost-1.69.0/boost/test/utils/assign_op.hpp deleted file mode 100644 index 89d8bfa9568..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/assign_op.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : overloadable assignment -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_ASSIGN_OP_HPP -#define BOOST_TEST_UTILS_ASSIGN_OP_HPP - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** generic assign operator ************** // -// ************************************************************************** // - -// generic -template<typename T,typename S> -inline void -assign_op( T& t, S const& s, long ) -{ - t = s; -} - -//____________________________________________________________________________// - -} // namespace unit_test -} // namespace boost - -#endif // BOOST_TEST_UTILS_ASSIGN_OP_HPP - diff --git a/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/basic_cstring.hpp b/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/basic_cstring.hpp deleted file mode 100644 index cec0214b736..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/basic_cstring.hpp +++ /dev/null @@ -1,749 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : class basic_cstring wraps C string and provide std_string like -// interface -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_BASIC_CSTRING_HPP -#define BOOST_TEST_UTILS_BASIC_CSTRING_HPP - -// Boost.Test -#include <boost/test/utils/basic_cstring/basic_cstring_fwd.hpp> -#include <boost/test/utils/basic_cstring/bcs_char_traits.hpp> - -// Boost -#include <boost/type_traits/remove_cv.hpp> - -// STL -#include <string> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { - -namespace unit_test { - -// ************************************************************************** // -// ************** basic_cstring ************** // -// ************************************************************************** // - -template<typename CharT> -class basic_cstring { - typedef basic_cstring<CharT> self_type; -public: - // Subtypes - typedef ut_detail::bcs_char_traits<CharT> traits_type; - typedef typename traits_type::std_string std_string; - - typedef CharT value_type; - typedef typename remove_cv<value_type>::type value_ret_type; - typedef value_type* pointer; - typedef value_type const* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - - typedef value_type const* const_iterator; - typedef value_type* iterator; - - // !! should also present reverse_iterator, const_reverse_iterator - -#if !BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) && !defined(__DCC__) - BOOST_STATIC_CONSTANT(size_type, npos = static_cast<size_type>(-1)); -#else - // IBM/VisualAge version 6 is not able to handle enums larger than 4 bytes. - // But size_type is 8 bytes in 64bit mode. - static const size_type npos = -1 ; -#endif - - static pointer null_str(); - - // Constructors; default copy constructor is generated by compiler - basic_cstring(); - basic_cstring( basic_cstring const & ); - basic_cstring( std_string const& s ); - basic_cstring( pointer s ); - template<typename LenType> - basic_cstring( pointer s, LenType len ) : m_begin( s ), m_end( m_begin + len ) {} - basic_cstring( pointer first, pointer last ); - - // data access methods - value_ret_type operator[]( size_type index ) const; - value_ret_type at( size_type index ) const; - - // size operators - size_type size() const; - bool is_empty() const; - void clear(); - void resize( size_type new_len ); - - // !! only for STL container conformance use is_empty instead - bool empty() const; - - // Trimming - self_type& trim_right( size_type trim_size ); - self_type& trim_left( size_type trim_size ); - self_type& trim_right( iterator it ); - self_type& trim_left( iterator it ); -#if !BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(800)) - self_type& trim_left( self_type exclusions = self_type() ) ; - self_type& trim_right( self_type exclusions = self_type() ) ; - self_type& trim( self_type exclusions = self_type() ) ; -#else - // VA C++/XL C++ v6 and v8 has in this case a problem with the default arguments. - self_type& trim_left( self_type exclusions ); - self_type& trim_right( self_type exclusions ); - self_type& trim( self_type exclusions ); - self_type& trim_left() { return trim_left( self_type() ); } - self_type& trim_right() { return trim_right( self_type() ); } - self_type& trim() { return trim( self_type() ); } -#endif - - // Assignment operators - basic_cstring& operator=( self_type const& s ); - basic_cstring& operator=( std_string const& s ); - basic_cstring& operator=( pointer s ); - - template<typename CharT2> - basic_cstring& assign( basic_cstring<CharT2> const& s ) - { - return *this = basic_cstring<CharT>( s.begin(), s.end() ); - } - template<typename PosType, typename LenType> - basic_cstring& assign( self_type const& s, PosType pos, LenType len ) - { - return *this = self_type( s.m_begin + pos, len ); - } - - basic_cstring& assign( std_string const& s ); - template<typename PosType, typename LenType> - basic_cstring& assign( std_string const& s, PosType pos, LenType len ) - { - return *this = self_type( s.c_str() + pos, len ); - } - basic_cstring& assign( pointer s ); - template<typename LenType> - basic_cstring& assign( pointer s, LenType len ) - { - return *this = self_type( s, len ); - } - basic_cstring& assign( pointer f, pointer l ); - - // swapping - void swap( self_type& s ); - - // Iterators - iterator begin(); - const_iterator begin() const; - iterator end(); - const_iterator end() const; - - // !! should have rbegin, rend - - // substring search operation - size_type find( basic_cstring ) const; - size_type rfind( basic_cstring ) const; - self_type substr( size_type beg_index, size_type end_index = npos ) const; - -private: - static self_type default_trim_ex(); - - // Data members - iterator m_begin; - iterator m_end; -}; - -//____________________________________________________________________________// - -template<typename CharT> -inline typename basic_cstring<CharT>::pointer -basic_cstring<CharT>::null_str() -{ - static CharT null = 0; - return &null; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline -basic_cstring<CharT>::basic_cstring() -: m_begin( null_str() ) -, m_end( m_begin ) -{ -} - -//____________________________________________________________________________// - -template<typename CharT> -inline -basic_cstring<CharT>::basic_cstring(basic_cstring const & s) -: m_begin( s.m_begin ) -, m_end( s.m_end ) -{ -} - -//____________________________________________________________________________// - -template<typename CharT> -inline -basic_cstring<CharT>::basic_cstring( std_string const& s ) -: m_begin( s.c_str() ) -, m_end( m_begin + s.size() ) -{ -} - -//____________________________________________________________________________// - -template<typename CharT> -inline -basic_cstring<CharT>::basic_cstring( pointer s ) -: m_begin( s ? s : null_str() ) -, m_end ( m_begin + (s ? traits_type::length( s ) : 0 ) ) -{ -} - -//____________________________________________________________________________// - -template<typename CharT> -inline -basic_cstring<CharT>::basic_cstring( pointer first, pointer last ) -: m_begin( first ) -, m_end( last ) -{ -} - -//____________________________________________________________________________// - -template<typename CharT> -inline typename basic_cstring<CharT>::value_ret_type -basic_cstring<CharT>::operator[]( size_type index ) const -{ - return m_begin[index]; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline typename basic_cstring<CharT>::value_ret_type -basic_cstring<CharT>::at( size_type index ) const -{ - if( m_begin + index >= m_end ) - return static_cast<value_type>(0); - - return m_begin[index]; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline typename basic_cstring<CharT>::size_type -basic_cstring<CharT>::size() const -{ - return static_cast<size_type>(m_end - m_begin); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline bool -basic_cstring<CharT>::is_empty() const -{ - return m_end == m_begin; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline bool -basic_cstring<CharT>::empty() const -{ - return is_empty(); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline void -basic_cstring<CharT>::clear() -{ - m_begin = m_end; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline void -basic_cstring<CharT>::resize( size_type new_len ) -{ - if( m_begin + new_len < m_end ) - m_end = m_begin + new_len; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT>& -basic_cstring<CharT>::trim_left( size_type trim_size ) -{ - m_begin += trim_size; - if( m_end <= m_begin ) - clear(); - - return *this; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT>& -basic_cstring<CharT>::trim_left( iterator it ) -{ - m_begin = it; - if( m_end <= m_begin ) - clear(); - - return *this; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT>& -basic_cstring<CharT>::trim_left( basic_cstring exclusions ) -{ - if( exclusions.is_empty() ) - exclusions = default_trim_ex(); - - iterator it; - for( it = begin(); it != end(); ++it ) { - if( traits_type::find( exclusions.begin(), exclusions.size(), *it ) == reinterpret_cast<pointer>(0) ) - break; - } - - return trim_left( it ); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT>& -basic_cstring<CharT>::trim_right( size_type trim_size ) -{ - m_end -= trim_size; - if( m_end <= m_begin ) - clear(); - - return *this; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT>& -basic_cstring<CharT>::trim_right( iterator it ) -{ - m_end = it; - if( m_end <= m_begin ) - clear(); - - return *this; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT>& -basic_cstring<CharT>::trim_right( basic_cstring exclusions ) -{ - if( exclusions.is_empty() ) - exclusions = default_trim_ex(); - - iterator it; - - for( it = end()-1; it != begin()-1; --it ) { - if( self_type::traits_type::find( exclusions.begin(), exclusions.size(), *it ) == reinterpret_cast<pointer>(0) ) - break; - } - - return trim_right( it+1 ); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT>& -basic_cstring<CharT>::trim( basic_cstring exclusions ) -{ - trim_left( exclusions ); - trim_right( exclusions ); - - return *this; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT>& -basic_cstring<CharT>::operator=( basic_cstring<CharT> const& s ) -{ - m_begin = s.m_begin; - m_end = s.m_end; - - return *this; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT>& -basic_cstring<CharT>::operator=( std_string const& s ) -{ - return *this = self_type( s ); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT>& -basic_cstring<CharT>::operator=( pointer s ) -{ - return *this = self_type( s ); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT>& -basic_cstring<CharT>::assign( std_string const& s ) -{ - return *this = self_type( s ); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT>& -basic_cstring<CharT>::assign( pointer s ) -{ - return *this = self_type( s ); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT>& -basic_cstring<CharT>::assign( pointer f, pointer l ) -{ - return *this = self_type( f, l ); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline void -basic_cstring<CharT>::swap( basic_cstring<CharT>& s ) -{ - // do not want to include alogrithm - pointer tmp1 = m_begin; - pointer tmp2 = m_end; - - m_begin = s.m_begin; - m_end = s.m_end; - - s.m_begin = tmp1; - s.m_end = tmp2; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline typename basic_cstring<CharT>::iterator -basic_cstring<CharT>::begin() -{ - return m_begin; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline typename basic_cstring<CharT>::const_iterator -basic_cstring<CharT>::begin() const -{ - return m_begin; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline typename basic_cstring<CharT>::iterator -basic_cstring<CharT>::end() -{ - return m_end; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline typename basic_cstring<CharT>::const_iterator -basic_cstring<CharT>::end() const -{ - return m_end; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline typename basic_cstring<CharT>::size_type -basic_cstring<CharT>::find( basic_cstring<CharT> str ) const -{ - if( str.is_empty() || str.size() > size() ) - return static_cast<size_type>(npos); - - const_iterator it = begin(); - const_iterator last = end() - str.size() + 1; - - while( it != last ) { - if( traits_type::compare( it, str.begin(), str.size() ) == 0 ) - break; - - ++it; - } - - return it == last ? npos : static_cast<size_type>(it - begin()); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline typename basic_cstring<CharT>::size_type -basic_cstring<CharT>::rfind( basic_cstring<CharT> str ) const -{ - if( str.is_empty() || str.size() > size() ) - return static_cast<size_type>(npos); - - const_iterator it = end() - str.size(); - const_iterator last = begin()-1; - - while( it != last ) { - if( traits_type::compare( it, str.begin(), str.size() ) == 0 ) - break; - - --it; - } - - return it == last ? static_cast<size_type>(npos) : static_cast<size_type>(it - begin()); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT> -basic_cstring<CharT>::substr( size_type beg_index, size_type end_index ) const -{ - return beg_index > size() - ? self_type() - : end_index > size() - ? self_type( m_begin + beg_index, m_end ) - : self_type( m_begin + beg_index, m_begin + end_index ); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline basic_cstring<CharT> -basic_cstring<CharT>::default_trim_ex() -{ - static CharT ws[3] = { CharT(' '), CharT('\t'), CharT('\n') }; // !! wide case - - return self_type( ws, 3 ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** comparison operators ************** // -// ************************************************************************** // - -template<typename CharT1,typename CharT2> -inline bool -operator==( basic_cstring<CharT1> const& s1, basic_cstring<CharT2> const& s2 ) -{ - typedef typename basic_cstring<CharT1>::traits_type traits_type; - return s1.size() == s2.size() && - traits_type::compare( s1.begin(), s2.begin(), s1.size() ) == 0; -} - -//____________________________________________________________________________// - -template<typename CharT1,typename CharT2> -inline bool -operator==( basic_cstring<CharT1> const& s1, CharT2* s2 ) -{ -#if !defined(__DMC__) - return s1 == basic_cstring<CharT2>( s2 ); -#else - return s1 == basic_cstring<CharT2 const>( s2 ); -#endif -} - -//____________________________________________________________________________// - -template<typename CharT> -inline bool -operator==( basic_cstring<CharT> const& s1, typename basic_cstring<CharT>::std_string const& s2 ) -{ - return s1 == basic_cstring<CharT>( s2 ); -} - -//____________________________________________________________________________// - -template<typename CharT1,typename CharT2> -inline bool -operator==( CharT1* s2, basic_cstring<CharT2> const& s1 ) -{ - return s1 == s2; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline bool -operator==( typename basic_cstring<CharT>::std_string const& s2, basic_cstring<CharT> const& s1 ) -{ - return s1 == s2; -} - -//____________________________________________________________________________// - -template<typename CharT> -inline bool -operator!=( basic_cstring<CharT> const& s1, CharT* s2 ) -{ - return !(s1 == s2); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline bool -operator!=( CharT* s2, basic_cstring<CharT> const& s1 ) -{ - return !(s1 == s2); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline bool -operator!=( basic_cstring<CharT> const& s1, basic_cstring<CharT> const& s2 ) -{ - return !(s1 == s2); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline bool -operator!=( basic_cstring<CharT> const& s1, typename basic_cstring<CharT>::std_string const& s2 ) -{ - return !(s1 == s2); -} - -//____________________________________________________________________________// - -template<typename CharT> -inline bool -operator!=( typename basic_cstring<CharT>::std_string const& s2, basic_cstring<CharT> const& s1 ) -{ - return !(s1 == s2); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** first_char ************** // -// ************************************************************************** // - -template<typename CharT> -inline typename basic_cstring<CharT>::value_ret_type -first_char( basic_cstring<CharT> source ) -{ - typedef typename basic_cstring<CharT>::value_ret_type res_type; - - return source.is_empty() ? static_cast<res_type>(0) : *source.begin(); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** last_char ************** // -// ************************************************************************** // - -template<typename CharT> -inline typename basic_cstring<CharT>::value_ret_type -last_char( basic_cstring<CharT> source ) -{ - typedef typename basic_cstring<CharT>::value_ret_type res_type; - - return source.is_empty() ? static_cast<res_type>(0) : *(source.end()-1); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** assign_op ************** // -// ************************************************************************** // - -template<typename CharT1, typename CharT2> -inline void -assign_op( std::basic_string<CharT1>& target, basic_cstring<CharT2> src, int ) -{ - target.assign( src.begin(), src.size() ); -} - -//____________________________________________________________________________// - -template<typename CharT1, typename CharT2> -inline std::basic_string<CharT1>& -operator+=( std::basic_string<CharT1>& target, basic_cstring<CharT2> const& str ) -{ - target.append( str.begin(), str.end() ); - return target; -} - -//____________________________________________________________________________// - -template<typename CharT1, typename CharT2> -inline std::basic_string<CharT1> -operator+( std::basic_string<CharT1> const& lhs, basic_cstring<CharT2> const& rhs ) -{ - std::basic_string<CharT1> res( lhs ); - - res.append( rhs.begin(), rhs.end() ); - return res; -} - -//____________________________________________________________________________// - -} // namespace unit_test - -} // namespace boost - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_BASIC_CSTRING_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/basic_cstring_fwd.hpp b/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/basic_cstring_fwd.hpp deleted file mode 100644 index f0622263d19..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/basic_cstring_fwd.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : basic_cstring class wrap C string and provide std_string like -// interface -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_BASIC_CSTRING_FWD_HPP -#define BOOST_TEST_UTILS_BASIC_CSTRING_FWD_HPP - -#include <boost/detail/workaround.hpp> - -namespace boost { - -namespace unit_test { - -template<typename CharT> class basic_cstring; -typedef basic_cstring<char const> const_string; -#if BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590041)) -typedef const_string literal_string; -#else -typedef const_string const literal_string; -#endif - -typedef char const* const c_literal_string; - -} // namespace unit_test - -} // namespace boost - -#endif // BOOST_TEST_UTILS_BASIC_CSTRING_FWD_HPP - diff --git a/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/bcs_char_traits.hpp b/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/bcs_char_traits.hpp deleted file mode 100644 index eb77f474c75..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/bcs_char_traits.hpp +++ /dev/null @@ -1,150 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : generic char traits class; wraps std::char_traits -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_BCS_CHAR_TRAITS_HPP -#define BOOST_TEST_UTILS_BCS_CHAR_TRAITS_HPP - -// Boost -#include <boost/config.hpp> -#include <boost/detail/workaround.hpp> -#include <boost/test/detail/config.hpp> -#include <boost/type_traits/add_const.hpp> - -// STL -#include <string> // std::char_traits -#include <cstddef> // std::size_t - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { - -namespace unit_test { - -namespace ut_detail { - -template<typename CharT> struct bcs_base_char { typedef CharT type; }; - -template<> struct bcs_base_char<char const> { typedef char type; }; -template<> struct bcs_base_char<unsigned char> { typedef char type; }; -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551)) -template<> struct bcs_base_char<unsigned char const> { typedef char type; }; -#endif - -template<> struct bcs_base_char<wchar_t const> { typedef wchar_t type; }; - -// ************************************************************************** // -// ************** bcs_char_traits ************** // -// ************************************************************************** // - -template<typename CharT> -struct bcs_char_traits_impl -{ -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) - typedef CharT const const_char; -#else - typedef typename boost::add_const<CharT>::type const_char; -#endif - static bool eq( CharT c1, CharT c2 ) - { - return c1 == c2; - } - static bool lt( CharT c1, CharT c2 ) - { - return c1 < c2; - } - - static int compare( const_char* cstr1, const_char* cstr2, std::size_t n ) - { - while( n > 0 ) { - if( !eq( *cstr1, *cstr2 ) ) - return lt( *cstr1, *cstr2 ) ? -1 : 1; - ++cstr1; - ++cstr2; - --n; - } - - return 0; - } - - static std::size_t length( const_char* cstr ) - { - const_char null_char = CharT(); - - const_char* ptr = cstr; - while( !eq( *ptr, null_char ) ) - ++ptr; - - return ptr - cstr; - } - - static const_char* find( const_char* s, std::size_t n, CharT c ) - { - while( n > 0 ) { - if( eq( *s, c ) ) - return s; - - ++s; - --n; - } - return 0; - } -}; - -#ifdef BOOST_CLASSIC_IOSTREAMS -template<typename CharT> -struct char_traits_with_find : std::string_char_traits<CharT> { - static CharT const* find( CharT const* s, std::size_t n, CharT c ) - { - while( n > 0 ) { - if( eq( *s, c ) ) - return s; - - ++s; - --n; - } - return 0; - } -}; - -template<> struct bcs_char_traits_impl<char> : public char_traits_with_find<char> {}; -template<> struct bcs_char_traits_impl<wchar_t> : public char_traits_with_find<wchar_t> {}; -#else -template<> struct bcs_char_traits_impl<char> : public std::char_traits<char> {}; -template<> struct bcs_char_traits_impl<wchar_t> : public std::char_traits<wchar_t> {}; -#endif - -template<typename CharT> -class bcs_char_traits : public bcs_char_traits_impl<CharT> { - typedef typename ut_detail::bcs_base_char<CharT>::type the_base_char; -public: -#ifdef BOOST_CLASSIC_IOSTREAMS - typedef std::basic_string<the_base_char, std::string_char_traits<the_base_char> > std_string; -#else - typedef std::basic_string<the_base_char, std::char_traits<the_base_char> > std_string; -#endif -}; - -} // namespace ut_detail - -} // namespace unit_test - -} // namespace boost - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_BCS_CHAR_TRAITS_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/compare.hpp b/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/compare.hpp deleted file mode 100644 index b6dc15ab77c..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/compare.hpp +++ /dev/null @@ -1,151 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : class basic_cstring comparisons implementation -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_BASIC_CSTRING_COMPARE_HPP -#define BOOST_TEST_UTILS_BASIC_CSTRING_COMPARE_HPP - -// Boost.Test -#include <boost/test/utils/basic_cstring/basic_cstring.hpp> - -// STL -#include <functional> -#include <cctype> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -# if defined(BOOST_NO_STDC_NAMESPACE) && !BOOST_WORKAROUND(__BORLANDC__, <= 0x570) -namespace std { using ::toupper; } -# endif - -namespace boost { - -namespace unit_test { - -// ************************************************************************** // -// ************** case_ins_compare ************** // -// ************************************************************************** // - -namespace ut_detail { - -template<class CharT> -struct case_ins -{ - static bool eq( CharT c1, CharT c2 ) { return (std::toupper)( c1 ) == (std::toupper)( c2 ); } - static bool lt( CharT c1, CharT c2 ) { return (std::toupper)( c1 ) < (std::toupper)( c2 ); } - - static int compare( CharT const* s1, CharT const* s2, std::size_t n ) - { - for( std::size_t i = 0; i < n; ++i ) { - if( !eq( s1[i], s2[i] ) ) - return lt( s1[i], s2[i] ) ? -1 : 1; - } - return 0; - } -}; - -} // namespace ut_detail - -// ************************************************************************** // -// ************** case_ins_eq ************** // -// ************************************************************************** // - -template<class CharT> -inline bool -case_ins_eq( basic_cstring<CharT> x, basic_cstring<CharT> y ) -{ - return x.size() == y.size() && ut_detail::case_ins<CharT>::compare( x.begin(), y.begin(), x.size() ) == 0; -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** case_ins_less ************** // -// ************************************************************************** // - -template<class CharT> -class case_ins_less -{ -public: - typedef bool result_type; - typedef basic_cstring<CharT> first_argument_type; - typedef basic_cstring<CharT> second_argument_type; - - bool operator()( basic_cstring<CharT> x, basic_cstring<CharT> y ) const - { - return x.size() != y.size() - ? x.size() < y.size() - : ut_detail::case_ins<CharT>::compare( x.begin(), y.begin(), x.size() ) < 0; - } -}; - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** operators <,> ************** // -// ************************************************************************** // - -template<class CharT> -inline bool -operator <( boost::unit_test::basic_cstring<CharT> const& x, - boost::unit_test::basic_cstring<CharT> const& y ) -{ - typedef typename boost::unit_test::basic_cstring<CharT>::traits_type traits_type; - return x.size() != y.size() - ? x.size() < y.size() - : traits_type::compare( x.begin(), y.begin(), x.size() ) < 0; -} - -//____________________________________________________________________________// - -template<class CharT> -inline bool -operator <=( boost::unit_test::basic_cstring<CharT> const& x, - boost::unit_test::basic_cstring<CharT> const& y ) -{ - return !(y < x); -} - -//____________________________________________________________________________// - -template<class CharT> -inline bool -operator >( boost::unit_test::basic_cstring<CharT> const& x, - boost::unit_test::basic_cstring<CharT> const& y ) -{ - return y < x; -} - -//____________________________________________________________________________// - -template<class CharT> -inline bool -operator >=( boost::unit_test::basic_cstring<CharT> const& x, - boost::unit_test::basic_cstring<CharT> const& y ) -{ - return !(x < y); -} - -//____________________________________________________________________________// - -} // namespace unit_test - -} // namespace boost - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_BASIC_CSTRING_COMPARE_HPP_071894GER diff --git a/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/io.hpp b/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/io.hpp deleted file mode 100644 index 02ccb126f8c..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/basic_cstring/io.hpp +++ /dev/null @@ -1,73 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : basic_cstring i/o implementation -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_BASIC_CSTRING_IO_HPP -#define BOOST_TEST_UTILS_BASIC_CSTRING_IO_HPP - -// Boost.Test -#include <boost/test/utils/basic_cstring/basic_cstring.hpp> - -// STL -#include <iosfwd> -#include <string> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { - -namespace unit_test { - -#ifdef BOOST_CLASSIC_IOSTREAMS - -template<typename CharT> -inline std::ostream& -operator<<( std::ostream& os, basic_cstring<CharT> const& str ) -{ - typedef typename ut_detail::bcs_base_char<CharT>::type char_type; - char_type const* const beg = reinterpret_cast<char_type const* const>( str.begin() ); - char_type const* const end = reinterpret_cast<char_type const* const>( str.end() ); - os << std::basic_string<char_type>( beg, end - beg ); - - return os; -} - -#else - -template<typename CharT1, typename Tr,typename CharT2> -inline std::basic_ostream<CharT1,Tr>& -operator<<( std::basic_ostream<CharT1,Tr>& os, basic_cstring<CharT2> const& str ) -{ - CharT1 const* const beg = reinterpret_cast<CharT1 const*>( str.begin() ); // !! - CharT1 const* const end = reinterpret_cast<CharT1 const*>( str.end() ); - os << std::basic_string<CharT1,Tr>( beg, end - beg ); - - return os; -} - -#endif - -//____________________________________________________________________________// - - -} // namespace unit_test - -} // namespace boost - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_BASIC_CSTRING_IO_HPP_071894GER diff --git a/src/third_party/boost-1.69.0/boost/test/utils/class_properties.hpp b/src/third_party/boost-1.69.0/boost/test/utils/class_properties.hpp deleted file mode 100644 index d4f3db3f2d8..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/class_properties.hpp +++ /dev/null @@ -1,195 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : simple facility that mimmic notion of read-only read-write -// properties in C++ classes. Original idea by Henrik Ravn. -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_CLASS_PROPERTIES_HPP -#define BOOST_TEST_UTILS_CLASS_PROPERTIES_HPP - -// Boost.Test -#include <boost/test/detail/config.hpp> - -// Boost -#if !BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) -#include <boost/preprocessor/seq/for_each.hpp> -#endif -#include <boost/call_traits.hpp> -#include <boost/type_traits/add_pointer.hpp> -#include <boost/type_traits/add_const.hpp> -#include <boost/utility/addressof.hpp> - -// STL -#include <iosfwd> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** class_property ************** // -// ************************************************************************** // - -template<class PropertyType> -class class_property { -protected: - typedef typename call_traits<PropertyType>::const_reference read_access_t; - typedef typename call_traits<PropertyType>::param_type write_param_t; - typedef typename add_pointer<typename add_const<PropertyType>::type>::type address_res_t; -public: - // Constructor - class_property() : value( PropertyType() ) {} - explicit class_property( write_param_t init_value ) - : value( init_value ) {} - - // Access methods - operator read_access_t() const { return value; } - read_access_t get() const { return value; } - bool operator!() const { return !value; } - address_res_t operator&() const { return &value; } - - // Data members -#ifndef BOOST_TEST_NO_PROTECTED_USING -protected: -#endif - PropertyType value; -}; - -//____________________________________________________________________________// - -#ifdef BOOST_CLASSIC_IOSTREAMS - -template<class PropertyType> -inline std::ostream& -operator<<( std::ostream& os, class_property<PropertyType> const& p ) - -#else - -template<typename CharT1, typename Tr,class PropertyType> -inline std::basic_ostream<CharT1,Tr>& -operator<<( std::basic_ostream<CharT1,Tr>& os, class_property<PropertyType> const& p ) - -#endif -{ - return os << p.get(); -} - -//____________________________________________________________________________// - -#define DEFINE_PROPERTY_FREE_BINARY_OPERATOR( op ) \ -template<class PropertyType> \ -inline bool \ -operator op( PropertyType const& lhs, class_property<PropertyType> const& rhs ) \ -{ \ - return lhs op rhs.get(); \ -} \ -template<class PropertyType> \ -inline bool \ -operator op( class_property<PropertyType> const& lhs, PropertyType const& rhs ) \ -{ \ - return lhs.get() op rhs; \ -} \ -template<class PropertyType> \ -inline bool \ -operator op( class_property<PropertyType> const& lhs, \ - class_property<PropertyType> const& rhs ) \ -{ \ - return lhs.get() op rhs.get(); \ -} \ -/**/ - -DEFINE_PROPERTY_FREE_BINARY_OPERATOR( == ) -DEFINE_PROPERTY_FREE_BINARY_OPERATOR( != ) - -#undef DEFINE_PROPERTY_FREE_BINARY_OPERATOR - -// ************************************************************************** // -// ************** readonly_property ************** // -// ************************************************************************** // - -template<class PropertyType> -class readonly_property : public class_property<PropertyType> { - typedef class_property<PropertyType> base_prop; - typedef typename base_prop::address_res_t arrow_res_t; -protected: - typedef typename base_prop::write_param_t write_param_t; -public: - // Constructor - readonly_property() {} - explicit readonly_property( write_param_t init_value ) : base_prop( init_value ) {} - - // access methods - arrow_res_t operator->() const { return boost::addressof( base_prop::value ); } -}; - -//____________________________________________________________________________// - -#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) - -#define BOOST_READONLY_PROPERTY( property_type, friends ) boost::unit_test::readwrite_property<property_type > - -#else - -#define BOOST_READONLY_PROPERTY_DECLARE_FRIEND(r, data, elem) friend class elem; - -#define BOOST_READONLY_PROPERTY( property_type, friends ) \ -class BOOST_JOIN( readonly_property, __LINE__ ) \ -: public boost::unit_test::readonly_property<property_type > { \ - typedef boost::unit_test::readonly_property<property_type > base_prop; \ - BOOST_PP_SEQ_FOR_EACH( BOOST_READONLY_PROPERTY_DECLARE_FRIEND, ' ', friends ) \ - typedef base_prop::write_param_t write_param_t; \ -public: \ - BOOST_JOIN( readonly_property, __LINE__ )() {} \ - explicit BOOST_JOIN( readonly_property, __LINE__ )( write_param_t init_v ) \ - : base_prop( init_v ) {} \ -} \ -/**/ - -#endif - -// ************************************************************************** // -// ************** readwrite_property ************** // -// ************************************************************************** // - -template<class PropertyType> -class readwrite_property : public class_property<PropertyType> { - typedef class_property<PropertyType> base_prop; - typedef typename add_pointer<PropertyType>::type arrow_res_t; - typedef typename base_prop::address_res_t const_arrow_res_t; - typedef typename base_prop::write_param_t write_param_t; -public: - readwrite_property() : base_prop() {} - explicit readwrite_property( write_param_t init_value ) : base_prop( init_value ) {} - - // access methods - void set( write_param_t v ) { base_prop::value = v; } - arrow_res_t operator->() { return boost::addressof( base_prop::value ); } - const_arrow_res_t operator->() const { return boost::addressof( base_prop::value ); } - -#ifndef BOOST_TEST_NO_PROTECTED_USING - using base_prop::value; -#endif -}; - -//____________________________________________________________________________// - -} // unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#undef BOOST_TEST_NO_PROTECTED_USING - -#endif // BOOST_TEST_UTILS_CLASS_PROPERTIES_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/custom_manip.hpp b/src/third_party/boost-1.69.0/boost/test/utils/custom_manip.hpp deleted file mode 100644 index d5ddaf5c077..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/custom_manip.hpp +++ /dev/null @@ -1,61 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : simple helpers for creating cusom output manipulators -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_CUSTOM_MANIP_HPP -#define BOOST_TEST_UTILS_CUSTOM_MANIP_HPP - -// STL -#include <iosfwd> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace utils { - -// ************************************************************************** // -// ************** custom manipulators helpers ************** // -// ************************************************************************** // - -template<typename Manip> -struct custom_printer { - explicit custom_printer( std::ostream& ostr ) : m_ostr( &ostr ) {} - - std::ostream& operator*() const { return *m_ostr; } - -private: - std::ostream* const m_ostr; -}; - -//____________________________________________________________________________// - -template<typename Uniq> struct custom_manip {}; - -//____________________________________________________________________________// - -template<typename Uniq> -inline custom_printer<custom_manip<Uniq> > -operator<<( std::ostream& ostr, custom_manip<Uniq> const& ) { return custom_printer<custom_manip<Uniq> >( ostr ); } - -//____________________________________________________________________________// - -} // namespace utils -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_CUSTOM_MANIP_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/foreach.hpp b/src/third_party/boost-1.69.0/boost/test/utils/foreach.hpp deleted file mode 100644 index 68462ae7193..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/foreach.hpp +++ /dev/null @@ -1,316 +0,0 @@ -// (C) Copyright Eric Niebler 2004-2005 -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : this is an abridged version of an excelent BOOST_FOREACH facility -// presented by Eric Niebler. I am so fond of it so I can't wait till it -// going to be accepted into Boost. Also I need version with less number of dependencies -// and more portable. This version doesn't support rvalues and will reeveluate it's -// parameters, but should be good enough for my purposes. -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_FOREACH_HPP -#define BOOST_TEST_UTILS_FOREACH_HPP - -// Boost.Test -#include <boost/test/detail/config.hpp> - -// Boost -#include <boost/type.hpp> -#include <boost/mpl/bool.hpp> -#include <boost/test/detail/workaround.hpp> - -#include <boost/type_traits/is_const.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace for_each { - -// ************************************************************************** // -// ************** static_any ************** // -// ************************************************************************** // - -struct static_any_base -{ - operator bool() const { return false; } -}; - -//____________________________________________________________________________// - -template<typename Iter> -struct static_any : static_any_base -{ - static_any( Iter const& t ) : m_it( t ) {} - - mutable Iter m_it; -}; - -//____________________________________________________________________________// - -typedef static_any_base const& static_any_t; - -//____________________________________________________________________________// - -template<typename Iter> -inline Iter& -static_any_cast( static_any_t a, Iter* = 0 ) -{ - return static_cast<Iter&>( static_cast<static_any<Iter> const&>( a ).m_it ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** is_const ************** // -// ************************************************************************** // - -template<typename C> -inline is_const<C> -is_const_coll( C& ) -{ - return is_const<C>(); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** begin ************** // -// ************************************************************************** // - -template<typename C> -inline static_any<BOOST_DEDUCED_TYPENAME C::iterator> -begin( C& t, mpl::false_ ) -{ - return static_any<BOOST_DEDUCED_TYPENAME C::iterator>( t.begin() ); -} - -//____________________________________________________________________________// - -template<typename C> -inline static_any<BOOST_DEDUCED_TYPENAME C::const_iterator> -begin( C const& t, mpl::true_ ) -{ - return static_any<BOOST_DEDUCED_TYPENAME C::const_iterator>( t.begin() ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** end ************** // -// ************************************************************************** // - -template<typename C> -inline static_any<BOOST_DEDUCED_TYPENAME C::iterator> -end( C& t, mpl::false_ ) -{ - return static_any<BOOST_DEDUCED_TYPENAME C::iterator>( t.end() ); -} - -//____________________________________________________________________________// - -template<typename C> -inline static_any<BOOST_DEDUCED_TYPENAME C::const_iterator> -end( C const& t, mpl::true_ ) -{ - return static_any<BOOST_DEDUCED_TYPENAME C::const_iterator>( t.end() ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** done ************** // -// ************************************************************************** // - -template<typename C> -inline bool -done( static_any_t cur, static_any_t end, C&, mpl::false_ ) -{ - return static_any_cast<BOOST_DEDUCED_TYPENAME C::iterator>( cur ) == - static_any_cast<BOOST_DEDUCED_TYPENAME C::iterator>( end ); -} - -//____________________________________________________________________________// - -template<typename C> -inline bool -done( static_any_t cur, static_any_t end, C const&, mpl::true_ ) -{ - return static_any_cast<BOOST_DEDUCED_TYPENAME C::const_iterator>( cur ) == - static_any_cast<BOOST_DEDUCED_TYPENAME C::const_iterator>( end ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** next ************** // -// ************************************************************************** // - -template<typename C> -inline void -next( static_any_t cur, C&, mpl::false_ ) -{ - ++static_any_cast<BOOST_DEDUCED_TYPENAME C::iterator>( cur ); -} - -//____________________________________________________________________________// - -template<typename C> -inline void -next( static_any_t cur, C const&, mpl::true_ ) -{ - ++static_any_cast<BOOST_DEDUCED_TYPENAME C::const_iterator>( cur ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** prev ************** // -// ************************************************************************** // - -template<typename C> -inline void -prev( static_any_t cur, C&, mpl::false_ ) -{ - --static_any_cast<BOOST_DEDUCED_TYPENAME C::iterator>( cur ); -} - -//____________________________________________________________________________// - -template<typename C> -inline void -prev( static_any_t cur, C const&, mpl::true_ ) -{ - --static_any_cast<BOOST_DEDUCED_TYPENAME C::const_iterator>( cur ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** deref ************** // -// ************************************************************************** // - -template<class RefType,typename C> -inline RefType -deref( static_any_t cur, C&, ::boost::type<RefType>, mpl::false_ ) -{ - return *static_any_cast<BOOST_DEDUCED_TYPENAME C::iterator>( cur ); -} - -//____________________________________________________________________________// - -template<class RefType,typename C> -inline RefType -deref( static_any_t cur, C const&, ::boost::type<RefType>, mpl::true_ ) -{ - return *static_any_cast<BOOST_DEDUCED_TYPENAME C::const_iterator>( cur ); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** BOOST_TEST_FOREACH ************** // -// ************************************************************************** // - -#define BOOST_TEST_FE_ANY ::boost::unit_test::for_each::static_any_t -#define BOOST_TEST_FE_IS_CONST( COL ) ::boost::unit_test::for_each::is_const_coll( COL ) - -#define BOOST_TEST_FE_BEG( COL ) \ - ::boost::unit_test::for_each::begin( \ - COL, \ - BOOST_TEST_FE_IS_CONST( COL ) ) \ -/**/ - -#define BOOST_TEST_FE_END( COL ) \ - ::boost::unit_test::for_each::end( \ - COL, \ - BOOST_TEST_FE_IS_CONST( COL ) ) \ -/**/ - -#define BOOST_TEST_FE_DONE( COL ) \ - ::boost::unit_test::for_each::done( \ - BOOST_TEST_FE_CUR_VAR, \ - BOOST_TEST_FE_END_VAR, \ - COL, \ - BOOST_TEST_FE_IS_CONST( COL ) ) \ -/**/ - -#define BOOST_TEST_FE_NEXT( COL ) \ - ::boost::unit_test::for_each::next( \ - BOOST_TEST_FE_CUR_VAR, \ - COL, \ - BOOST_TEST_FE_IS_CONST( COL ) ) \ -/**/ - -#define BOOST_TEST_FE_PREV( COL ) \ - ::boost::unit_test::for_each::prev( \ - BOOST_TEST_FE_CUR_VAR, \ - COL, \ - BOOST_TEST_FE_IS_CONST( COL ) ) \ -/**/ - -#define BOOST_FOREACH_NOOP(COL) \ - ((void)&(COL)) - -#define BOOST_TEST_FE_DEREF( COL, RefType ) \ - ::boost::unit_test::for_each::deref( \ - BOOST_TEST_FE_CUR_VAR, \ - COL, \ - ::boost::type<RefType >(), \ - BOOST_TEST_FE_IS_CONST( COL ) ) \ -/**/ - -#if BOOST_WORKAROUND( BOOST_MSVC, == 1310 ) -#define BOOST_TEST_LINE_NUM -#else -#define BOOST_TEST_LINE_NUM __LINE__ -#endif - -#define BOOST_TEST_FE_CUR_VAR BOOST_JOIN( _fe_cur_, BOOST_TEST_LINE_NUM ) -#define BOOST_TEST_FE_END_VAR BOOST_JOIN( _fe_end_, BOOST_TEST_LINE_NUM ) -#define BOOST_TEST_FE_CON_VAR BOOST_JOIN( _fe_con_, BOOST_TEST_LINE_NUM ) - -#define BOOST_TEST_FOREACH( RefType, var, COL ) \ -if( BOOST_TEST_FE_ANY BOOST_TEST_FE_CUR_VAR = BOOST_TEST_FE_BEG( COL ) ) {} else \ -if( BOOST_TEST_FE_ANY BOOST_TEST_FE_END_VAR = BOOST_TEST_FE_END( COL ) ) {} else \ -for( bool BOOST_TEST_FE_CON_VAR = true; \ - BOOST_TEST_FE_CON_VAR && !BOOST_TEST_FE_DONE( COL ); \ - BOOST_TEST_FE_CON_VAR ? BOOST_TEST_FE_NEXT( COL ) : BOOST_FOREACH_NOOP( COL )) \ - \ - if( (BOOST_TEST_FE_CON_VAR = false, false) ) {} else \ - for( RefType var = BOOST_TEST_FE_DEREF( COL, RefType ); \ - !BOOST_TEST_FE_CON_VAR; BOOST_TEST_FE_CON_VAR = true ) \ -/**/ - -#define BOOST_TEST_REVERSE_FOREACH( RefType, var, COL ) \ -if( BOOST_TEST_FE_ANY BOOST_TEST_FE_CUR_VAR = BOOST_TEST_FE_END( COL ) ) {} else \ -if( BOOST_TEST_FE_ANY BOOST_TEST_FE_END_VAR = BOOST_TEST_FE_BEG( COL ) ) {} else \ -for( bool BOOST_TEST_FE_CON_VAR = true; \ - BOOST_TEST_FE_CON_VAR && !BOOST_TEST_FE_DONE( COL ); ) \ - \ - if( (BOOST_TEST_FE_CON_VAR = false, false) ) {} else \ - if( (BOOST_TEST_FE_PREV( COL ), false) ) {} else \ - for( RefType var = BOOST_TEST_FE_DEREF( COL, RefType ); \ - !BOOST_TEST_FE_CON_VAR; BOOST_TEST_FE_CON_VAR = true ) \ -/**/ - -//____________________________________________________________________________// - -} // namespace for_each -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_FOREACH_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/is_cstring.hpp b/src/third_party/boost-1.69.0/boost/test/utils/is_cstring.hpp deleted file mode 100644 index 12326b04187..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/is_cstring.hpp +++ /dev/null @@ -1,116 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : defines the is_cstring type trait -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_IS_CSTRING_HPP -#define BOOST_TEST_UTILS_IS_CSTRING_HPP - -// Boost -#include <boost/mpl/bool.hpp> -#include <boost/type_traits/is_same.hpp> -#include <boost/type_traits/decay.hpp> -#include <boost/type_traits/remove_pointer.hpp> -#include <boost/type_traits/remove_const.hpp> -#include <boost/type_traits/add_const.hpp> - -#include <boost/test/utils/basic_cstring/basic_cstring_fwd.hpp> -#include <string> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -// ************************************************************************** // -// ************** is_cstring ************** // -// ************************************************************************** // - -namespace ut_detail { - -template<typename T> -struct is_cstring_impl : public mpl::false_ {}; - -template<typename T> -struct is_cstring_impl<T const*> : public is_cstring_impl<T*> {}; - -template<typename T> -struct is_cstring_impl<T const* const> : public is_cstring_impl<T*> {}; - -template<> -struct is_cstring_impl<char*> : public mpl::true_ {}; - -template<> -struct is_cstring_impl<wchar_t*> : public mpl::true_ {}; - -template <typename T, bool is_cstring = is_cstring_impl<typename boost::decay<T>::type>::value > -struct deduce_cstring_impl; - -template <typename T, bool is_cstring > -struct deduce_cstring_impl<T&, is_cstring> : public deduce_cstring_impl<T, is_cstring>{}; - -template <typename T, bool is_cstring > -struct deduce_cstring_impl<T const, is_cstring> : public deduce_cstring_impl<T, is_cstring>{}; - -template <typename T> -struct deduce_cstring_impl<T, true> { - typedef typename boost::add_const< - typename boost::remove_pointer< - typename boost::decay<T>::type - >::type - >::type U; - typedef boost::unit_test::basic_cstring<U> type; -}; - -template <typename T> -struct deduce_cstring_impl< T, false > { - typedef typename - boost::remove_const< - typename boost::remove_reference<T>::type - >::type type; -}; - -template <typename T> -struct deduce_cstring_impl< std::basic_string<T, std::char_traits<T> >, false > { - typedef boost::unit_test::basic_cstring<typename boost::add_const<T>::type> type; -}; - -} // namespace ut_detail - -template<typename T> -struct is_cstring : public ut_detail::is_cstring_impl<typename decay<T>::type> {}; - -template<typename T, bool is_cstring = is_cstring<typename boost::decay<T>::type>::value > -struct is_cstring_comparable: public mpl::false_ {}; - -template<typename T> -struct is_cstring_comparable< T, true > : public mpl::true_ {}; - -template<typename T> -struct is_cstring_comparable< std::basic_string<T, std::char_traits<T> >, false > : public mpl::true_ {}; - -template<typename T> -struct is_cstring_comparable< boost::unit_test::basic_cstring<T>, false > : public mpl::true_ {}; - -template <class T> -struct deduce_cstring { - typedef typename - boost::remove_const< - typename boost::remove_reference<T>::type - >::type U; - typedef typename ut_detail::deduce_cstring_impl<typename boost::decay<U>::type>::type type; -}; - -} // namespace unit_test -} // namespace boost - -#endif // BOOST_TEST_UTILS_IS_CSTRING_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/is_forward_iterable.hpp b/src/third_party/boost-1.69.0/boost/test/utils/is_forward_iterable.hpp deleted file mode 100644 index d6d8dd8a85f..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/is_forward_iterable.hpp +++ /dev/null @@ -1,267 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//! @file -//! Defines the is_forward_iterable collection type trait -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_IS_FORWARD_ITERABLE_HPP -#define BOOST_TEST_UTILS_IS_FORWARD_ITERABLE_HPP - -#if defined(BOOST_NO_CXX11_DECLTYPE) || \ - defined(BOOST_NO_CXX11_NULLPTR) || \ - defined(BOOST_NO_CXX11_TRAILING_RESULT_TYPES) - - // this feature works with VC2012 upd 5 while BOOST_NO_CXX11_TRAILING_RESULT_TYPES is defined - #if !defined(BOOST_MSVC) || BOOST_MSVC_FULL_VER < 170061232 /* VC2012 upd 5 */ - #define BOOST_TEST_FWD_ITERABLE_CXX03 - #endif -#endif - -#if defined(BOOST_TEST_FWD_ITERABLE_CXX03) -// Boost -#include <boost/mpl/bool.hpp> - -// STL -#include <list> -#include <vector> -#include <map> -#include <set> - -#else - -// Boost -#include <boost/static_assert.hpp> -#include <boost/utility/declval.hpp> -#include <boost/type_traits/is_same.hpp> -#include <boost/type_traits/remove_reference.hpp> -#include <boost/type_traits/remove_cv.hpp> -#include <boost/test/utils/is_cstring.hpp> - -// STL -#include <utility> -#include <type_traits> - -#endif -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { - -template<typename T> -struct is_forward_iterable; - -// ************************************************************************** // -// ************** is_forward_iterable ************** // -// ************************************************************************** // - -#if defined(BOOST_TEST_FWD_ITERABLE_CXX03) && !defined(BOOST_TEST_DOXYGEN_DOC__) -template<typename T> -struct is_forward_iterable : public mpl::false_ {}; - -template<typename T> -struct is_forward_iterable<T const> : public is_forward_iterable<T> {}; - -template<typename T> -struct is_forward_iterable<T&> : public is_forward_iterable<T> {}; - -template<typename T, std::size_t N> -struct is_forward_iterable< T [N] > : public mpl::true_ {}; - -template<typename T, typename A> -struct is_forward_iterable< std::vector<T, A> > : public mpl::true_ {}; - -template<typename T, typename A> -struct is_forward_iterable< std::list<T, A> > : public mpl::true_ {}; - -template<typename K, typename V, typename C, typename A> -struct is_forward_iterable< std::map<K, V, C, A> > : public mpl::true_ {}; - -template<typename K, typename C, typename A> -struct is_forward_iterable< std::set<K, C, A> > : public mpl::true_ {}; - -// string is also forward iterable, even if sometimes we want to treat the -// assertions differently. -template<> -struct is_forward_iterable< std::string > : public mpl::true_ {}; - -#else - -namespace ut_detail { - -// SFINAE helper -template<typename T> -struct is_present : public mpl::true_ {}; - -//____________________________________________________________________________// - -// some compiler do not implement properly decltype non expression involving members (eg. VS2013) -// a workaround is to use -> decltype syntax. -template <class T> -struct has_member_size { -private: - struct nil_t {}; - template<typename U> static auto test( U* ) -> decltype(boost::declval<U>().size()); - template<typename> static nil_t test( ... ); - -public: - static bool const value = !std::is_same< decltype(test<T>( nullptr )), nil_t>::value; -}; - -//____________________________________________________________________________// - -template <class T> -struct has_member_begin { -private: - struct nil_t {}; - template<typename U> static auto test( U* ) -> decltype(std::begin(boost::declval<U&>())); // does not work with boost::begin - template<typename> static nil_t test( ... ); -public: - static bool const value = !std::is_same< decltype(test<T>( nullptr )), nil_t>::value; -}; - -//____________________________________________________________________________// - -template <class T> -struct has_member_end { -private: - struct nil_t {}; - template<typename U> static auto test( U* ) -> decltype(std::end(boost::declval<U&>())); // does not work with boost::end - template<typename> static nil_t test( ... ); -public: - static bool const value = !std::is_same< decltype(test<T>( nullptr )), nil_t>::value; -}; - -//____________________________________________________________________________// - -template <class T, class enabled = void> -struct is_forward_iterable_impl : std::false_type { -}; - -template <class T> -struct is_forward_iterable_impl< - T, - typename std::enable_if< - has_member_begin<T>::value && - has_member_end<T>::value - >::type -> : std::true_type -{}; - -//____________________________________________________________________________// - -template <class T, class enabled = void> -struct is_container_forward_iterable_impl : std::false_type { -}; - -template <class T> -struct is_container_forward_iterable_impl< - T, - typename std::enable_if< - is_present<typename T::const_iterator>::value && - is_present<typename T::value_type>::value && - has_member_size<T>::value && - is_forward_iterable_impl<T>::value - >::type -> : is_forward_iterable_impl<T> -{}; - -//____________________________________________________________________________// - -} // namespace ut_detail - -/*! Indicates that a specific type implements the forward iterable concept. */ -template<typename T> -struct is_forward_iterable { - typedef typename std::remove_reference<T>::type T_ref; - typedef ut_detail::is_forward_iterable_impl<T_ref> is_fwd_it_t; - typedef mpl::bool_<is_fwd_it_t::value> type; - enum { value = is_fwd_it_t::value }; -}; - -/*! Indicates that a specific type implements the forward iterable concept. */ -template<typename T> -struct is_container_forward_iterable { - typedef typename std::remove_reference<T>::type T_ref; - typedef ut_detail::is_container_forward_iterable_impl<T_ref> is_fwd_it_t; - typedef mpl::bool_<is_fwd_it_t::value> type; - enum { value = is_fwd_it_t::value }; -}; - -#endif /* defined(BOOST_TEST_FWD_ITERABLE_CXX03) */ - - -//! Helper structure for accessing the content of a container or an array -template <typename T, bool is_forward_iterable = is_forward_iterable<T>::value > -struct bt_iterator_traits; - -template <typename T> -struct bt_iterator_traits< T, true >{ - BOOST_STATIC_ASSERT((is_forward_iterable<T>::value)); - -#if defined(BOOST_TEST_FWD_ITERABLE_CXX03) || \ - (defined(BOOST_MSVC) && (BOOST_MSVC_FULL_VER <= 170061232)) - typedef typename T::const_iterator const_iterator; - typedef typename std::iterator_traits<const_iterator>::value_type value_type; -#else - typedef decltype(boost::declval< - typename boost::add_const< - typename boost::remove_reference<T>::type - >::type>().begin()) const_iterator; - - typedef typename std::iterator_traits<const_iterator>::value_type value_type; -#endif /* BOOST_TEST_FWD_ITERABLE_CXX03 */ - - static const_iterator begin(T const& container) { - return container.begin(); - } - static const_iterator end(T const& container) { - return container.end(); - } - -#if defined(BOOST_TEST_FWD_ITERABLE_CXX03) || \ - (defined(BOOST_MSVC) && (BOOST_MSVC_FULL_VER <= 170061232)) - static std::size_t - size(T const& container) { - return container.size(); - } -#else - static std::size_t - size(T const& container) { - return size(container, - std::integral_constant<bool, ut_detail::has_member_size<T>::value>()); - } -private: - static std::size_t - size(T const& container, std::true_type) { return container.size(); } - - static std::size_t - size(T const& container, std::false_type) { return std::distance(begin(container), end(container)); } -#endif /* BOOST_TEST_FWD_ITERABLE_CXX03 */ -}; - -template <typename T, std::size_t N> -struct bt_iterator_traits< T [N], true > { - typedef typename boost::add_const<T>::type T_const; - typedef typename boost::add_pointer<T_const>::type const_iterator; - typedef T value_type; - - static const_iterator begin(T_const (&array)[N]) { - return &array[0]; - } - static const_iterator end(T_const (&array)[N]) { - return &array[N]; - } - static std::size_t size(T_const (&)[N]) { - return N; - } -}; - -} // namespace unit_test -} // namespace boost - -#endif // BOOST_TEST_UTILS_IS_FORWARD_ITERABLE_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/iterator/input_iterator_facade.hpp b/src/third_party/boost-1.69.0/boost/test/utils/iterator/input_iterator_facade.hpp deleted file mode 100644 index d695ee3a87e..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/iterator/input_iterator_facade.hpp +++ /dev/null @@ -1,105 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//! Input iterator facade -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_INPUT_ITERATOR_FACADE_HPP -#define BOOST_TEST_UTILS_INPUT_ITERATOR_FACADE_HPP - -// Boost -#include <boost/iterator/iterator_facade.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace utils { - -// ************************************************************************** // -// ************** input_iterator_core_access ************** // -// ************************************************************************** // - -class input_iterator_core_access -{ -#if defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551)) -public: -#else - template <class I, class V, class R, class TC> friend class input_iterator_facade; -#endif - - template <class Facade> - static bool get( Facade& f ) - { - return f.get(); - } - -private: - // objects of this class are useless - input_iterator_core_access(); //undefined -}; - -// ************************************************************************** // -// ************** input_iterator_facade ************** // -// ************************************************************************** // - -template<typename Derived, - typename ValueType, - typename Reference = ValueType const&, - typename Traversal = single_pass_traversal_tag> -class input_iterator_facade : public iterator_facade<Derived,ValueType,Traversal,Reference> -{ -public: - // Constructor - input_iterator_facade() : m_valid( false ), m_value() {} - -protected: // provide access to the Derived - void init() - { - m_valid = true; - increment(); - } - - // Data members - mutable bool m_valid; - ValueType m_value; - -private: - friend class boost::iterator_core_access; - - // iterator facade interface implementation - void increment() - { - // we make post-end incrementation indefinetly safe - if( m_valid ) - m_valid = input_iterator_core_access::get( *static_cast<Derived*>(this) ); - } - Reference dereference() const - { - return m_value; - } - - // iterator facade interface implementation - bool equal( input_iterator_facade const& rhs ) const - { - // two invalid iterator equals, inequal otherwise - return !m_valid && !rhs.m_valid; - } -}; - -} // namespace utils -} // namespace unit_test -} // namespace boost - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_INPUT_ITERATOR_FACADE_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/iterator/token_iterator.hpp b/src/third_party/boost-1.69.0/boost/test/utils/iterator/token_iterator.hpp deleted file mode 100644 index e3a923a2ee5..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/iterator/token_iterator.hpp +++ /dev/null @@ -1,421 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : token iterator for string and range tokenization -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_TOKEN_ITERATOR_HPP -#define BOOST_TEST_UTILS_TOKEN_ITERATOR_HPP - -// Boost -#include <boost/config.hpp> -#include <boost/detail/workaround.hpp> - -#include <boost/iterator/iterator_categories.hpp> -#include <boost/iterator/iterator_traits.hpp> - -#include <boost/test/utils/iterator/input_iterator_facade.hpp> -#include <boost/test/utils/basic_cstring/basic_cstring.hpp> -#include <boost/test/utils/named_params.hpp> -#include <boost/test/utils/foreach.hpp> - -// STL -#include <iosfwd> -#include <cctype> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std{ using ::ispunct; using ::isspace; } -#endif - -namespace boost { -namespace unit_test { -namespace utils { - -// ************************************************************************** // -// ************** ti_delimeter_type ************** // -// ************************************************************************** // - -enum ti_delimeter_type { - dt_char, // character is delimeter if it among explicit list of some characters - dt_ispunct, // character is delimeter if it satisfies ispunct functor - dt_isspace, // character is delimeter if it satisfies isspace functor - dt_none // no character is delimeter -}; - -namespace ut_detail { - -// ************************************************************************** // -// ************** default_char_compare ************** // -// ************************************************************************** // - -template<typename CharT> -class default_char_compare { -public: - bool operator()( CharT c1, CharT c2 ) - { -#ifdef BOOST_CLASSIC_IOSTREAMS - return std::string_char_traits<CharT>::eq( c1, c2 ); -#else - return std::char_traits<CharT>::eq( c1, c2 ); -#endif - } -}; - -// ************************************************************************** // -// ************** delim_policy ************** // -// ************************************************************************** // - -template<typename CharT,typename CharCompare> -class delim_policy { - typedef basic_cstring<CharT const> cstring; -public: - // Constructor - explicit delim_policy( ti_delimeter_type type_ = dt_char, cstring delimeters_ = cstring() ) - : m_type( type_ ) - { - set_delimeters( delimeters_ ); - } - - void set_delimeters( ti_delimeter_type type_ ) { m_type = type_; } - void set_delimeters( cstring delimeters_ ) - { - m_delimeters = delimeters_; - - if( !m_delimeters.is_empty() ) - m_type = dt_char; - } - void set_delimeters( nfp::nil ) {} - bool operator()( CharT c ) - { - switch( m_type ) { - case dt_char: { - BOOST_TEST_FOREACH( CharT, delim, m_delimeters ) - if( CharCompare()( delim, c ) ) - return true; - - return false; - } - case dt_ispunct: - return (std::ispunct)( c ) != 0; - case dt_isspace: - return (std::isspace)( c ) != 0; - case dt_none: - return false; - } - - return false; - } - -private: - // Data members - cstring m_delimeters; - ti_delimeter_type m_type; -}; - -// ************************************************************************** // -// ************** token_assigner ************** // -// ************************************************************************** // - -template<typename TraversalTag> -struct token_assigner { -#if BOOST_WORKAROUND( BOOST_DINKUMWARE_STDLIB, < 306 ) - template<typename Iterator, typename C, typename T> - static void assign( Iterator b, Iterator e, std::basic_string<C,T>& t ) - { for( ; b != e; ++b ) t += *b; } - - template<typename Iterator, typename C> - static void assign( Iterator b, Iterator e, basic_cstring<C>& t ) { t.assign( b, e ); } -#else - template<typename Iterator, typename Token> - static void assign( Iterator b, Iterator e, Token& t ) { t.assign( b, e ); } -#endif - template<typename Iterator, typename Token> - static void append_move( Iterator& b, Token& ) { ++b; } -}; - -//____________________________________________________________________________// - -template<> -struct token_assigner<single_pass_traversal_tag> { - template<typename Iterator, typename Token> - static void assign( Iterator /*b*/, Iterator /*e*/, Token& /*t*/ ) {} - - template<typename Iterator, typename Token> - static void append_move( Iterator& b, Token& t ) { t += *b; ++b; } -}; - -} // namespace ut_detail - -// ************************************************************************** // -// ************** modifiers ************** // -// ************************************************************************** // - -namespace { -nfp::keyword<struct dropped_delimeters_t > dropped_delimeters; -nfp::keyword<struct kept_delimeters_t > kept_delimeters; -nfp::typed_keyword<bool,struct keep_empty_tokens_t > keep_empty_tokens; -nfp::typed_keyword<std::size_t,struct max_tokens_t > max_tokens; -} - -// ************************************************************************** // -// ************** token_iterator_base ************** // -// ************************************************************************** // - -template<typename Derived, - typename CharT, - typename CharCompare = ut_detail::default_char_compare<CharT>, - typename ValueType = basic_cstring<CharT const>, - typename Reference = basic_cstring<CharT const>, - typename Traversal = forward_traversal_tag> -class token_iterator_base -: public input_iterator_facade<Derived,ValueType,Reference,Traversal> { - typedef basic_cstring<CharT const> cstring; - typedef ut_detail::delim_policy<CharT,CharCompare> delim_policy; - typedef input_iterator_facade<Derived,ValueType,Reference,Traversal> base; - -protected: - // Constructor - explicit token_iterator_base() - : m_is_dropped( dt_isspace ) - , m_is_kept( dt_ispunct ) - , m_keep_empty_tokens( false ) - , m_tokens_left( static_cast<std::size_t>(-1) ) - , m_token_produced( false ) - { - } - - template<typename Modifier> - void - apply_modifier( Modifier const& m ) - { - if( m.has( dropped_delimeters ) ) - m_is_dropped.set_delimeters( m[dropped_delimeters] ); - - if( m.has( kept_delimeters ) ) - m_is_kept.set_delimeters( m[kept_delimeters] ); - - if( m.has( keep_empty_tokens ) ) - m_keep_empty_tokens = true; - - nfp::opt_assign( m_tokens_left, m, max_tokens ); - } - - template<typename Iter> - bool get( Iter& begin, Iter end ) - { - typedef ut_detail::token_assigner<BOOST_DEDUCED_TYPENAME iterator_traversal<Iter>::type> Assigner; - Iter check_point; - - this->m_value.clear(); - - if( !m_keep_empty_tokens ) { - while( begin != end && m_is_dropped( *begin ) ) - ++begin; - - if( begin == end ) - return false; - - check_point = begin; - - if( m_tokens_left == 1 ) - while( begin != end ) - Assigner::append_move( begin, this->m_value ); - else if( m_is_kept( *begin ) ) - Assigner::append_move( begin, this->m_value ); - else - while( begin != end && !m_is_dropped( *begin ) && !m_is_kept( *begin ) ) - Assigner::append_move( begin, this->m_value ); - - --m_tokens_left; - } - else { // m_keep_empty_tokens is true - check_point = begin; - - if( begin == end ) { - if( m_token_produced ) - return false; - - m_token_produced = true; - } - if( m_is_kept( *begin ) ) { - if( m_token_produced ) - Assigner::append_move( begin, this->m_value ); - - m_token_produced = !m_token_produced; - } - else if( !m_token_produced && m_is_dropped( *begin ) ) - m_token_produced = true; - else { - if( m_is_dropped( *begin ) ) - check_point = ++begin; - - while( begin != end && !m_is_dropped( *begin ) && !m_is_kept( *begin ) ) - Assigner::append_move( begin, this->m_value ); - - m_token_produced = true; - } - } - - Assigner::assign( check_point, begin, this->m_value ); - - return true; - } - -private: - // Data members - delim_policy m_is_dropped; - delim_policy m_is_kept; - bool m_keep_empty_tokens; - std::size_t m_tokens_left; - bool m_token_produced; -}; - -// ************************************************************************** // -// ************** basic_string_token_iterator ************** // -// ************************************************************************** // - -template<typename CharT, - typename CharCompare = ut_detail::default_char_compare<CharT> > -class basic_string_token_iterator -: public token_iterator_base<basic_string_token_iterator<CharT,CharCompare>,CharT,CharCompare> { - typedef basic_cstring<CharT const> cstring; - typedef token_iterator_base<basic_string_token_iterator<CharT,CharCompare>,CharT,CharCompare> base; -public: - explicit basic_string_token_iterator() {} - explicit basic_string_token_iterator( cstring src ) - : m_src( src ) - { - this->init(); - } - - // warning: making the constructor accept anything else than a cstring should - // ensure that no temporary object is created during string creation (previous - // definition was "template<typename Src, typename Modifier> basic_string_token_iterator( Src src ..." - // which may create a temporary string copy when called with an std::string. - template<typename Modifier> - basic_string_token_iterator( cstring src, Modifier const& m ) - : m_src( src ) - { - this->apply_modifier( m ); - - this->init(); - } - -private: - friend class input_iterator_core_access; - - // input iterator implementation - bool get() - { - typename cstring::iterator begin = m_src.begin(); - bool res = base::get( begin, m_src.end() ); - - m_src.assign( begin, m_src.end() ); - - return res; - } - - // Data members - cstring m_src; -}; - -typedef basic_string_token_iterator<char> string_token_iterator; -typedef basic_string_token_iterator<wchar_t> wstring_token_iterator; - -// ************************************************************************** // -// ************** range_token_iterator ************** // -// ************************************************************************** // - -template<typename Iter, - typename CharCompare = ut_detail::default_char_compare<BOOST_DEDUCED_TYPENAME iterator_value<Iter>::type>, - typename ValueType = std::basic_string<BOOST_DEDUCED_TYPENAME iterator_value<Iter>::type>, - typename Reference = ValueType const&> -class range_token_iterator -: public token_iterator_base<range_token_iterator<Iter,CharCompare,ValueType,Reference>, - typename iterator_value<Iter>::type,CharCompare,ValueType,Reference> { - typedef basic_cstring<typename ValueType::value_type> cstring; - typedef token_iterator_base<range_token_iterator<Iter,CharCompare,ValueType,Reference>, - typename iterator_value<Iter>::type,CharCompare,ValueType,Reference> base; -public: - explicit range_token_iterator() {} - explicit range_token_iterator( Iter begin, Iter end = Iter() ) - : m_begin( begin ), m_end( end ) - { - this->init(); - } - range_token_iterator( range_token_iterator const& rhs ) - : base( rhs ) - { - if( this->m_valid ) { - m_begin = rhs.m_begin; - m_end = rhs.m_end; - } - } - - template<typename Modifier> - range_token_iterator( Iter begin, Iter end, Modifier const& m ) - : m_begin( begin ), m_end( end ) - { - this->apply_modifier( m ); - - this->init(); - } - -private: - friend class input_iterator_core_access; - - // input iterator implementation - bool get() - { - return base::get( m_begin, m_end ); - } - - // Data members - Iter m_begin; - Iter m_end; -}; - -// ************************************************************************** // -// ************** make_range_token_iterator ************** // -// ************************************************************************** // - -template<typename Iter> -inline range_token_iterator<Iter> -make_range_token_iterator( Iter begin, Iter end = Iter() ) -{ - return range_token_iterator<Iter>( begin, end ); -} - -//____________________________________________________________________________// - -template<typename Iter,typename Modifier> -inline range_token_iterator<Iter> -make_range_token_iterator( Iter begin, Iter end, Modifier const& m ) -{ - return range_token_iterator<Iter>( begin, end, m ); -} - -//____________________________________________________________________________// - -} // namespace utils -} // namespace unit_test -} // namespace boost - -//____________________________________________________________________________// - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_TOKEN_ITERATOR_HPP - diff --git a/src/third_party/boost-1.69.0/boost/test/utils/lazy_ostream.hpp b/src/third_party/boost-1.69.0/boost/test/utils/lazy_ostream.hpp deleted file mode 100644 index 26bd8ed3856..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/lazy_ostream.hpp +++ /dev/null @@ -1,128 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// Description : contains definition for all test tools in test toolbox -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_LAZY_OSTREAM_HPP -#define BOOST_TEST_UTILS_LAZY_OSTREAM_HPP - -// Boost.Test -#include <boost/test/detail/config.hpp> - -// STL -#include <iosfwd> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** lazy_ostream ************** // -// ************************************************************************** // - -namespace boost { -namespace unit_test { - -class lazy_ostream { -public: - virtual ~lazy_ostream() {} - - static lazy_ostream& instance() { static lazy_ostream inst; return inst; } - - friend std::ostream& operator<<( std::ostream& ostr, lazy_ostream const& o ) { return o( ostr ); } - - // access method - bool empty() const { return m_empty; } - - // actual printing interface; to be accessed only by this class and children - virtual std::ostream& operator()( std::ostream& ostr ) const { return ostr; } -protected: - explicit lazy_ostream( bool p_empty = true ) : m_empty( p_empty ) {} - -private: - // Data members - bool m_empty; -}; - -//____________________________________________________________________________// - -template<typename PrevType, typename T, typename StorageT=T const&> -class lazy_ostream_impl : public lazy_ostream { -public: - lazy_ostream_impl( PrevType const& prev, T const& value ) - : lazy_ostream( false ) - , m_prev( prev ) - , m_value( value ) - { - } - - virtual std::ostream& operator()( std::ostream& ostr ) const - { - return m_prev(ostr) << m_value; - } -private: - // Data members - PrevType const& m_prev; - StorageT m_value; -}; - -//____________________________________________________________________________// - -template<typename T> -inline lazy_ostream_impl<lazy_ostream,T> -operator<<( lazy_ostream const& prev, T const& v ) -{ - return lazy_ostream_impl<lazy_ostream,T>( prev, v ); -} - -//____________________________________________________________________________// - -template<typename PrevPrevType, typename TPrev, typename T> -inline lazy_ostream_impl<lazy_ostream_impl<PrevPrevType,TPrev>,T> -operator<<( lazy_ostream_impl<PrevPrevType,TPrev> const& prev, T const& v ) -{ - typedef lazy_ostream_impl<PrevPrevType,TPrev> PrevType; - return lazy_ostream_impl<PrevType,T>( prev, v ); -} - -//____________________________________________________________________________// - -#if BOOST_TEST_USE_STD_LOCALE - -template<typename R,typename S> -inline lazy_ostream_impl<lazy_ostream,R& (BOOST_TEST_CALL_DECL *)(S&),R& (BOOST_TEST_CALL_DECL *)(S&)> -operator<<( lazy_ostream const& prev, R& (BOOST_TEST_CALL_DECL *man)(S&) ) -{ - typedef R& (BOOST_TEST_CALL_DECL * ManipType)(S&); - - return lazy_ostream_impl<lazy_ostream,ManipType,ManipType>( prev, man ); -} - -//____________________________________________________________________________// - -template<typename PrevPrevType, typename TPrev,typename R,typename S> -inline lazy_ostream_impl<lazy_ostream_impl<PrevPrevType,TPrev>,R& (BOOST_TEST_CALL_DECL *)(S&),R& (BOOST_TEST_CALL_DECL *)(S&)> -operator<<( lazy_ostream_impl<PrevPrevType,TPrev> const& prev, R& (BOOST_TEST_CALL_DECL *man)(S&) ) -{ - typedef R& (BOOST_TEST_CALL_DECL * ManipType)(S&); - - return lazy_ostream_impl<lazy_ostream_impl<PrevPrevType,TPrev>,ManipType,ManipType>( prev, man ); -} - -//____________________________________________________________________________// - -#endif - -#define BOOST_TEST_LAZY_MSG( M ) (::boost::unit_test::lazy_ostream::instance() << M) - -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_LAZY_OSTREAM_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/named_params.hpp b/src/third_party/boost-1.69.0/boost/test/utils/named_params.hpp deleted file mode 100644 index 50de5bfba03..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/named_params.hpp +++ /dev/null @@ -1,388 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : named function parameters library -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_NAMED_PARAM -#define BOOST_TEST_UTILS_NAMED_PARAM - -// Boost -#include <boost/config.hpp> -#include <boost/detail/workaround.hpp> - -// Boost.Test -#include <boost/test/utils/rtti.hpp> -#include <boost/test/utils/assign_op.hpp> - -#include <boost/type_traits/remove_reference.hpp> -#include <boost/type_traits/remove_cv.hpp> - -#include <boost/test/detail/throw_exception.hpp> - -// Boost -#include <boost/mpl/if.hpp> -#include <boost/mpl/or.hpp> -#include <boost/type_traits/is_same.hpp> -#include <boost/type_traits/remove_cv.hpp> -#include <boost/utility/enable_if.hpp> -#include <boost/mpl/bool.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace nfp { // named function parameters - -// ************************************************************************** // -// ************** forward declarations ************** // -// ************************************************************************** // - -template<typename unique_id, bool required> struct keyword; -template<typename T, typename unique_id, bool required = false> struct typed_keyword; - -template<typename T, typename unique_id, typename RefType=T&> struct named_parameter; -template<typename NP1,typename NP2> struct named_parameter_combine; - -// ************************************************************************** // -// ************** is_named_param_pack ************** // -// ************************************************************************** // - -/// is_named_param_pack<T>::value is true if T is parameters pack - -template<typename T> -struct is_named_param_pack : public mpl::false_ {}; - -template<typename T, typename unique_id, typename RefType> -struct is_named_param_pack<named_parameter<T,unique_id,RefType> > : public mpl::true_ {}; - -template<typename NP, typename Rest> -struct is_named_param_pack<named_parameter_combine<NP,Rest> > : public mpl::true_ {}; - -// ************************************************************************** // -// ************** param_type ************** // -// ************************************************************************** // - -/// param_type<Params,Keyword,Default>::type is the type of the parameter -/// corresponding to the Keyword (if parameter is present) or Default - -template<typename NP, typename Keyword, typename DefaultType=void> -struct param_type -: mpl::if_<typename is_same<typename NP::id,typename Keyword::id>::type, - typename remove_cv<typename NP::data_type>::type, - DefaultType> {}; - -template<typename NP, typename Rest, typename Keyword, typename DefaultType> -struct param_type<named_parameter_combine<NP,Rest>,Keyword,DefaultType> -: mpl::if_<typename is_same<typename NP::id,typename Keyword::id>::type, - typename remove_cv<typename NP::data_type>::type, - typename param_type<Rest,Keyword,DefaultType>::type> {}; - -// ************************************************************************** // -// ************** has_param ************** // -// ************************************************************************** // - -/// has_param<Params,Keyword>::value is true if Params has parameter corresponding -/// to the Keyword - -template<typename NP, typename Keyword> -struct has_param : is_same<typename NP::id,typename Keyword::id> {}; - -template<typename NP, typename Rest, typename Keyword> -struct has_param<named_parameter_combine<NP,Rest>,Keyword> -: mpl::or_<typename is_same<typename NP::id,typename Keyword::id>::type, - typename has_param<Rest,Keyword>::type> {}; - -// ************************************************************************** // -// ************** access_to_invalid_parameter ************** // -// ************************************************************************** // - -namespace nfp_detail { - -struct access_to_invalid_parameter {}; - -//____________________________________________________________________________// - -inline void -report_access_to_invalid_parameter( bool v ) -{ - BOOST_TEST_I_ASSRT( !v, access_to_invalid_parameter() ); -} - -} // namespace nfp_detail - -// ************************************************************************** // -// ************** nil ************** // -// ************************************************************************** // - -struct nil { - template<typename T> -#if defined(__GNUC__) || defined(__HP_aCC) || defined(__EDG__) || defined(__SUNPRO_CC) - operator T() const -#else - operator T const&() const -#endif - { nfp_detail::report_access_to_invalid_parameter(true); static T* v = 0; return *v; } - - template<typename T> - T any_cast() const - { nfp_detail::report_access_to_invalid_parameter(true); static typename remove_reference<T>::type* v = 0; return *v; } - - template<typename Arg1> - nil operator()( Arg1 const& ) - { nfp_detail::report_access_to_invalid_parameter(true); return nil(); } - - template<typename Arg1,typename Arg2> - nil operator()( Arg1 const&, Arg2 const& ) - { nfp_detail::report_access_to_invalid_parameter(true); return nil(); } - - template<typename Arg1,typename Arg2,typename Arg3> - nil operator()( Arg1 const&, Arg2 const&, Arg3 const& ) - { nfp_detail::report_access_to_invalid_parameter(true); return nil(); } - - // Visitation support - template<typename Visitor> - void apply_to( Visitor& /*v*/ ) const {} - - static nil& inst() { static nil s_inst; return s_inst; } -private: - nil() {} -}; - -// ************************************************************************** // -// ************** named_parameter_base ************** // -// ************************************************************************** // - -namespace nfp_detail { - -template<typename Derived> -struct named_parameter_base { - template<typename NP> - named_parameter_combine<NP,Derived> - operator,( NP const& np ) const { return named_parameter_combine<NP,Derived>( np, *static_cast<Derived const*>(this) ); } -}; - -} // namespace nfp_detail - -// ************************************************************************** // -// ************** named_parameter_combine ************** // -// ************************************************************************** // - -template<typename NP, typename Rest = nil> -struct named_parameter_combine -: Rest -, nfp_detail::named_parameter_base<named_parameter_combine<NP,Rest> > { - typedef typename NP::ref_type res_type; - typedef named_parameter_combine<NP,Rest> self_type; - - // Constructor - named_parameter_combine( NP const& np, Rest const& r ) - : Rest( r ) - , m_param( np ) - { - } - - // Access methods - res_type operator[]( keyword<typename NP::id,true> kw ) const { return m_param[kw]; } - res_type operator[]( keyword<typename NP::id,false> kw ) const { return m_param[kw]; } - using Rest::operator[]; - - bool has( keyword<typename NP::id,false> kw ) const { return m_param.has( kw ); } - using Rest::has; - - void erase( keyword<typename NP::id,false> kw ) const { m_param.erase( kw ); } - using Rest::erase; - - using nfp_detail::named_parameter_base<named_parameter_combine<NP,Rest> >::operator,; - - // Visitation support - template<typename Visitor> - void apply_to( Visitor& V ) const - { - m_param.apply_to( V ); - - Rest::apply_to( V ); - } -private: - // Data members - NP m_param; -}; - -// ************************************************************************** // -// ************** named_parameter ************** // -// ************************************************************************** // - -template<typename T, typename unique_id, typename RefType> -struct named_parameter -: nfp_detail::named_parameter_base<named_parameter<T,unique_id,RefType> > -{ - typedef T data_type; - typedef RefType ref_type; - typedef unique_id id; - - // Constructor - explicit named_parameter( ref_type v ) - : m_value( v ) - , m_erased( false ) - {} - named_parameter( named_parameter const& np ) - : m_value( np.m_value ) - , m_erased( np.m_erased ) - {} - - // Access methods - ref_type operator[]( keyword<unique_id,true> ) const { return m_erased ? nil::inst().template any_cast<ref_type>() : m_value; } - ref_type operator[]( keyword<unique_id,false> ) const { return m_erased ? nil::inst().template any_cast<ref_type>() : m_value; } - template<typename UnknownId> - nil operator[]( keyword<UnknownId,false> ) const { return nil::inst(); } - - bool has( keyword<unique_id,false> ) const { return !m_erased; } - template<typename UnknownId> - bool has( keyword<UnknownId,false> ) const { return false; } - - void erase( keyword<unique_id,false> ) const { m_erased = true; } - template<typename UnknownId> - void erase( keyword<UnknownId,false> ) const {} - - // Visitation support - template<typename Visitor> - void apply_to( Visitor& V ) const - { - V.set_parameter( rtti::type_id<unique_id>(), m_value ); - } - -private: - // Data members - ref_type m_value; - mutable bool m_erased; -}; - -// ************************************************************************** // -// ************** no_params ************** // -// ************************************************************************** // - -typedef named_parameter<char, struct no_params_type_t,char> no_params_type; - -namespace { -no_params_type no_params( '\0' ); -} // local namespace - -// ************************************************************************** // -// ************** keyword ************** // -// ************************************************************************** // - -template<typename unique_id, bool required = false> -struct keyword { - typedef unique_id id; - - template<typename T> - named_parameter<T const,unique_id> - operator=( T const& t ) const { return named_parameter<T const,unique_id>( t ); } - - template<typename T> - named_parameter<T,unique_id> - operator=( T& t ) const { return named_parameter<T,unique_id>( t ); } - - named_parameter<char const*,unique_id,char const*> - operator=( char const* t ) const { return named_parameter<char const*,unique_id,char const*>( t ); } -}; - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** typed_keyword ************** // -// ************************************************************************** // - -template<typename T, typename unique_id, bool required> -struct typed_keyword : keyword<unique_id,required> { - named_parameter<T const,unique_id> - operator=( T const& t ) const { return named_parameter<T const,unique_id>( t ); } - - named_parameter<T,unique_id> - operator=( T& t ) const { return named_parameter<T,unique_id>( t ); } -}; - -//____________________________________________________________________________// - -template<typename unique_id, bool required> -struct typed_keyword<bool,unique_id,required> -: keyword<unique_id,required> -, named_parameter<bool,unique_id,bool> { - typedef unique_id id; - - typed_keyword() : named_parameter<bool,unique_id,bool>( true ) {} - - named_parameter<bool,unique_id,bool> - operator!() const { return named_parameter<bool,unique_id,bool>( false ); } -}; - -// ************************************************************************** // -// ************** opt_assign ************** // -// ************************************************************************** // - -template<typename T, typename Params, typename Keyword> -inline typename enable_if_c<!has_param<Params,Keyword>::value,void>::type -opt_assign( T& /*target*/, Params const& /*p*/, Keyword /*k*/ ) -{ -} - -//____________________________________________________________________________// - -template<typename T, typename Params, typename Keyword> -inline typename enable_if_c<has_param<Params,Keyword>::value,void>::type -opt_assign( T& target, Params const& p, Keyword k ) -{ - using namespace unit_test; - - assign_op( target, p[k], static_cast<int>(0) ); -} - -// ************************************************************************** // -// ************** opt_get ************** // -// ************************************************************************** // - -template<typename T, typename Params, typename Keyword> -inline T -opt_get( Params const& p, Keyword k, T default_val ) -{ - opt_assign( default_val, p, k ); - - return default_val; -} - -// ************************************************************************** // -// ************** opt_get ************** // -// ************************************************************************** // - -template<typename Params, typename NP> -inline typename enable_if_c<!has_param<Params,keyword<typename NP::id> >::value, -named_parameter_combine<NP,Params> >::type -opt_append( Params const& params, NP const& np ) -{ - return (params,np); -} - -//____________________________________________________________________________// - -template<typename Params, typename NP> -inline typename enable_if_c<has_param<Params,keyword<typename NP::id> >::value,Params>::type -opt_append( Params const& params, NP const& ) -{ - return params; -} - -} // namespace nfp -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_NAMED_PARAM diff --git a/src/third_party/boost-1.69.0/boost/test/utils/rtti.hpp b/src/third_party/boost-1.69.0/boost/test/utils/rtti.hpp deleted file mode 100644 index b230692d803..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/rtti.hpp +++ /dev/null @@ -1,63 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : simple facilities for accessing type information at runtime -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_RTTI_HPP -#define BOOST_TEST_UTILS_RTTI_HPP - -// C Runtime -#include <cstddef> - -namespace boost { -namespace rtti { - -// ************************************************************************** // -// ************** rtti::type_id ************** // -// ************************************************************************** // - -typedef std::ptrdiff_t id_t; - -namespace rtti_detail { - -template<typename T> -struct rttid_holder { - static id_t id() { return reinterpret_cast<id_t>( &inst() ); } - -private: - struct rttid {}; - - static rttid const& inst() { static rttid s_inst; return s_inst; } -}; - -} // namespace rtti_detail - -//____________________________________________________________________________// - -template<typename T> -inline id_t -type_id() -{ - return rtti_detail::rttid_holder<T>::id(); -} - -//____________________________________________________________________________// - -#define BOOST_RTTI_SWITCH( type_id_ ) if( ::boost::rtti::id_t switch_by_id = type_id_ ) -#define BOOST_RTTI_CASE( type ) if( switch_by_id == ::boost::rtti::type_id<type>() ) - -//____________________________________________________________________________// - -} // namespace rtti -} // namespace boost - -#endif // BOOST_TEST_UTILS_RTTI_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/runtime/argument.hpp b/src/third_party/boost-1.69.0/boost/test/utils/runtime/argument.hpp deleted file mode 100644 index 879ee96f9f0..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/runtime/argument.hpp +++ /dev/null @@ -1,131 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : model of actual argument (both typed and abstract interface) -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_RUNTIME_ARGUMENT_HPP -#define BOOST_TEST_UTILS_RUNTIME_ARGUMENT_HPP - -// Boost.Test Runtime parameters -#include <boost/test/utils/runtime/fwd.hpp> -#include <boost/test/utils/runtime/errors.hpp> - -// Boost.Test -#include <boost/test/utils/class_properties.hpp> -#include <boost/test/utils/rtti.hpp> -#include <boost/test/utils/basic_cstring/compare.hpp> -#include <boost/test/detail/throw_exception.hpp> - -// STL -#include <cassert> - -#include <boost/test/detail/suppress_warnings.hpp> - -namespace boost { -namespace runtime { - -// ************************************************************************** // -// ************** runtime::argument ************** // -// ************************************************************************** // - -class argument { -public: - // Constructor - argument( rtti::id_t value_type ) - : p_value_type( value_type ) - {} - - // Destructor - virtual ~argument() {} - - // Public properties - rtti::id_t const p_value_type; -}; - -// ************************************************************************** // -// ************** runtime::typed_argument ************** // -// ************************************************************************** // - -template<typename T> -class typed_argument : public argument { -public: - // Constructor - explicit typed_argument( T const& v ) - : argument( rtti::type_id<T>() ) - , p_value( v ) - {} - - unit_test::readwrite_property<T> p_value; -}; - -// ************************************************************************** // -// ************** runtime::arguments_store ************** // -// ************************************************************************** // - -class arguments_store { -public: - typedef std::map<cstring, argument_ptr> storage_type; - - /// Returns number of arguments in the store; mostly used for testing - std::size_t size() const { return m_arguments.size(); } - - /// Clears the store for reuse - void clear() { m_arguments.clear(); } - - /// Returns true if there is an argument corresponding to the specified parameter name - bool has( cstring parameter_name ) const - { - return m_arguments.find( parameter_name ) != m_arguments.end(); - } - - /// Provides types access to argument value by parameter name - template<typename T> - T const& get( cstring parameter_name ) const { - return const_cast<arguments_store*>(this)->get<T>( parameter_name ); - } - - template<typename T> - T& get( cstring parameter_name ) { - storage_type::const_iterator found = m_arguments.find( parameter_name ); - BOOST_TEST_I_ASSRT( found != m_arguments.end(), - access_to_missing_argument() - << "There is no argument provided for parameter " - << parameter_name ); - - argument_ptr arg = found->second; - - BOOST_TEST_I_ASSRT( arg->p_value_type == rtti::type_id<T>(), - arg_type_mismatch() - << "Access with invalid type for argument corresponding to parameter " - << parameter_name ); - - return static_cast<typed_argument<T>&>( *arg ).p_value.value; - } - - /// Set's the argument value for specified parameter name - template<typename T> - void set( cstring parameter_name, T const& value ) - { - m_arguments[parameter_name] = argument_ptr( new typed_argument<T>( value ) ); - } - -private: - // Data members - storage_type m_arguments; -}; - -} // namespace runtime -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_RUNTIME_ARGUMENT_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/runtime/argument_factory.hpp b/src/third_party/boost-1.69.0/boost/test/utils/runtime/argument_factory.hpp deleted file mode 100644 index e281cf93f7a..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/runtime/argument_factory.hpp +++ /dev/null @@ -1,243 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : argument factories for different kinds of parameters -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_RUNTIME_ARGUMENT_FACTORY_HPP -#define BOOST_TEST_UTILS_RUNTIME_ARGUMENT_FACTORY_HPP - -// Boost.Test Runtime parameters -#include <boost/test/utils/runtime/errors.hpp> -#include <boost/test/utils/runtime/argument.hpp> -#include <boost/test/utils/runtime/modifier.hpp> - -// Boost.Test -#include <boost/test/utils/basic_cstring/io.hpp> -#include <boost/test/utils/basic_cstring/compare.hpp> -#include <boost/test/utils/string_cast.hpp> - -// Boost -#include <boost/function/function2.hpp> - -// STL -#include <vector> - -#include <boost/test/detail/suppress_warnings.hpp> - -namespace boost { -namespace runtime { - -// ************************************************************************** // -// ************** runtime::value_interpreter ************** // -// ************************************************************************** // - -template<typename ValueType, bool is_enum> -struct value_interpreter; - -//____________________________________________________________________________// - -template<typename ValueType> -struct value_interpreter<ValueType, false> { - template<typename Modifiers> - explicit value_interpreter( Modifiers const& ) {} - - ValueType interpret( cstring param_name, cstring source ) const - { - ValueType res; - if( !unit_test::utils::string_as<ValueType>( source, res ) ) - BOOST_TEST_I_THROW( format_error( param_name ) << source << - " can't be interpreted as value of parameter " << param_name << "." ); - return res; - } -}; - -//____________________________________________________________________________// - -template<> -struct value_interpreter<std::string, false> { - template<typename Modifiers> - explicit value_interpreter( Modifiers const& ) {} - - std::string interpret( cstring, cstring source ) const - { - return std::string( source.begin(), source.size() ); - } -}; - -//____________________________________________________________________________// - -template<> -struct value_interpreter<cstring, false> { - template<typename Modifiers> - explicit value_interpreter( Modifiers const& ) {} - - cstring interpret( cstring, cstring source ) const - { - return source; - } -}; - -//____________________________________________________________________________// - -template<> -struct value_interpreter<bool, false> { - template<typename Modifiers> - explicit value_interpreter( Modifiers const& ) {} - - bool interpret( cstring param_name, cstring source ) const - { - static cstring const s_YES( "YES" ); - static cstring const s_Y( "Y" ); - static cstring const s_NO( "NO" ); - static cstring const s_N( "N" ); - static cstring const s_TRUE( "TRUE" ); - static cstring const s_FALSE( "FALSE" ); - static cstring const s_one( "1" ); - static cstring const s_zero( "0" ); - - source.trim(); - - if( source.is_empty() || - case_ins_eq( source, s_YES ) || - case_ins_eq( source, s_Y ) || - case_ins_eq( source, s_one ) || - case_ins_eq( source, s_TRUE ) ) - return true; - - if( case_ins_eq( source, s_NO ) || - case_ins_eq( source, s_N ) || - case_ins_eq( source, s_zero ) || - case_ins_eq( source, s_FALSE ) ) - return false; - - BOOST_TEST_I_THROW( format_error( param_name ) << source << " can't be interpreted as bool value." ); - } -}; - -//____________________________________________________________________________// - -template<typename EnumType> -struct value_interpreter<EnumType, true> { - template<typename Modifiers> - explicit value_interpreter( Modifiers const& m ) -#if defined(BOOST_TEST_CLA_NEW_API) - : m_name_to_value( m[enum_values<EnumType>::value] ) - { - } -#else - { - std::vector<std::pair<cstring,EnumType> > const& values = m[enum_values<EnumType>::value]; - - m_name_to_value.insert( values.begin(), values.end() ); - } -#endif - - EnumType interpret( cstring param_name, cstring source ) const - { - typename std::map<cstring,EnumType>::const_iterator found = m_name_to_value.find( source ); - - BOOST_TEST_I_ASSRT( found != m_name_to_value.end(), - format_error( param_name ) << source << - " is not a valid enumeration value name for parameter " << param_name << "." ); - - return found->second; - } - -private: - // Data members - std::map<cstring,EnumType> m_name_to_value; -}; - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** runtime::argument_factory ************** // -// ************************************************************************** // - -template<typename ValueType, bool is_enum, bool repeatable> -class argument_factory; - -//____________________________________________________________________________// - -template<typename ValueType, bool is_enum> -class argument_factory<ValueType, is_enum, false> { -public: - template<typename Modifiers> - explicit argument_factory( Modifiers const& m ) - : m_interpreter( m ) - , m_optional_value( nfp::opt_get( m, optional_value, ValueType() ) ) - , m_default_value( nfp::opt_get( m, default_value, ValueType() ) ) - { - } - - void produce_argument( cstring source, cstring param_name, arguments_store& store ) const - { - store.set( param_name, source.empty() ? m_optional_value : m_interpreter.interpret( param_name, source ) ); - } - - void produce_default( cstring param_name, arguments_store& store ) const - { - store.set( param_name, m_default_value ); - } - -private: - // Data members - typedef value_interpreter<ValueType, is_enum> interp_t; - interp_t m_interpreter; - ValueType m_optional_value; - ValueType m_default_value; -}; - -//____________________________________________________________________________// - -template<typename ValueType, bool is_enum> -class argument_factory<ValueType, is_enum, true> { -public: - template<typename Modifiers> - explicit argument_factory( Modifiers const& m ) - : m_interpreter( m ) - { - } - - void produce_argument( cstring source, cstring param_name, arguments_store& store ) const - { - ValueType value = m_interpreter.interpret( param_name, source ); - - if( store.has( param_name ) ) { - std::vector<ValueType>& values = store.get<std::vector<ValueType> >( param_name ); - values.push_back( value ); - } - else { - std::vector<ValueType> values( 1, value ); - - store.set( param_name, values ); - } - - } - void produce_default( cstring param_name, arguments_store& store ) const - { - store.set( param_name, std::vector<ValueType>() ); - } - -private: - // Data members - value_interpreter<ValueType, is_enum> m_interpreter; -}; - -//____________________________________________________________________________// - -} // namespace runtime -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_RUNTIME_ARGUMENT_FACTORY_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/runtime/cla/argv_traverser.hpp b/src/third_party/boost-1.69.0/boost/test/utils/runtime/cla/argv_traverser.hpp deleted file mode 100644 index d65c88e9205..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/runtime/cla/argv_traverser.hpp +++ /dev/null @@ -1,106 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Use, modification, and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : defines facility to hide input traversing details -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_RUNTIME_CLA_ARGV_TRAVERSER_HPP -#define BOOST_TEST_UTILS_RUNTIME_CLA_ARGV_TRAVERSER_HPP - -// Boost.Test Runtime parameters -#include <boost/test/utils/runtime/fwd.hpp> -#include <cstring> - -#include <boost/test/detail/suppress_warnings.hpp> - -namespace boost { -namespace runtime { -namespace cla { - -// ************************************************************************** // -// ************** runtime::cla::argv_traverser ************** // -// ************************************************************************** // - -class argv_traverser { - typedef char const** argv_type; -public: - /// Constructs traverser based on argc/argv pair - /// argv is taken "by reference" and later can be - /// updated in remainder method - argv_traverser( int argc, argv_type argv ) - : m_argc( argc ) - , m_curr_token( 0 ) - , m_token_size( 0 ) - , m_argv( argv ) - { - // save program name - save_token(); - } - - /// Returns new argc - int remainder() - { - return m_argc; - } - - /// Returns true, if we reached end on input - bool eoi() const - { - return m_curr_token == m_argc; - } - - /// Returns current token in the input - cstring current_token() - { - if( eoi() ) - return cstring(); - - return cstring( m_argv[m_curr_token], m_token_size ); - } - - /// Saves current token for remainder - void save_token() - { - ++m_curr_token; - - if( !eoi() ) - m_token_size = ::strlen( m_argv[m_curr_token] ); - } - - /// Commit current token and iterate to next one - void next_token() - { - if( !eoi() ) { - for( std::size_t i = m_curr_token; i < m_argc-1; ++i ) - m_argv[i] = m_argv[i + 1]; - - --m_argc; - - m_token_size = ::strlen( m_argv[m_curr_token] ); - } - } - -private: - - // Data members - std::size_t m_argc; // total number of arguments - std::size_t m_curr_token; // current token index in argv - std::size_t m_token_size; // current token size - argv_type m_argv; // all arguments -}; - -} // namespace cla -} // namespace runtime -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_RUNTIME_CLA_ARGV_TRAVERSER_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/runtime/cla/parser.hpp b/src/third_party/boost-1.69.0/boost/test/utils/runtime/cla/parser.hpp deleted file mode 100644 index bd3df7090c5..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/runtime/cla/parser.hpp +++ /dev/null @@ -1,625 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Use, modification, and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -//!@file -//!@brief CLA parser -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_RUNTIME_CLA_PARSER_HPP -#define BOOST_TEST_UTILS_RUNTIME_CLA_PARSER_HPP - -// Boost.Test Runtime parameters -#include <boost/test/utils/runtime/argument.hpp> -#include <boost/test/utils/runtime/modifier.hpp> -#include <boost/test/utils/runtime/parameter.hpp> - -#include <boost/test/utils/runtime/cla/argv_traverser.hpp> - -// Boost.Test -#include <boost/test/utils/foreach.hpp> -#include <boost/test/utils/algorithm.hpp> -#include <boost/test/detail/throw_exception.hpp> -#include <boost/test/detail/global_typedef.hpp> - -#include <boost/algorithm/cxx11/all_of.hpp> // !! ?? unnecessary after cxx11 - -// STL -// !! ?? #include <unordered_set> -#include <set> -#include <iostream> - -#include <boost/test/detail/suppress_warnings.hpp> - -namespace boost { -namespace runtime { -namespace cla { - -// ************************************************************************** // -// ************** runtime::cla::parameter_trie ************** // -// ************************************************************************** // - -namespace rt_cla_detail { - -struct parameter_trie; -typedef shared_ptr<parameter_trie> parameter_trie_ptr; -typedef std::map<char,parameter_trie_ptr> trie_per_char; -typedef std::vector<boost::reference_wrapper<parameter_cla_id const> > param_cla_id_list; - -struct parameter_trie { - parameter_trie() : m_has_final_candidate( false ) {} - - /// If subtrie corresponding to the char c exists returns it otherwise creates new - parameter_trie_ptr make_subtrie( char c ) - { - trie_per_char::const_iterator it = m_subtrie.find( c ); - - if( it == m_subtrie.end() ) - it = m_subtrie.insert( std::make_pair( c, parameter_trie_ptr( new parameter_trie ) ) ).first; - - return it->second; - } - - /// Creates series of sub-tries per characters in a string - parameter_trie_ptr make_subtrie( cstring s ) - { - parameter_trie_ptr res; - - BOOST_TEST_FOREACH( char, c, s ) - res = (res ? res->make_subtrie( c ) : make_subtrie( c )); - - return res; - } - - /// Registers candidate parameter for this subtrie. If final, it needs to be unique - void add_candidate_id( parameter_cla_id const& param_id, basic_param_ptr param_candidate, bool final ) - { - BOOST_TEST_I_ASSRT( !m_has_final_candidate && (!final || m_id_candidates.empty()), - conflicting_param() << "Parameter cla id " << param_id.m_tag << " conflicts with the " - << "parameter cla id " << m_id_candidates.back().get().m_tag ); - - m_has_final_candidate = final; - m_id_candidates.push_back( ref(param_id) ); - - if( m_id_candidates.size() == 1 ) - m_param_candidate = param_candidate; - else - m_param_candidate.reset(); - } - - /// Gets subtrie for specified char if present or nullptr otherwise - parameter_trie_ptr get_subtrie( char c ) const - { - trie_per_char::const_iterator it = m_subtrie.find( c ); - - return it != m_subtrie.end() ? it->second : parameter_trie_ptr(); - } - - // Data members - trie_per_char m_subtrie; - param_cla_id_list m_id_candidates; - basic_param_ptr m_param_candidate; - bool m_has_final_candidate; -}; - -// ************************************************************************** // -// ************** runtime::cla::report_foreing_token ************** // -// ************************************************************************** // - -static void -report_foreing_token( cstring program_name, cstring token ) -{ - std::cerr << "Boost.Test WARNING: token \"" << token << "\" does not correspond to the Boost.Test argument \n" - << " and should be placed after all Boost.Test arguments and the -- separator.\n" - << " For example: " << program_name << " --random -- " << token << "\n"; -} - -} // namespace rt_cla_detail - -// ************************************************************************** // -// ************** runtime::cla::parser ************** // -// ************************************************************************** // - -class parser { -public: - /// Initializes a parser and builds internal trie representation used for - /// parsing based on the supplied parameters -#ifndef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS - template<typename Modifiers=nfp::no_params_type> - parser( parameters_store const& parameters, Modifiers const& m = nfp::no_params ) -#else - template<typename Modifiers> - parser( parameters_store const& parameters, Modifiers const& m ) -#endif - { - nfp::opt_assign( m_end_of_param_indicator, m, end_of_params ); - nfp::opt_assign( m_negation_prefix, m, negation_prefix ); - - BOOST_TEST_I_ASSRT( algorithm::all_of( m_end_of_param_indicator.begin(), - m_end_of_param_indicator.end(), - parameter_cla_id::valid_prefix_char ), - invalid_cla_id() << "End of parameters indicator can only consist of prefix characters." ); - - BOOST_TEST_I_ASSRT( algorithm::all_of( m_negation_prefix.begin(), - m_negation_prefix.end(), - parameter_cla_id::valid_name_char ), - invalid_cla_id() << "Negation prefix can only consist of prefix characters." ); - - build_trie( parameters ); - } - - // input processing method - int - parse( int argc, char** argv, runtime::arguments_store& res ) - { - // save program name for help message - m_program_name = argv[0]; - cstring path_sep( "\\/" ); - - cstring::iterator it = unit_test::utils::find_last_of( m_program_name.begin(), m_program_name.end(), - path_sep.begin(), path_sep.end() ); - if( it != m_program_name.end() ) - m_program_name.trim_left( it + 1 ); - - // Set up the traverser - argv_traverser tr( argc, (char const**)argv ); - - // Loop till we reach end of input - while( !tr.eoi() ) { - cstring curr_token = tr.current_token(); - - cstring prefix; - cstring name; - cstring value_separator; - bool negative_form = false; - - // Perform format validations and split the argument into prefix, name and separator - // False return value indicates end of params indicator is met - if( !validate_token_format( curr_token, prefix, name, value_separator, negative_form ) ) { - // get rid of "end of params" token - tr.next_token(); - break; - } - - // Locate trie corresponding to found prefix and skip it in the input - trie_ptr curr_trie = m_param_trie[prefix]; - - if( !curr_trie ) { - // format_error() << "Unrecognized parameter prefix in the argument " << tr.current_token() - rt_cla_detail::report_foreing_token( m_program_name, curr_token ); - tr.save_token(); - continue; - } - - curr_token.trim_left( prefix.size() ); - - // Locate parameter based on a name and skip it in the input - locate_result locate_res = locate_parameter( curr_trie, name, curr_token ); - parameter_cla_id const& found_id = locate_res.first; - basic_param_ptr found_param = locate_res.second; - - if( negative_form ) { - BOOST_TEST_I_ASSRT( found_id.m_negatable, - format_error( found_param->p_name ) - << "Parameter tag " << found_id.m_tag << " is not negatable." ); - - curr_token.trim_left( m_negation_prefix.size() ); - } - - curr_token.trim_left( name.size() ); - - bool should_go_to_next = true; - cstring value; - - - // Skip validations if parameter has optional value and we are at the end of token - if( !value_separator.is_empty() || !found_param->p_has_optional_value ) { - - // we are given a separator or there is no optional value - - // Validate and skip value separator in the input - BOOST_TEST_I_ASSRT( found_id.m_value_separator == value_separator, - format_error( found_param->p_name ) - << "Invalid separator for the parameter " - << found_param->p_name - << " in the argument " << tr.current_token() ); - - curr_token.trim_left( value_separator.size() ); - - // Deduce value source - value = curr_token; - if( value.is_empty() ) { - tr.next_token(); - value = tr.current_token(); - } - - BOOST_TEST_I_ASSRT( !value.is_empty(), - format_error( found_param->p_name ) - << "Missing an argument value for the parameter " - << found_param->p_name - << " in the argument " << tr.current_token() ); - } - else if( (value_separator.is_empty() && found_id.m_value_separator.empty()) ) { - // Deduce value source - value = curr_token; - if( value.is_empty() ) { - tr.next_token(); // tokenization broke the value, we check the next one - - if(!found_param->p_has_optional_value) { - // there is no separator and there is no optional value - // we look for the value on the next token - // example "-t XXXX" (no default) - // and we commit this value as being the passed value - value = tr.current_token(); - } - else { - // there is no separator and the value is optional - // we check the next token - // example "-c" (defaults to true) - // and commit this as the value if this is not a token - cstring value_check = tr.current_token(); - - cstring prefix_test, name_test, value_separator_test; - bool negative_form_test; - if( validate_token_format( value_check, prefix_test, name_test, value_separator_test, negative_form_test ) - && m_param_trie[prefix_test]) { - // this is a token, we consume what we have - should_go_to_next = false; - } - else { - // this is a value, we commit it - value = value_check; - } - } - } - } - - // Validate against argument duplication - BOOST_TEST_I_ASSRT( !res.has( found_param->p_name ) || found_param->p_repeatable, - duplicate_arg( found_param->p_name ) - << "Duplicate argument value for the parameter " - << found_param->p_name - << " in the argument " << tr.current_token() ); - - // Produce argument value - found_param->produce_argument( value, negative_form, res ); - - if(should_go_to_next) { - tr.next_token(); - } - } - - // generate the remainder and return it's size - return tr.remainder(); - } - - // help/usage/version - void - version( std::ostream& ostr ) - { - ostr << "Boost.Test module "; - -#if defined(BOOST_TEST_MODULE) - // we do not want to refer to the master test suite there - ostr << '\'' << BOOST_TEST_STRINGIZE( BOOST_TEST_MODULE ).trim( "\"" ) << "' "; -#endif - - ostr << "in executable '" << m_program_name << "'\n"; - ostr << "Compiled from Boost version " - << BOOST_VERSION/100000 << "." - << BOOST_VERSION/100 % 1000 << "." - << BOOST_VERSION % 100 ; - ostr << " with "; -#if defined(BOOST_TEST_INCLUDED) - ostr << "header-only inclusion of"; -#elif defined(BOOST_TEST_DYN_LINK) - ostr << "dynamic linking to"; -#else - ostr << "static linking to"; -#endif - ostr << " Boost.Test\n"; - ostr << "- Compiler: " << BOOST_COMPILER << '\n' - << "- Platform: " << BOOST_PLATFORM << '\n' - << "- STL : " << BOOST_STDLIB; - ostr << std::endl; - } - - void - usage(std::ostream& ostr, - cstring param_name = cstring(), - bool use_color = true) - { - namespace utils = unit_test::utils; - namespace ut_detail = unit_test::ut_detail; - - if( !param_name.is_empty() ) { - basic_param_ptr param = locate_parameter( m_param_trie[help_prefix], param_name, "" ).second; - param->usage( ostr, m_negation_prefix ); - } - else { - ostr << "\n The program '" << m_program_name << "' is a Boost.test module containing unit tests."; - - { - BOOST_TEST_SCOPE_SETCOLOR( use_color, ostr, term_attr::BRIGHT, term_color::ORIGINAL ); - ostr << "\n\n Usage\n "; - } - - { - BOOST_TEST_SCOPE_SETCOLOR( use_color, ostr, term_attr::BRIGHT, term_color::GREEN ); - ostr << m_program_name << " [Boost.Test argument]... "; - } - if( !m_end_of_param_indicator.empty() ) { - BOOST_TEST_SCOPE_SETCOLOR( use_color, ostr, term_attr::BRIGHT, term_color::YELLOW ); - ostr << '[' << m_end_of_param_indicator << " [custom test module argument]...]"; - } - } - - ostr << "\n\n Use\n "; - { - - BOOST_TEST_SCOPE_SETCOLOR( use_color, ostr, term_attr::BRIGHT, term_color::GREEN ); - ostr << m_program_name << " --help"; - } - ostr << "\n or "; - { - BOOST_TEST_SCOPE_SETCOLOR( use_color, ostr, term_attr::BRIGHT, term_color::GREEN ); - ostr << m_program_name << " --help=<parameter name>"; - } - ostr << "\n for detailed help on Boost.Test parameters.\n"; - } - - void - help(std::ostream& ostr, - parameters_store const& parameters, - cstring param_name, - bool use_color = true) - { - namespace utils = unit_test::utils; - namespace ut_detail = unit_test::ut_detail; - - if( !param_name.is_empty() ) { - basic_param_ptr param = locate_parameter( m_param_trie[help_prefix], param_name, "" ).second; - param->help( ostr, m_negation_prefix, use_color); - return; - } - - usage(ostr, cstring(), use_color); - - ostr << "\n\n"; - { - BOOST_TEST_SCOPE_SETCOLOR( use_color, ostr, term_attr::BRIGHT, term_color::ORIGINAL ); - ostr << " Command line flags:\n"; - } - runtime::commandline_pretty_print( - ostr, - " ", - "The command line flags of Boost.Test are listed below. " - "All parameters are optional. You can specify parameter value either " - "as a command line argument or as a value of its corresponding environment " - "variable. If a flag is specified as a command line argument and an environment variable " - "at the same time, the command line takes precedence. " - "The command line argument " - "support name guessing, and works with shorter names as long as those are not ambiguous." - ); - - if( !m_end_of_param_indicator.empty() ) { - ostr << "\n\n All the arguments after the '"; - { - BOOST_TEST_SCOPE_SETCOLOR( use_color, ostr, term_attr::BRIGHT, term_color::YELLOW ); - ostr << m_end_of_param_indicator; - } - ostr << "' are ignored by Boost.Test."; - } - - - { - BOOST_TEST_SCOPE_SETCOLOR( use_color, ostr, term_attr::BRIGHT, term_color::ORIGINAL ); - ostr << "\n\n Environment variables:\n"; - } - runtime::commandline_pretty_print( - ostr, - " ", - "Every argument listed below may also be set by a corresponding environment" - "variable. For an argument '--argument_x=<value>', the corresponding " - "environment variable is 'BOOST_TEST_ARGUMENT_X=value" - ); - - - - ostr << "\n\n The following parameters are supported:\n"; - - BOOST_TEST_FOREACH( - parameters_store::storage_type::value_type const&, - v, - parameters.all() ) - { - basic_param_ptr param = v.second; - ostr << "\n"; - param->usage( ostr, m_negation_prefix, use_color); - } - - } - -private: - typedef rt_cla_detail::parameter_trie_ptr trie_ptr; - typedef rt_cla_detail::trie_per_char trie_per_char; - typedef std::map<cstring,trie_ptr> str_to_trie; - - void - build_trie( parameters_store const& parameters ) - { - // Iterate over all parameters - BOOST_TEST_FOREACH( parameters_store::storage_type::value_type const&, v, parameters.all() ) { - basic_param_ptr param = v.second; - - // Register all parameter's ids in trie. - BOOST_TEST_FOREACH( parameter_cla_id const&, id, param->cla_ids() ) { - // This is the trie corresponding to the prefix. - trie_ptr next_trie = m_param_trie[id.m_prefix]; - if( !next_trie ) - next_trie = m_param_trie[id.m_prefix] = trie_ptr( new rt_cla_detail::parameter_trie ); - - // Build the trie, by following name's characters - // and register this parameter as candidate on each level - for( size_t index = 0; index < id.m_tag.size(); ++index ) { - next_trie = next_trie->make_subtrie( id.m_tag[index] ); - - next_trie->add_candidate_id( id, param, index == (id.m_tag.size() - 1) ); - } - } - } - } - - bool - validate_token_format( cstring token, cstring& prefix, cstring& name, cstring& separator, bool& negative_form ) - { - // Match prefix - cstring::iterator it = token.begin(); - while( it != token.end() && parameter_cla_id::valid_prefix_char( *it ) ) - ++it; - - prefix.assign( token.begin(), it ); - - if( prefix.empty() ) - return true; - - // Match name - while( it != token.end() && parameter_cla_id::valid_name_char( *it ) ) - ++it; - - name.assign( prefix.end(), it ); - - if( name.empty() ) { - if( prefix == m_end_of_param_indicator ) - return false; - - BOOST_TEST_I_THROW( format_error() << "Invalid format for an actual argument " << token ); - } - - // Match value separator - while( it != token.end() && parameter_cla_id::valid_separator_char( *it ) ) - ++it; - - separator.assign( name.end(), it ); - - // Match negation prefix - negative_form = !m_negation_prefix.empty() && ( name.substr( 0, m_negation_prefix.size() ) == m_negation_prefix ); - if( negative_form ) - name.trim_left( m_negation_prefix.size() ); - - return true; - } - - // C++03: cannot have references as types - typedef std::pair<parameter_cla_id, basic_param_ptr> locate_result; - - locate_result - locate_parameter( trie_ptr curr_trie, cstring name, cstring token ) - { - std::vector<trie_ptr> typo_candidates; - std::vector<trie_ptr> next_typo_candidates; - trie_ptr next_trie; - - BOOST_TEST_FOREACH( char, c, name ) { - if( curr_trie ) { - // locate next subtrie corresponding to the char - next_trie = curr_trie->get_subtrie( c ); - - if( next_trie ) - curr_trie = next_trie; - else { - // Initiate search for typo candicates. We will account for 'wrong char' typo - // 'missing char' typo and 'extra char' typo - BOOST_TEST_FOREACH( trie_per_char::value_type const&, typo_cand, curr_trie->m_subtrie ) { - // 'wrong char' typo - typo_candidates.push_back( typo_cand.second ); - - // 'missing char' typo - if( (next_trie = typo_cand.second->get_subtrie( c )) ) - typo_candidates.push_back( next_trie ); - } - - // 'extra char' typo - typo_candidates.push_back( curr_trie ); - - curr_trie.reset(); - } - } - else { - // go over existing typo candidates and see if they are still viable - BOOST_TEST_FOREACH( trie_ptr, typo_cand, typo_candidates ) { - trie_ptr next_typo_cand = typo_cand->get_subtrie( c ); - - if( next_typo_cand ) - next_typo_candidates.push_back( next_typo_cand ); - } - - next_typo_candidates.swap( typo_candidates ); - next_typo_candidates.clear(); - } - } - - if( !curr_trie ) { - std::vector<cstring> typo_candidate_names; - std::set<parameter_cla_id const*> unique_typo_candidate; // !! ?? unordered_set - typo_candidate_names.reserve( typo_candidates.size() ); -// !! ?? unique_typo_candidate.reserve( typo_candidates.size() ); - - BOOST_TEST_FOREACH( trie_ptr, trie_cand, typo_candidates ) { - // avoid ambiguos candidate trie - if( trie_cand->m_id_candidates.size() > 1 ) - continue; - - BOOST_TEST_FOREACH( parameter_cla_id const&, param_cand, trie_cand->m_id_candidates ) { - if( !unique_typo_candidate.insert( ¶m_cand ).second ) - continue; - - typo_candidate_names.push_back( param_cand.m_tag ); - } - } - -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - BOOST_TEST_I_THROW( unrecognized_param( std::move(typo_candidate_names) ) - << "An unrecognized parameter in the argument " - << token ); -#else - BOOST_TEST_I_THROW( unrecognized_param( typo_candidate_names ) - << "An unrecognized parameter in the argument " - << token ); -#endif - } - - if( curr_trie->m_id_candidates.size() > 1 ) { - std::vector<cstring> amb_names; - BOOST_TEST_FOREACH( parameter_cla_id const&, param_id, curr_trie->m_id_candidates ) - amb_names.push_back( param_id.m_tag ); - -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - BOOST_TEST_I_THROW( ambiguous_param( std::move( amb_names ) ) - << "An ambiguous parameter name in the argument " << token ); -#else - BOOST_TEST_I_THROW( ambiguous_param( amb_names ) - << "An ambiguous parameter name in the argument " << token ); -#endif - } - - return locate_result( curr_trie->m_id_candidates.back().get(), curr_trie->m_param_candidate ); - } - - // Data members - cstring m_program_name; - std::string m_end_of_param_indicator; - std::string m_negation_prefix; - str_to_trie m_param_trie; -}; - -} // namespace cla -} // namespace runtime -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_RUNTIME_CLA_PARSER_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/runtime/env/fetch.hpp b/src/third_party/boost-1.69.0/boost/test/utils/runtime/env/fetch.hpp deleted file mode 100644 index 97d54d4905f..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/runtime/env/fetch.hpp +++ /dev/null @@ -1,108 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : implements fetching absent parameter athuments from environment -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_RUNTIME_ENV_FETCH_HPP -#define BOOST_TEST_UTILS_RUNTIME_ENV_FETCH_HPP - -// Boost.Test Runtime parameters -#include <boost/test/utils/runtime/parameter.hpp> -#include <boost/test/utils/runtime/argument.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -// C Runtime -#include <stdlib.h> - -namespace boost { -namespace runtime { -namespace env { - -namespace env_detail { - -#ifndef UNDER_CE - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4996) // getenv -#endif - -inline std::pair<cstring,bool> -sys_read_var( cstring var_name ) -{ - using namespace std; - char const* res = getenv( var_name.begin() ); - - return std::make_pair( cstring(res), res != NULL ); -} - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#else - -inline std::pair<cstring,bool> -sys_read_var( cstring var_name ) -{ - return std::make_pair( cstring(), false ); -} - -#endif - -//____________________________________________________________________________// - -template<typename ReadFunc> -inline void -fetch_absent( parameters_store const& params, runtime::arguments_store& args, ReadFunc read_func ) -{ - BOOST_TEST_FOREACH( parameters_store::storage_type::value_type const&, v, params.all() ) { - basic_param_ptr param = v.second; - - if( args.has( param->p_name ) || param->p_env_var.empty() ) - continue; - - std::pair<cstring,bool> value = read_func( param->p_env_var ); - - if( !value.second ) - continue; - - // Validate against unexpected empty value - BOOST_TEST_I_ASSRT( !value.first.is_empty() || param->p_has_optional_value, - format_error( param->p_name ) - << "Missing an argument value for the parameter " << param->p_name - << " in the environment." ); - - // Produce argument value - param->produce_argument( value.first, false, args ); - - } -} - -//____________________________________________________________________________// - -} // namespace env_detail - -inline void -fetch_absent( parameters_store const& params, runtime::arguments_store& args ) -{ - env_detail::fetch_absent( params, args, &env_detail::sys_read_var ); -} - -} // namespace env -} // namespace runtime -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_RUNTIME_ENV_FETCH_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/runtime/errors.hpp b/src/third_party/boost-1.69.0/boost/test/utils/runtime/errors.hpp deleted file mode 100644 index 056a823e338..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/runtime/errors.hpp +++ /dev/null @@ -1,195 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : defines runtime parameters setup error -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_RUNTIME_INIT_ERROR_HPP -#define BOOST_TEST_UTILS_RUNTIME_INIT_ERROR_HPP - -// Boost.Test Runtime parameters -#include <boost/test/utils/runtime/fwd.hpp> - -// Boost.Test -#include <boost/test/utils/string_cast.hpp> - -// Boost.Test -#include <boost/config.hpp> - -// STL -#include <exception> -#include <vector> - -#include <boost/test/detail/suppress_warnings.hpp> - -namespace boost { -namespace runtime { - -// ************************************************************************** // -// ************** runtime::param_error ************** // -// ************************************************************************** // - -class BOOST_SYMBOL_VISIBLE param_error : public std::exception { -public: - ~param_error() BOOST_NOEXCEPT_OR_NOTHROW {} - - virtual const char * what() const BOOST_NOEXCEPT_OR_NOTHROW - { - return msg.c_str(); - } - - cstring param_name; - std::string msg; - -protected: - explicit param_error( cstring param_name_ ) : param_name( param_name_) {} -}; - -//____________________________________________________________________________// - -class BOOST_SYMBOL_VISIBLE init_error : public param_error { -protected: - explicit init_error( cstring param_name ) : param_error( param_name ) {} - ~init_error() BOOST_NOEXCEPT_OR_NOTHROW {} -}; - -class input_error : public param_error { -protected: - explicit input_error( cstring param_name ) : param_error( param_name ) {} - ~input_error() BOOST_NOEXCEPT_OR_NOTHROW {} -}; - -//____________________________________________________________________________// - -template<typename Derived, typename Base> -class BOOST_SYMBOL_VISIBLE specific_param_error : public Base { -protected: - explicit specific_param_error( cstring param_name ) : Base( param_name ) {} - ~specific_param_error() BOOST_NOEXCEPT_OR_NOTHROW {} - -public: - -//____________________________________________________________________________// - -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \ - !defined(BOOST_NO_CXX11_REF_QUALIFIERS) - - Derived operator<<(char const* val) && - { - this->msg.append( val ); - - return static_cast<Derived&&>(*this); - } - - //____________________________________________________________________________// - - template<typename T> - Derived operator<<(T const& val) && - { - this->msg.append( unit_test::utils::string_cast( val ) ); - - return static_cast<Derived&&>(*this); - } - - //____________________________________________________________________________// - -#else - - Derived const& operator<<(char const* val) const - { - const_cast<specific_param_error<Derived, Base>&>(*this).msg.append( val ); - - return static_cast<Derived const&>(*this); - } - - //____________________________________________________________________________// - - template<typename T> - Derived const& operator<<(T const& val) const - { - const_cast<specific_param_error<Derived, Base>&>(*this).msg.append( unit_test::utils::string_cast( val ) ); - - return static_cast<Derived const&>(*this); - } - - //____________________________________________________________________________// - -#endif - -}; - - - -// ************************************************************************** // -// ************** specific exception types ************** // -// ************************************************************************** // - -#define SPECIFIC_EX_TYPE( type, base ) \ -class type : public specific_param_error<type,base> { \ -public: \ - explicit type( cstring param_name = cstring() ) \ - : specific_param_error<type,base>( param_name ) \ - {} \ -} \ -/**/ - -SPECIFIC_EX_TYPE( invalid_cla_id, init_error ); -SPECIFIC_EX_TYPE( duplicate_param, init_error ); -SPECIFIC_EX_TYPE( conflicting_param, init_error ); -SPECIFIC_EX_TYPE( unknown_param, init_error ); -SPECIFIC_EX_TYPE( access_to_missing_argument, init_error ); -SPECIFIC_EX_TYPE( arg_type_mismatch, init_error ); -SPECIFIC_EX_TYPE( invalid_param_spec, init_error ); - -SPECIFIC_EX_TYPE( format_error, input_error ); -SPECIFIC_EX_TYPE( duplicate_arg, input_error ); -SPECIFIC_EX_TYPE( missing_req_arg, input_error ); - -#undef SPECIFIC_EX_TYPE - -class BOOST_SYMBOL_VISIBLE ambiguous_param : public specific_param_error<ambiguous_param, input_error> { -public: -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - explicit ambiguous_param( std::vector<cstring>&& amb_candidates ) - : specific_param_error<ambiguous_param,input_error>( "" ) - , m_amb_candidates( std::move( amb_candidates ) ) {} -#else - explicit ambiguous_param( std::vector<cstring> const& amb_candidates ) - : specific_param_error<ambiguous_param,input_error>( "" ) - , m_amb_candidates( amb_candidates ) {} -#endif - ~ambiguous_param() BOOST_NOEXCEPT_OR_NOTHROW {} - - std::vector<cstring> m_amb_candidates; -}; - -class unrecognized_param : public specific_param_error<unrecognized_param, input_error> { -public: -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - explicit unrecognized_param( std::vector<cstring>&& type_candidates ) - : specific_param_error<unrecognized_param,input_error>( "" ) - , m_typo_candidates( std::move( type_candidates ) ) {} -#else - explicit unrecognized_param( std::vector<cstring> const& type_candidates ) - : specific_param_error<unrecognized_param,input_error>( "" ) - , m_typo_candidates( type_candidates ) {} -#endif - ~unrecognized_param() BOOST_NOEXCEPT_OR_NOTHROW {} - - std::vector<cstring> m_typo_candidates; -}; - -} // namespace runtime -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_RUNTIME_INIT_ERROR_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/runtime/finalize.hpp b/src/third_party/boost-1.69.0/boost/test/utils/runtime/finalize.hpp deleted file mode 100644 index 181428550c1..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/runtime/finalize.hpp +++ /dev/null @@ -1,56 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : runtime parameters initialization final step -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_RUNTIME_FINALIZE_HPP -#define BOOST_TEST_UTILS_RUNTIME_FINALIZE_HPP - -// Boost.Test Runtime parameters -#include <boost/test/utils/runtime/parameter.hpp> -#include <boost/test/utils/runtime/argument.hpp> - -// Boost.Test -#include <boost/test/utils/foreach.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - -namespace boost { -namespace runtime { - -inline void -finalize_arguments( parameters_store const& params, runtime::arguments_store& args ) -{ - BOOST_TEST_FOREACH( parameters_store::storage_type::value_type const&, v, params.all() ) { - basic_param_ptr param = v.second; - - if( !args.has( param->p_name ) ) { - if( param->p_has_default_value ) - param->produce_default( args ); - - if( !args.has( param->p_name ) ) { - BOOST_TEST_I_ASSRT( param->p_optional, - missing_req_arg( param->p_name ) << "Missing argument for required parameter " << param->p_name << "." ); - } - } - - if( args.has( param->p_name ) && !!param->p_callback ) - param->p_callback( param->p_name ); - } -} - -} // namespace runtime -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_RUNTIME_FINALIZE_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/runtime/fwd.hpp b/src/third_party/boost-1.69.0/boost/test/utils/runtime/fwd.hpp deleted file mode 100644 index 17ae8812226..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/runtime/fwd.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : runtime parameters forward declaration -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_RUNTIME_FWD_HPP -#define BOOST_TEST_UTILS_RUNTIME_FWD_HPP - -// Boost.Test -#include <boost/test/detail/config.hpp> -#include <boost/test/utils/basic_cstring/basic_cstring.hpp> -#include <boost/test/utils/basic_cstring/io.hpp> // operator<<(boost::runtime::cstring) - -// Boost -#include <boost/shared_ptr.hpp> - -// STL -#include <map> - -namespace boost { -namespace runtime { - -typedef unit_test::const_string cstring; - -class argument; -typedef shared_ptr<argument> argument_ptr; - -template<typename T> class typed_argument; - -class basic_param; -typedef shared_ptr<basic_param> basic_param_ptr; - -} // namespace runtime -} // namespace boost - -#endif // BOOST_TEST_UTILS_RUNTIME_FWD_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/runtime/modifier.hpp b/src/third_party/boost-1.69.0/boost/test/utils/runtime/modifier.hpp deleted file mode 100644 index 78c8817e7c3..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/runtime/modifier.hpp +++ /dev/null @@ -1,107 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Use, modification, and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : parameter modifiers -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_RUNTIME_MODIFIER_HPP -#define BOOST_TEST_UTILS_RUNTIME_MODIFIER_HPP - -// Boost.Test Runtime parameters -#include <boost/test/utils/runtime/fwd.hpp> - -// Boost.Test -#include <boost/test/utils/named_params.hpp> -#include <boost/test/detail/global_typedef.hpp> - -#include <boost/test/detail/suppress_warnings.hpp> - - -// New CLA API available only for some C++11 compilers -#if !defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) \ - && !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) \ - && !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) \ - && !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) -#define BOOST_TEST_CLA_NEW_API -#endif - -namespace boost { -namespace runtime { - -// ************************************************************************** // -// ************** environment variable modifiers ************** // -// ************************************************************************** // - -namespace { - -#ifdef BOOST_TEST_CLA_NEW_API -auto const& description = unit_test::static_constant<nfp::typed_keyword<cstring,struct description_t>>::value; -auto const& help = unit_test::static_constant<nfp::typed_keyword<cstring,struct help_t>>::value; -auto const& env_var = unit_test::static_constant<nfp::typed_keyword<cstring,struct env_var_t>>::value; -auto const& end_of_params = unit_test::static_constant<nfp::typed_keyword<cstring,struct end_of_params_t>>::value; -auto const& negation_prefix = unit_test::static_constant<nfp::typed_keyword<cstring,struct neg_prefix_t>>::value; -auto const& value_hint = unit_test::static_constant<nfp::typed_keyword<cstring,struct value_hint_t>>::value; -auto const& optional_value = unit_test::static_constant<nfp::keyword<struct optional_value_t>>::value; -auto const& default_value = unit_test::static_constant<nfp::keyword<struct default_value_t>>::value; -auto const& callback = unit_test::static_constant<nfp::keyword<struct callback_t>>::value; - -template<typename EnumType> -using enum_values = unit_test::static_constant< - nfp::typed_keyword<std::initializer_list<std::pair<const cstring,EnumType>>, struct enum_values_t> ->; - -#else - -nfp::typed_keyword<cstring,struct description_t> description; -nfp::typed_keyword<cstring,struct help_t> help; -nfp::typed_keyword<cstring,struct env_var_t> env_var; -nfp::typed_keyword<cstring,struct end_of_params_t> end_of_params; -nfp::typed_keyword<cstring,struct neg_prefix_t> negation_prefix; -nfp::typed_keyword<cstring,struct value_hint_t> value_hint; -nfp::keyword<struct optional_value_t> optional_value; -nfp::keyword<struct default_value_t> default_value; -nfp::keyword<struct callback_t> callback; - -template<typename EnumType> -struct enum_values_list { - typedef std::pair<cstring,EnumType> ElemT; - typedef std::vector<ElemT> ValuesT; - - enum_values_list const& - operator()( cstring k, EnumType v ) const - { - const_cast<enum_values_list*>(this)->m_values.push_back( ElemT( k, v ) ); - - return *this; - } - - operator ValuesT const&() const { return m_values; } - -private: - ValuesT m_values; -}; - -template<typename EnumType> -struct enum_values : unit_test::static_constant< - nfp::typed_keyword<enum_values_list<EnumType>, struct enum_values_t> > -{ -}; - -#endif - -} // local namespace - -} // namespace runtime -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_RUNTIME_MODIFIER_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/runtime/parameter.hpp b/src/third_party/boost-1.69.0/boost/test/utils/runtime/parameter.hpp deleted file mode 100644 index 01e5457bfef..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/runtime/parameter.hpp +++ /dev/null @@ -1,526 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : formal parameter definition -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_RUNTIME_PARAMETER_HPP -#define BOOST_TEST_UTILS_RUNTIME_PARAMETER_HPP - -// Boost.Test Runtime parameters -#include <boost/test/utils/runtime/fwd.hpp> -#include <boost/test/utils/runtime/modifier.hpp> -#include <boost/test/utils/runtime/argument.hpp> -#include <boost/test/utils/runtime/argument_factory.hpp> - -// Boost.Test -#include <boost/test/utils/class_properties.hpp> -#include <boost/test/utils/foreach.hpp> -#include <boost/test/utils/setcolor.hpp> - -// Boost -#include <boost/function.hpp> -#include <boost/algorithm/cxx11/all_of.hpp> - -// STL -#include <algorithm> - -#include <boost/test/detail/suppress_warnings.hpp> - -namespace boost { -namespace runtime { - -inline -std::ostream& commandline_pretty_print( - std::ostream& ostr, - std::string const& prefix, - std::string const& to_print) { - - const int split_at = 80; - - std::string::size_type current = 0; - - while(current < to_print.size()) { - - // discards spaces at the beginning - std::string::size_type startpos = to_print.find_first_not_of(" \t\n", current); - current += startpos - current; - - bool has_more_lines = (current + split_at) < to_print.size(); - - if(has_more_lines) { - std::string::size_type endpos = to_print.find_last_of(" \t\n", current + split_at); - std::string sub(to_print.substr(current, endpos - current)); - ostr << prefix << sub; - ostr << "\n"; - current += endpos - current; - } - else - { - ostr << prefix << to_print.substr(current, split_at); - current += split_at; - } - } - return ostr; -} - -// ************************************************************************** // -// ************** runtime::parameter_cla_id ************** // -// ************************************************************************** // -// set of attributes identifying the parameter in the command line - -struct parameter_cla_id { - parameter_cla_id( cstring prefix, cstring tag, cstring value_separator, bool negatable ) - : m_prefix( prefix.begin(), prefix.size() ) - , m_tag( tag.begin(), tag.size() ) - , m_value_separator( value_separator.begin(), value_separator.size() ) - , m_negatable( negatable ) - { - - BOOST_TEST_I_ASSRT( algorithm::all_of( m_prefix.begin(), m_prefix.end(), valid_prefix_char ), - invalid_cla_id() << "Parameter " << m_tag - << " has invalid characters in prefix." ); - - BOOST_TEST_I_ASSRT( algorithm::all_of( m_tag.begin(), m_tag.end(), valid_name_char ), - invalid_cla_id() << "Parameter " << m_tag - << " has invalid characters in name." ); - - BOOST_TEST_I_ASSRT( algorithm::all_of( m_value_separator.begin(), m_value_separator.end(), valid_separator_char ), - invalid_cla_id() << "Parameter " << m_tag - << " has invalid characters in value separator." ); - } - - static bool valid_prefix_char( char c ) - { - return c == '-' || c == '/' ; - } - static bool valid_separator_char( char c ) - { - return c == '=' || c == ':' || c == ' ' || c == '\0'; - } - static bool valid_name_char( char c ) - { - return std::isalnum( c ) || c == '+' || c == '_' || c == '?'; - } - - std::string m_prefix; - std::string m_tag; - std::string m_value_separator; - bool m_negatable; -}; - -typedef std::vector<parameter_cla_id> param_cla_ids; - -// ************************************************************************** // -// ************** runtime::basic_param ************** // -// ************************************************************************** // - -cstring const help_prefix("////"); - -class basic_param { - typedef function<void (cstring)> callback_type; - typedef unit_test::readwrite_property<bool> bool_property; - -protected: - /// Constructor with modifiers - template<typename Modifiers> - basic_param( cstring name, bool is_optional, bool is_repeatable, Modifiers const& m ) - : p_name( name.begin(), name.end() ) - , p_description( nfp::opt_get( m, description, std::string() ) ) - , p_help( nfp::opt_get( m, runtime::help, std::string() ) ) - , p_env_var( nfp::opt_get( m, env_var, std::string() ) ) - , p_value_hint( nfp::opt_get( m, value_hint, std::string() ) ) - , p_optional( is_optional ) - , p_repeatable( is_repeatable ) - , p_has_optional_value( m.has( optional_value ) ) - , p_has_default_value( m.has( default_value ) || is_repeatable ) - , p_callback( nfp::opt_get( m, callback, callback_type() ) ) - { - add_cla_id( help_prefix, name, ":" ); - } - -public: - virtual ~basic_param() {} - - // Pubic properties - std::string const p_name; - std::string const p_description; - std::string const p_help; - std::string const p_env_var; - std::string const p_value_hint; - bool const p_optional; - bool const p_repeatable; - bool_property p_has_optional_value; - bool_property p_has_default_value; - callback_type const p_callback; - - /// interface for cloning typed parameters - virtual basic_param_ptr clone() const = 0; - - /// Access methods - param_cla_ids const& cla_ids() const { return m_cla_ids; } - void add_cla_id( cstring prefix, cstring tag, cstring value_separator ) - { - add_cla_id_impl( prefix, tag, value_separator, false, true ); - } - - /// interface for producing argument values for this parameter - virtual void produce_argument( cstring token, bool negative_form, arguments_store& store ) const = 0; - virtual void produce_default( arguments_store& store ) const = 0; - - /// interfaces for help message reporting - virtual void usage( std::ostream& ostr, cstring negation_prefix_, bool use_color = true ) - { - namespace utils = unit_test::utils; - namespace ut_detail = unit_test::ut_detail; - - // - ostr << " "; - { - - BOOST_TEST_SCOPE_SETCOLOR( use_color, ostr, term_attr::BRIGHT, term_color::GREEN ); - ostr << p_name; - } - - ostr << '\n'; - - if( !p_description.empty() ) { - commandline_pretty_print(ostr, " ", p_description) << '\n'; - } - - BOOST_TEST_FOREACH( parameter_cla_id const&, id, cla_ids() ) { - if( id.m_prefix == help_prefix ) - continue; - - ostr << " " << id.m_prefix; - - if( id.m_negatable ) - cla_name_help( ostr, id.m_tag, negation_prefix_, use_color ); - else - cla_name_help( ostr, id.m_tag, "", use_color ); - - BOOST_TEST_SCOPE_SETCOLOR( use_color, ostr, term_attr::BRIGHT, term_color::YELLOW ); - bool optional_value_ = false; - - if( p_has_optional_value ) { - optional_value_ = true; - ostr << '['; - } - - - if( id.m_value_separator.empty() ) - ostr << ' '; - else { - ostr << id.m_value_separator; - } - - value_help( ostr ); - - if( optional_value_ ) - ostr << ']'; - - ostr << '\n'; - } - } - - virtual void help( std::ostream& ostr, cstring negation_prefix_, bool use_color = true ) - { - usage( ostr, negation_prefix_, use_color ); - - if( !p_help.empty() ) { - ostr << '\n'; - commandline_pretty_print(ostr, " ", p_help); - } - } - -protected: - void add_cla_id_impl( cstring prefix, - cstring tag, - cstring value_separator, - bool negatable, - bool validate_value_separator ) - { - BOOST_TEST_I_ASSRT( !tag.is_empty(), - invalid_cla_id() << "Parameter can't have an empty name." ); - - BOOST_TEST_I_ASSRT( !prefix.is_empty(), - invalid_cla_id() << "Parameter " << tag - << " can't have an empty prefix." ); - - BOOST_TEST_I_ASSRT( !value_separator.is_empty(), - invalid_cla_id() << "Parameter " << tag - << " can't have an empty value separator." ); - - // We trim value separator from all the spaces, so token end will indicate separator - value_separator.trim(); - BOOST_TEST_I_ASSRT( !validate_value_separator || !value_separator.is_empty() || !p_has_optional_value, - invalid_cla_id() << "Parameter " << tag - << " with optional value attribute can't use space as value separator." ); - - m_cla_ids.push_back( parameter_cla_id( prefix, tag, value_separator, negatable ) ); - } - -private: - /// interface for usage/help customization - virtual void cla_name_help( std::ostream& ostr, cstring cla_tag, cstring /*negation_prefix_*/, bool /*use_color*/ = true) const - { - ostr << cla_tag; - } - virtual void value_help( std::ostream& ostr ) const - { - if( p_value_hint.empty() ) - ostr << "<value>"; - else - ostr << p_value_hint; - } - - // Data members - param_cla_ids m_cla_ids; -}; - -// ************************************************************************** // -// ************** runtime::parameter ************** // -// ************************************************************************** // - -enum args_amount { - OPTIONAL_PARAM, // 0-1 - REQUIRED_PARAM, // exactly 1 - REPEATABLE_PARAM // 0-N -}; - -//____________________________________________________________________________// - -template<typename ValueType, args_amount a = runtime::OPTIONAL_PARAM, bool is_enum = false> -class parameter : public basic_param { -public: - /// Constructor with modifiers -#ifndef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS - template<typename Modifiers=nfp::no_params_type> - parameter( cstring name, Modifiers const& m = nfp::no_params ) -#else - template<typename Modifiers> - parameter( cstring name, Modifiers const& m ) -#endif - : basic_param( name, a != runtime::REQUIRED_PARAM, a == runtime::REPEATABLE_PARAM, m ) - , m_arg_factory( m ) - { - BOOST_TEST_I_ASSRT( !m.has( default_value ) || a == runtime::OPTIONAL_PARAM, - invalid_param_spec() << "Parameter " << name - << " is not optional and can't have default_value." ); - - BOOST_TEST_I_ASSRT( !m.has( optional_value ) || !this->p_repeatable, - invalid_param_spec() << "Parameter " << name - << " is repeatable and can't have optional_value." ); - } - -private: - virtual basic_param_ptr clone() const - { - return basic_param_ptr( new parameter( *this ) ); - } - virtual void produce_argument( cstring token, bool , arguments_store& store ) const - { - m_arg_factory.produce_argument( token, this->p_name, store ); - } - virtual void produce_default( arguments_store& store ) const - { - if( !this->p_has_default_value ) - return; - - m_arg_factory.produce_default( this->p_name, store ); - } - - // Data members - typedef argument_factory<ValueType, is_enum, a == runtime::REPEATABLE_PARAM> factory_t; - factory_t m_arg_factory; -}; - -//____________________________________________________________________________// - -class option : public basic_param { -public: - /// Constructor with modifiers -#ifndef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS - template<typename Modifiers=nfp::no_params_type> - option( cstring name, Modifiers const& m = nfp::no_params ) -#else - template<typename Modifiers> - option( cstring name, Modifiers const& m ) -#endif - : basic_param( name, true, false, nfp::opt_append( nfp::opt_append( m, optional_value = true), default_value = false) ) - , m_arg_factory( nfp::opt_append( nfp::opt_append( m, optional_value = true), default_value = false) ) - { - } - - void add_cla_id( cstring prefix, cstring tag, cstring value_separator, bool negatable = false ) - { - add_cla_id_impl( prefix, tag, value_separator, negatable, false ); - } - -private: - virtual basic_param_ptr clone() const - { - return basic_param_ptr( new option( *this ) ); - } - - virtual void produce_argument( cstring token, bool negative_form, arguments_store& store ) const - { - if( token.empty() ) - store.set( p_name, !negative_form ); - else { - BOOST_TEST_I_ASSRT( !negative_form, - format_error( p_name ) << "Can't set value to negative form of the argument." ); - - m_arg_factory.produce_argument( token, p_name, store ); - } - } - - virtual void produce_default( arguments_store& store ) const - { - m_arg_factory.produce_default( p_name, store ); - } - virtual void cla_name_help( std::ostream& ostr, cstring cla_tag, cstring negation_prefix_, bool use_color = true ) const - { - namespace utils = unit_test::utils; - namespace ut_detail = unit_test::ut_detail; - - if( !negation_prefix_.is_empty() ) { - BOOST_TEST_SCOPE_SETCOLOR( use_color, ostr, term_attr::BRIGHT, term_color::YELLOW ); - ostr << '[' << negation_prefix_ << ']'; - } - ostr << cla_tag; - } - virtual void value_help( std::ostream& ostr ) const - { - if( p_value_hint.empty() ) - ostr << "<boolean value>"; - else - ostr << p_value_hint; - } - - // Data members - typedef argument_factory<bool, false, false> factory_t; - factory_t m_arg_factory; -}; - -//____________________________________________________________________________// - -template<typename EnumType, args_amount a = runtime::OPTIONAL_PARAM> -class enum_parameter : public parameter<EnumType, a, true> { - typedef parameter<EnumType, a, true> base; -public: - /// Constructor with modifiers -#ifndef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS - template<typename Modifiers=nfp::no_params_type> - enum_parameter( cstring name, Modifiers const& m = nfp::no_params ) -#else - template<typename Modifiers> - enum_parameter( cstring name, Modifiers const& m ) -#endif - : base( name, m ) - { -#ifdef BOOST_TEST_CLA_NEW_API - auto const& values = m[enum_values<EnumType>::value]; - auto it = values.begin(); -#else - std::vector<std::pair<cstring, EnumType> > const& values = m[enum_values<EnumType>::value]; - typename std::vector<std::pair<cstring, EnumType> >::const_iterator it = values.begin(); -#endif - while( it != values.end() ) { - m_valid_names.push_back( it->first ); - ++it; - } - } - -private: - virtual basic_param_ptr clone() const - { - return basic_param_ptr( new enum_parameter( *this ) ); - } - - virtual void value_help( std::ostream& ostr ) const - { - if( this->p_value_hint.empty() ) { - ostr << "<"; - bool first = true; - BOOST_TEST_FOREACH( cstring, name, m_valid_names ) { - if( first ) - first = false; - else - ostr << '|'; - ostr << name; - } - ostr << ">"; - } - else - ostr << this->p_value_hint; - } - - // Data members - std::vector<cstring> m_valid_names; -}; - - -// ************************************************************************** // -// ************** runtime::parameters_store ************** // -// ************************************************************************** // - -class parameters_store { - struct lg_compare { - bool operator()( cstring lh, cstring rh ) const - { - return std::lexicographical_compare(lh.begin(), lh.end(), - rh.begin(), rh.end()); - } - }; -public: - - typedef std::map<cstring, basic_param_ptr, lg_compare> storage_type; - - /// Adds parameter into the persistent store - void add( basic_param const& in ) - { - basic_param_ptr p = in.clone(); - - BOOST_TEST_I_ASSRT( m_parameters.insert( std::make_pair( cstring(p->p_name), p ) ).second, - duplicate_param() << "Parameter " << p->p_name << " is duplicate." ); - } - - /// Returns true if there is no parameters registered - bool is_empty() const { return m_parameters.empty(); } - /// Returns map of all the registered parameter - storage_type const& all() const { return m_parameters; } - /// Returns true if parameter with psecified name is registered - bool has( cstring name ) const - { - return m_parameters.find( name ) != m_parameters.end(); - } - /// Returns map of all the registered parameter - basic_param_ptr get( cstring name ) const - { - storage_type::const_iterator const& found = m_parameters.find( name ); - BOOST_TEST_I_ASSRT( found != m_parameters.end(), - unknown_param() << "Parameter " << name << " is unknown." ); - - return found->second; - } - -private: - // Data members - storage_type m_parameters; -}; - -} // namespace runtime -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_RUNTIME_PARAMETER_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/setcolor.hpp b/src/third_party/boost-1.69.0/boost/test/utils/setcolor.hpp deleted file mode 100644 index 915c9962a39..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/setcolor.hpp +++ /dev/null @@ -1,318 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : contains definition for setcolor iostream manipulator -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_SETCOLOR_HPP -#define BOOST_TEST_UTILS_SETCOLOR_HPP - -// Boost.Test -#include <boost/test/detail/config.hpp> - -// STL -#include <iostream> -#include <cstdio> - -#include <boost/test/detail/suppress_warnings.hpp> - -#ifdef _WIN32 - #include <windows.h> - - #if defined(__MINGW32__) && !defined(COMMON_LVB_UNDERSCORE) - // mingw badly mimicking windows.h - #define COMMON_LVB_UNDERSCORE 0x8000 - #endif -#endif - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace utils { - -// ************************************************************************** // -// ************** term_attr ************** // -// ************************************************************************** // - -struct term_attr { enum _ { - NORMAL = 0, - BRIGHT = 1, - DIM = 2, - UNDERLINE = 4, - BLINK = 5, - REVERSE = 7, - CROSSOUT = 9 -}; }; - -// ************************************************************************** // -// ************** term_color ************** // -// ************************************************************************** // - -struct term_color { enum _ { - BLACK = 0, - RED = 1, - GREEN = 2, - YELLOW = 3, - BLUE = 4, - MAGENTA = 5, - CYAN = 6, - WHITE = 7, - ORIGINAL = 9 -}; }; - -// ************************************************************************** // -// ************** setcolor ************** // -// ************************************************************************** // - -#ifndef _WIN32 -class setcolor { -public: - // Constructor - explicit setcolor( bool is_color_output = false, - term_attr::_ attr = term_attr::NORMAL, - term_color::_ fg = term_color::ORIGINAL, - term_color::_ bg = term_color::ORIGINAL ) - : m_is_color_output(is_color_output) - { - m_command_size = std::sprintf( m_control_command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40 ); - } - - friend std::ostream& - operator<<( std::ostream& os, setcolor const& sc ) - { - if (sc.m_is_color_output && (&os == &std::cout || &os == &std::cerr)) { - return os.write( sc.m_control_command, sc.m_command_size ); - } - return os; - } - -private: - // Data members - bool m_is_color_output; - char m_control_command[13]; - int m_command_size; -}; - -#else - -class setcolor { - -protected: - void set_console_color(std::ostream& os, WORD *attributes = NULL) const { - if (!m_is_color_output) { - return; - } - DWORD console_type; - if (&os == &std::cout) { - console_type = STD_OUTPUT_HANDLE; - } - else if (&os == &std::cerr) { - console_type = STD_ERROR_HANDLE; - } - else { - return; - } - HANDLE hConsole = GetStdHandle(console_type); - - if(hConsole == INVALID_HANDLE_VALUE || hConsole == NULL ) - return; - - if(attributes != NULL) { - SetConsoleTextAttribute(hConsole, *attributes); - return; - } - - CONSOLE_SCREEN_BUFFER_INFO consoleInfo; - GetConsoleScreenBufferInfo(hConsole, &consoleInfo); - saved_attributes = consoleInfo.wAttributes; - - WORD fg_attr = 0; - switch(m_fg) - { - case term_color::WHITE: - fg_attr = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; - break; - case term_color::BLACK: - fg_attr = 0; - break; - case term_color::RED: - fg_attr = FOREGROUND_RED; - break; - case term_color::GREEN: - fg_attr = FOREGROUND_GREEN; - break; - case term_color::CYAN: - fg_attr = FOREGROUND_GREEN | FOREGROUND_BLUE; - break; - case term_color::MAGENTA: - fg_attr = FOREGROUND_RED | FOREGROUND_BLUE; - break; - case term_color::BLUE: - fg_attr = FOREGROUND_BLUE; - break; - case term_color::YELLOW: - fg_attr = FOREGROUND_RED | FOREGROUND_GREEN; - break; - case term_color::ORIGINAL: - default: - fg_attr = saved_attributes & (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); - break; - } - - WORD bg_attr = 0; - switch(m_bg) - { - case term_color::BLACK: - bg_attr = 0; - break; - case term_color::WHITE: - bg_attr = BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE; - break; - case term_color::RED: - bg_attr = BACKGROUND_RED; - break; - case term_color::GREEN: - bg_attr = BACKGROUND_GREEN; - break; - case term_color::BLUE: - bg_attr = BACKGROUND_BLUE; - break; - case term_color::ORIGINAL: - default: - bg_attr = saved_attributes & (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE); - break; - } - - WORD text_attr = 0; - switch(m_attr) - { - case term_attr::BRIGHT: - text_attr = FOREGROUND_INTENSITY; - break; - case term_attr::UNDERLINE: - text_attr = COMMON_LVB_UNDERSCORE; - break; - default: - break; - } - - SetConsoleTextAttribute(hConsole, fg_attr | bg_attr | text_attr); - return; - } - -public: - // Constructor - explicit setcolor( - bool is_color_output = false, - term_attr::_ attr = term_attr::NORMAL, - term_color::_ fg = term_color::ORIGINAL, - term_color::_ bg = term_color::ORIGINAL ) - : m_is_color_output(is_color_output) - , m_attr(attr) - , m_fg(fg) - , m_bg(bg) - {} - - friend std::ostream& - operator<<( std::ostream& os, setcolor const& sc ) - { - sc.set_console_color(os); - return os; - } - -private: - bool m_is_color_output; - term_attr::_ m_attr; - term_color::_ m_fg; - term_color::_ m_bg; - -protected: - // Data members - mutable WORD saved_attributes; -}; - -#endif -// ************************************************************************** // -// ************** scope_setcolor ************** // -// ************************************************************************** // - -#ifndef _WIN32 - -struct scope_setcolor { - scope_setcolor() : m_os( 0 ) {} - explicit scope_setcolor( bool is_color_output, - std::ostream& os, - term_attr::_ attr = term_attr::NORMAL, - term_color::_ fg = term_color::ORIGINAL, - term_color::_ bg = term_color::ORIGINAL ) - : m_os( &os ) - , m_is_color_output( is_color_output ) - { - os << setcolor( is_color_output, attr, fg, bg ); - } - ~scope_setcolor() - { - if( m_os ) - *m_os << setcolor( m_is_color_output ); - } -private: - scope_setcolor(const scope_setcolor& r); - scope_setcolor& operator=(const scope_setcolor& r); - // Data members - std::ostream* m_os; - bool m_is_color_output; -}; - -#else - -struct scope_setcolor : setcolor { - scope_setcolor() : m_os( 0 ) {} - explicit scope_setcolor( - bool is_color_output, - std::ostream& os, - term_attr::_ attr = term_attr::NORMAL, - term_color::_ fg = term_color::ORIGINAL, - term_color::_ bg = term_color::ORIGINAL ) - : setcolor(is_color_output, attr, fg, bg) - , m_os( &os ) - { - os << *this; - } - - ~scope_setcolor() - { - if (m_os) { - set_console_color(*m_os, &this->saved_attributes); - } - } -private: - scope_setcolor(const scope_setcolor& r); - scope_setcolor& operator=(const scope_setcolor& r); - // Data members - std::ostream* m_os; -}; - - -#endif - -#define BOOST_TEST_SCOPE_SETCOLOR( is_color_output, os, attr, color ) \ - utils::scope_setcolor const sc(is_color_output, os, utils::attr, utils::color); \ - ut_detail::ignore_unused_variable_warning( sc ) \ -/**/ - -} // namespace utils -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_SETCOLOR_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/string_cast.hpp b/src/third_party/boost-1.69.0/boost/test/utils/string_cast.hpp deleted file mode 100644 index 3c069a84034..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/string_cast.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : trivial utility to cast to/from strings -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_STRING_CAST_HPP -#define BOOST_TEST_UTILS_STRING_CAST_HPP - -// Boost.Test -#include <boost/test/utils/basic_cstring/basic_cstring.hpp> - -// STL -#include <sstream> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace utils { - -// ************************************************************************** // -// ************** string_cast ************** // -// ************************************************************************** // - -template<typename T> -inline std::string -string_cast( T const& t ) -{ - std::ostringstream buff; - buff << t; - return buff.str(); -} - -//____________________________________________________________________________// - -// ************************************************************************** // -// ************** string_as ************** // -// ************************************************************************** // - -template<typename T> -inline bool -string_as( const_string str, T& res ) -{ - std::istringstream buff( std::string( str.begin(), str.end() ) ); - buff >> res; - - return !buff.fail() && buff.eof(); -} - -//____________________________________________________________________________// - -} // namespace utils -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_STRING_CAST_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/wrap_stringstream.hpp b/src/third_party/boost-1.69.0/boost/test/utils/wrap_stringstream.hpp deleted file mode 100644 index 425d7ed75bf..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/wrap_stringstream.hpp +++ /dev/null @@ -1,162 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : wraps strstream and stringstream (depends with one is present) -// to provide the unified interface -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_WRAP_STRINGSTREAM_HPP -#define BOOST_TEST_UTILS_WRAP_STRINGSTREAM_HPP - -// Boost.Test -#include <boost/test/detail/config.hpp> - -// STL -#ifdef BOOST_NO_STRINGSTREAM -#include <strstream> // for std::ostrstream -#else -#include <sstream> // for std::ostringstream -#endif // BOOST_NO_STRINGSTREAM - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { - -// ************************************************************************** // -// ************** basic_wrap_stringstream ************** // -// ************************************************************************** // - -template<typename CharT> -class basic_wrap_stringstream { -public: -#if defined(BOOST_CLASSIC_IOSTREAMS) - typedef std::ostringstream wrapped_stream; -#elif defined(BOOST_NO_STRINGSTREAM) - typedef std::basic_ostrstream<CharT> wrapped_stream; -#else - typedef std::basic_ostringstream<CharT> wrapped_stream; -#endif // BOOST_NO_STRINGSTREAM - // Access methods - basic_wrap_stringstream& ref(); - wrapped_stream& stream(); - std::basic_string<CharT> const& str(); - -private: - // Data members - wrapped_stream m_stream; - std::basic_string<CharT> m_str; -}; - -//____________________________________________________________________________// - -template <typename CharT, typename T> -inline basic_wrap_stringstream<CharT>& -operator<<( basic_wrap_stringstream<CharT>& targ, T const& t ) -{ - targ.stream() << t; - return targ; -} - -//____________________________________________________________________________// - -template <typename CharT> -inline typename basic_wrap_stringstream<CharT>::wrapped_stream& -basic_wrap_stringstream<CharT>::stream() -{ - return m_stream; -} - -//____________________________________________________________________________// - -template <typename CharT> -inline basic_wrap_stringstream<CharT>& -basic_wrap_stringstream<CharT>::ref() -{ - return *this; -} - -//____________________________________________________________________________// - -template <typename CharT> -inline std::basic_string<CharT> const& -basic_wrap_stringstream<CharT>::str() -{ - -#ifdef BOOST_NO_STRINGSTREAM - m_str.assign( m_stream.str(), m_stream.pcount() ); - m_stream.freeze( false ); -#else - m_str = m_stream.str(); -#endif - - return m_str; -} - -//____________________________________________________________________________// - -template <typename CharT> -inline basic_wrap_stringstream<CharT>& -operator<<( basic_wrap_stringstream<CharT>& targ, basic_wrap_stringstream<CharT>& src ) -{ - targ << src.str(); - return targ; -} - -//____________________________________________________________________________// - -#if BOOST_TEST_USE_STD_LOCALE - -template <typename CharT> -inline basic_wrap_stringstream<CharT>& -operator<<( basic_wrap_stringstream<CharT>& targ, std::ios_base& (BOOST_TEST_CALL_DECL *man)(std::ios_base&) ) -{ - targ.stream() << man; - return targ; -} - -//____________________________________________________________________________// - -template<typename CharT,typename Elem,typename Tr> -inline basic_wrap_stringstream<CharT>& -operator<<( basic_wrap_stringstream<CharT>& targ, std::basic_ostream<Elem,Tr>& (BOOST_TEST_CALL_DECL *man)(std::basic_ostream<Elem, Tr>&) ) -{ - targ.stream() << man; - return targ; -} - -//____________________________________________________________________________// - -template<typename CharT,typename Elem,typename Tr> -inline basic_wrap_stringstream<CharT>& -operator<<( basic_wrap_stringstream<CharT>& targ, std::basic_ios<Elem, Tr>& (BOOST_TEST_CALL_DECL *man)(std::basic_ios<Elem, Tr>&) ) -{ - targ.stream() << man; - return targ; -} - -//____________________________________________________________________________// - -#endif - -// ************************************************************************** // -// ************** wrap_stringstream ************** // -// ************************************************************************** // - -typedef basic_wrap_stringstream<char> wrap_stringstream; -typedef basic_wrap_stringstream<wchar_t> wrap_wstringstream; - -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_WRAP_STRINGSTREAM_HPP diff --git a/src/third_party/boost-1.69.0/boost/test/utils/xml_printer.hpp b/src/third_party/boost-1.69.0/boost/test/utils/xml_printer.hpp deleted file mode 100644 index 7892f9c4ce4..00000000000 --- a/src/third_party/boost-1.69.0/boost/test/utils/xml_printer.hpp +++ /dev/null @@ -1,145 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : common code used by any agent serving as OF_XML printer -// *************************************************************************** - -#ifndef BOOST_TEST_UTILS_XML_PRINTER_HPP -#define BOOST_TEST_UTILS_XML_PRINTER_HPP - -// Boost.Test -#include <boost/test/detail/global_typedef.hpp> -#include <boost/test/utils/basic_cstring/basic_cstring.hpp> -#include <boost/test/utils/custom_manip.hpp> -#include <boost/test/utils/foreach.hpp> -#include <boost/test/utils/basic_cstring/io.hpp> - -// Boost -#include <boost/config.hpp> - -// STL -#include <iostream> -#include <map> - -#include <boost/test/detail/suppress_warnings.hpp> - -//____________________________________________________________________________// - -namespace boost { -namespace unit_test { -namespace utils { - -// ************************************************************************** // -// ************** xml print helpers ************** // -// ************************************************************************** // - -inline void -print_escaped( std::ostream& where_to, const_string value ) -{ -#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) && !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) - static std::map<char,char const*> const char_type{{ - {'<' , "lt"}, - {'>' , "gt"}, - {'&' , "amp"}, - {'\'', "apos"}, - {'"' , "quot"} - }}; -#else - static std::map<char,char const*> char_type; - - if( char_type.empty() ) { - char_type['<'] = "lt"; - char_type['>'] = "gt"; - char_type['&'] = "amp"; - char_type['\'']= "apos"; - char_type['"'] = "quot"; - } -#endif - - BOOST_TEST_FOREACH( char, c, value ) { - std::map<char,char const*>::const_iterator found_ref = char_type.find( c ); - - if( found_ref != char_type.end() ) - where_to << '&' << found_ref->second << ';'; - else - where_to << c; - } -} - -//____________________________________________________________________________// - -inline void -print_escaped( std::ostream& where_to, std::string const& value ) -{ - print_escaped( where_to, const_string( value ) ); -} - -//____________________________________________________________________________// - -template<typename T> -inline void -print_escaped( std::ostream& where_to, T const& value ) -{ - where_to << value; -} - -//____________________________________________________________________________// - -inline void -print_escaped_cdata( std::ostream& where_to, const_string value ) -{ - static const_string cdata_end( "]]>" ); - - const_string::size_type pos = value.find( cdata_end ); - if( pos == const_string::npos ) - where_to << value; - else { - where_to << value.substr( 0, pos+2 ) << cdata_end - << BOOST_TEST_L( "<![CDATA[" ) << value.substr( pos+2 ); - } -} - -//____________________________________________________________________________// - -typedef custom_manip<struct attr_value_t> attr_value; - -template<typename T> -inline std::ostream& -operator<<( custom_printer<attr_value> const& p, T const& value ) -{ - *p << "=\""; - print_escaped( *p, value ); - *p << '"'; - - return *p; -} - -//____________________________________________________________________________// - -typedef custom_manip<struct cdata_t> cdata; - -inline std::ostream& -operator<<( custom_printer<cdata> const& p, const_string value ) -{ - *p << BOOST_TEST_L( "<![CDATA[" ); - print_escaped_cdata( *p, value ); - return *p << BOOST_TEST_L( "]]>" ); -} - -//____________________________________________________________________________// - -} // namespace utils -} // namespace unit_test -} // namespace boost - -#include <boost/test/detail/enable_warnings.hpp> - -#endif // BOOST_TEST_UTILS_XML_PRINTER_HPP |